Christian Heimke commited on 2011-07-15 09:16:52
Showing 11 changed files, with 117 additions and 39 deletions.
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
/* BlinkenLightsInteractiveMovieProgram |
2 |
- * version 0.5 date 2004-11-19 |
|
3 |
- * Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+ * version 0.6 date 2005-03-10 |
|
3 |
+ * Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
4 | 4 |
* Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
5 | 5 |
* a blinkenarea.org project |
6 | 6 |
* powered by eventphone.de |
... | ... |
@@ -39,11 +39,13 @@ public class Blimp extends JApplet |
39 | 39 |
JMenu menuFile, menuInfo, menuEdit, menuPlay, menuHelp; //menus |
40 | 40 |
JMenuItem menuFileNew, menuFileLoad, menuFileSave, menuFileSaveAs, menuFileQuit; |
41 | 41 |
JMenuItem menuInfoShow, menuInfoAdd, menuInfoDelete; |
42 |
- JMenuItem menuEditResize, menuEditScale, menuEditInsertFrame, menuEditDuplicateFrame, menuEditDeleteFrame; |
|
42 |
+ JMenuItem menuEditResize, menuEditScale; |
|
43 |
+ JMenuItem menuEditInsertFrame, menuEditDuplicateFrame, menuEditDeleteFrame; |
|
44 |
+ JMenuItem menuEditImportFrame; |
|
43 | 45 |
JMenuItem menuPlayStart, menuPlayStop; |
44 | 46 |
JCheckBoxMenuItem menuPlayBegin, menuPlayLoop; |
45 | 47 |
JMenuItem menuHelpAbout; |
46 |
- JPanel panel, panelStatus, panelMain, panelFrames, panelOuterFrame; //panels of in window |
|
48 |
+ JPanel panel, panelStatus, panelMain, panelFrames, panelOuterFrame; //panels of main window |
|
47 | 49 |
JPanel panelMiddleFrame, panelFrame, panelDuration, panelColors; |
48 | 50 |
JLabel labelStatus, labelFrames, labelFrameInfo, labelDuration; |
49 | 51 |
JScrollBar scrollFrames; |
... | ... |
@@ -143,7 +145,7 @@ public class Blimp extends JApplet |
143 | 145 |
labelStatus.setText( "new movie..." ); |
144 | 146 |
curFile = null; |
145 | 147 |
curMovie = new BlinkenMovie( defHeight, defWidth, defChannels, defMaxval ); |
146 |
- curMovie.insertInfo( 0, "creator", "Blimp (version 0.5 date 2004-11-19)" ); |
|
148 |
+ curMovie.insertInfo( 0, "creator", "Blimp (version 0.6 date 2005-03-10)" ); |
|
147 | 149 |
curMovie.insertFrame( 0, new BlinkenFrame( defHeight, defWidth, defChannels, defMaxval, defDuration ) ); |
148 | 150 |
curMovieChanged = false; |
149 | 151 |
|
... | ... |
@@ -252,8 +254,6 @@ public class Blimp extends JApplet |
252 | 254 |
//"File Quit" was chosen from menu |
253 | 255 |
private void actionFileQuit( ) |
254 | 256 |
{ |
255 |
- JFileChooser fileChooser; |
|
256 |
- |
|
257 | 257 |
//ask if to save changes |
258 | 258 |
if( askSaveChanges( ) ) //returns true on cancel |
259 | 259 |
return; |
... | ... |
@@ -533,6 +533,74 @@ public class Blimp extends JApplet |
533 | 533 |
updateFrames( frameNo ); |
534 | 534 |
} |
535 | 535 |
|
536 |
+ //"Edit Import Frame..." was chosen from menu |
|
537 |
+ private void actionEditImportFrame( ) |
|
538 |
+ { |
|
539 |
+ JFileChooser fileChooser; |
|
540 |
+ ImageIcon icon; |
|
541 |
+ Image image; |
|
542 |
+ BufferedImage bufferedImage; |
|
543 |
+ BlinkenFrame frame; |
|
544 |
+ int width, height, x, y, frameCnt, frameNo; |
|
545 |
+ |
|
546 |
+ //show file select dialog |
|
547 |
+ fileChooser = new JFileChooser( ); |
|
548 |
+ fileChooser.setDialogTitle( "Blimp - Import Frame..." ); |
|
549 |
+ if( curDir != null ) |
|
550 |
+ fileChooser.setCurrentDirectory( curDir ); |
|
551 |
+ if( fileChooser.showOpenDialog( dialogParent ) != JFileChooser.APPROVE_OPTION ) //not successful |
|
552 |
+ return; |
|
553 |
+ //save current directory |
|
554 |
+ curDir = fileChooser.getCurrentDirectory( ); |
|
555 |
+ |
|
556 |
+ //load image |
|
557 |
+ icon = new ImageIcon( fileChooser.getSelectedFile( ).getPath( ) ); |
|
558 |
+ if( icon == null ) |
|
559 |
+ { |
|
560 |
+ labelStatus.setText( "could not import frame from \"" + fileChooser.getSelectedFile( ).getPath( ) + "\"..." ); |
|
561 |
+ return; |
|
562 |
+ } |
|
563 |
+ width = icon.getIconWidth( ); |
|
564 |
+ height = icon.getIconHeight( ); |
|
565 |
+ image = icon.getImage( ); |
|
566 |
+ if( width <= 0 || height <= 0 || image == null ) |
|
567 |
+ { |
|
568 |
+ labelStatus.setText( "could not import frame from \"" + fileChooser.getSelectedFile( ).getPath( ) + "\"..." ); |
|
569 |
+ return; |
|
570 |
+ } |
|
571 |
+ //convert image to a buffered one |
|
572 |
+ bufferedImage = new BufferedImage( width, height, BufferedImage.TYPE_INT_ARGB ); |
|
573 |
+ bufferedImage.getGraphics( ).drawImage( image, 0, 0, width, height, null ); |
|
574 |
+ |
|
575 |
+ //create new empty frame |
|
576 |
+ frame = new BlinkenFrame( height, width, |
|
577 |
+ curMovie.getChannels( ), curMovie.getMaxval( ), defDuration ); |
|
578 |
+ height = frame.getHeight( ); //dimensions might have been invalid and thus been adapted |
|
579 |
+ width = frame.getWidth( ); |
|
580 |
+ frame.clear( ); |
|
581 |
+ |
|
582 |
+ //put pixels of image into frame |
|
583 |
+ for( y = 0; y < height; y++ ) |
|
584 |
+ for( x = 0; x < width; x++ ) |
|
585 |
+ frame.setColor( y, x, new Color( bufferedImage.getRGB( x, y ) ) ); |
|
586 |
+ |
|
587 |
+ //insert frame behind current position |
|
588 |
+ frameCnt = curMovie.getFrameCnt( ); |
|
589 |
+ frameNo = scrollFrames.getValue( ) + 1; |
|
590 |
+ if( frameNo < 0 ) |
|
591 |
+ frameNo = 0; |
|
592 |
+ if( frameNo > frameCnt ) |
|
593 |
+ frameNo = frameCnt; |
|
594 |
+ curMovie.insertFrame( frameNo, frame ); //this resizes the frame to fit the movie dimensions |
|
595 |
+ curMovieChanged = true; |
|
596 |
+ |
|
597 |
+ //show status message |
|
598 |
+ labelStatus.setText( "frame was sucessfully imported from \"" + fileChooser.getSelectedFile( ).getPath( ) + "\"..." ); |
|
599 |
+ |
|
600 |
+ //update controls |
|
601 |
+ updateFrames( frameNo ); |
|
602 |
+ } |
|
603 |
+ |
|
536 | 604 |
//"Play Start" was chosen from menu |
537 | 605 |
private void actionPlayStart( ) |
538 | 606 |
{ |
... | ... |
@@ -613,8 +681,8 @@ public class Blimp extends JApplet |
613 | 681 |
{ |
614 | 682 |
JOptionPane.showMessageDialog( dialogParent, |
615 | 683 |
"BlinkenLightsInteractiveMovieProgram\n" + |
616 |
- "version 0.5 date 2004-11-19\n" + |
|
617 |
- "Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info>\n" + |
|
684 |
+ "version 0.6 date 2005-03-10\n" + |
|
685 |
+ "Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info>\n" + |
|
618 | 686 |
"Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html\n" + |
619 | 687 |
"a blinkenarea.org project\n" + |
620 | 688 |
"powered by eventphone.de", |
... | ... |
@@ -1069,6 +1137,8 @@ public class Blimp extends JApplet |
1069 | 1137 |
actionEditDuplicateFrame( ); |
1070 | 1138 |
else if( e.getSource( ) == menuEditDeleteFrame ) |
1071 | 1139 |
actionEditDeleteFrame( ); |
1140 |
+ else if( e.getSource( ) == menuEditImportFrame ) |
|
1141 |
+ actionEditImportFrame( ); |
|
1072 | 1142 |
else if( e.getSource( ) == menuPlayStart ) |
1073 | 1143 |
actionPlayStart( ); |
1074 | 1144 |
else if( e.getSource( ) == menuPlayStop ) |
... | ... |
@@ -1247,7 +1317,7 @@ public class Blimp extends JApplet |
1247 | 1317 |
//initialize current movie, frame |
1248 | 1318 |
curDir = new File( "." ); |
1249 | 1319 |
curMovie = new BlinkenMovie( defHeight, defWidth, defChannels, defMaxval ); |
1250 |
- curMovie.insertInfo( 0, "creator", "Blimp (version 0.5 date 2004-11-19)" ); |
|
1320 |
+ curMovie.insertInfo( 0, "creator", "Blimp (version 0.6 date 2005-03-10)" ); |
|
1251 | 1321 |
curMovie.insertFrame( 0, new BlinkenFrame( defHeight, defWidth, defChannels, defMaxval, defDuration ) ); |
1252 | 1322 |
curFrame = null; |
1253 | 1323 |
|
... | ... |
@@ -1338,6 +1408,10 @@ public class Blimp extends JApplet |
1338 | 1408 |
menuEditDeleteFrame.setEnabled( false ); |
1339 | 1409 |
menuEditDeleteFrame.addActionListener( this ); |
1340 | 1410 |
menuEdit.add( menuEditDeleteFrame ); |
1411 |
+ menuEdit.addSeparator( ); |
|
1412 |
+ menuEditImportFrame = new JMenuItem( "Import Frame..." ); |
|
1413 |
+ menuEditImportFrame.addActionListener( this ); |
|
1414 |
+ menuEdit.add( menuEditImportFrame ); |
|
1341 | 1415 |
//play menu |
1342 | 1416 |
menuPlay = new JMenu( "Play" ); |
1343 | 1417 |
menubar.add( menuPlay ); |
... | ... |
@@ -1709,8 +1783,8 @@ public class Blimp extends JApplet |
1709 | 1783 |
|
1710 | 1784 |
//running as command line tool |
1711 | 1785 |
System.out.println( "BlinkenLightsInteractiveMovieProgram\n" + |
1712 |
- "version 0.5 date 2004-11-19\n" + |
|
1713 |
- "Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info>\n" + |
|
1786 |
+ "version 0.6 date 2005-03-10\n" + |
|
1787 |
+ "Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info>\n" + |
|
1714 | 1788 |
"Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html\n" + |
1715 | 1789 |
"a blinkenarea.org project\n" + |
1716 | 1790 |
"powered by eventphone.de\n" ); |
... | ... |
@@ -1721,7 +1795,7 @@ public class Blimp extends JApplet |
1721 | 1795 |
|
1722 | 1796 |
//get initial movie |
1723 | 1797 |
movie = new BlinkenMovie( defHeight, defWidth, defChannels, defMaxval ); |
1724 |
- movie.insertInfo( 0, "creator", "Blimp (version 0.5 date 2004-11-19)" ); |
|
1798 |
+ movie.insertInfo( 0, "creator", "Blimp (version 0.6 date 2005-03-10)" ); |
|
1725 | 1799 |
movie.insertFrame( 0, new BlinkenFrame( defHeight, defWidth, defChannels, defMaxval, defDuration ) ); |
1726 | 1800 |
|
1727 | 1801 |
//process parameters |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
/* BlinkenLightsInteractiveMovieProgram |
2 |
- * version 0.5 date 2004-11-19 |
|
3 |
- * Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+ * version 0.6 date 2005-03-10 |
|
3 |
+ * Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
4 | 4 |
* Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
5 | 5 |
* a blinkenarea.org project |
6 | 6 |
* powered by eventphone.de |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
/* BlinkenLightsInteractiveMovieProgram |
2 |
- * version 0.5 date 2004-11-19 |
|
3 |
- * Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+ * version 0.6 date 2005-03-10 |
|
3 |
+ * Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
4 | 4 |
* Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
5 | 5 |
* a blinkenarea.org project |
6 | 6 |
* powered by eventphone.de |
... | ... |
@@ -353,7 +353,7 @@ public class BlinkenFrame |
353 | 353 |
{ |
354 | 354 |
val = 0; |
355 | 355 |
for( val = 0, c = 0; c < channels; c++ ) |
356 |
- val += (data[h][w][c] & 0xFF); |
|
356 |
+ val += ((int)data[h][w][c] & 0xFF); |
|
357 | 357 |
val = val * 7 / maxval / channels; |
358 | 358 |
str = str + " -+*%#&@".substring( val, val + 1); |
359 | 359 |
} |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
/* BlinkenLightsInteractiveMovieProgram |
2 |
- * version 0.5 date 2004-11-19 |
|
3 |
- * Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+ * version 0.6 date 2005-03-10 |
|
3 |
+ * Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
4 | 4 |
* Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
5 | 5 |
* a blinkenarea.org project |
6 | 6 |
* powered by eventphone.de |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
/* BlinkenLightsInteractiveMovieProgram |
2 |
- * version 0.5 date 2004-11-19 |
|
3 |
- * Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+ * version 0.6 date 2005-03-10 |
|
3 |
+ * Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
4 | 4 |
* Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
5 | 5 |
* a blinkenarea.org project |
6 | 6 |
* powered by eventphone.de |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
/* BlinkenLightsInteractiveMovieProgram |
2 |
- * version 0.5 date 2004-11-19 |
|
3 |
- * Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+ * version 0.6 date 2005-03-10 |
|
3 |
+ * Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
4 | 4 |
* Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
5 | 5 |
* a blinkenarea.org project |
6 | 6 |
* powered by eventphone.de |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
/* BlinkenLightsInteractiveMovieProgram |
2 |
- * version 0.5 date 2004-11-19 |
|
3 |
- * Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+ * version 0.6 date 2005-03-10 |
|
3 |
+ * Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
4 | 4 |
* Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
5 | 5 |
* a blinkenarea.org project |
6 | 6 |
* powered by eventphone.de |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
/* BlinkenLightsInteractiveMovieProgram |
2 |
- * version 0.5 date 2004-11-19 |
|
3 |
- * Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+ * version 0.6 date 2005-03-10 |
|
3 |
+ * Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
4 | 4 |
* Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
5 | 5 |
* a blinkenarea.org project |
6 | 6 |
* powered by eventphone.de |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
/* BlinkenLightsInteractiveMovieProgram |
2 |
- * version 0.5 date 2004-11-19 |
|
3 |
- * Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+ * version 0.6 date 2005-03-10 |
|
3 |
+ * Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
4 | 4 |
* Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
5 | 5 |
* a blinkenarea.org project |
6 | 6 |
* powered by eventphone.de |
... | ... |
@@ -573,9 +573,9 @@ public class BlinkenMovie |
573 | 573 |
//get attributes |
574 | 574 |
width = 0; |
575 | 575 |
height = 0; |
576 |
- channels = 0; |
|
577 |
- bits = 0; |
|
578 |
- maxval = 0; |
|
576 |
+ channels = 1; |
|
577 |
+ bits = 4; |
|
578 |
+ maxval = 15; |
|
579 | 579 |
if( (submatcher = blmHeight.matcher( matcher.group( 1 ) )).find( ) ) //height |
580 | 580 |
height = Integer.parseInt( submatcher.group( 1 ) ); |
581 | 581 |
if( (submatcher = blmWidth.matcher( matcher.group( 1 ) )).find( ) ) //width |
... | ... |
@@ -783,7 +783,7 @@ public class BlinkenMovie |
783 | 783 |
subHeaderSize = ((int)subHeader[4] & 0xFF) << 8 | ((int)subHeader[5] & 0xFF); |
784 | 784 |
|
785 | 785 |
//header fits into gap to frame start |
786 |
- if( file.getFilePointer( ) + subHeaderSize - 6 <= headerFramePtr ) |
|
786 |
+ if( subHeaderSize >= 6 && file.getFilePointer( ) + subHeaderSize - 6 <= headerFramePtr ) |
|
787 | 787 |
{ |
788 | 788 |
//info header |
789 | 789 |
if( subHeaderMagic == 0x696E666F ) //'i' 'n' 'f' 'o' |
... | ... |
@@ -1,9 +1,15 @@ |
1 | 1 |
BlinkenLightsInteractiveMovieProgram |
2 |
-Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
3 | 3 |
Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
4 | 4 |
a blinkenarea.org project |
5 | 5 |
powered by eventphone.de |
6 | 6 |
|
7 |
+version 0.6 date 2005-03-10 |
|
8 |
+--------------------------- |
|
9 |
+ - fixed a bug with corrupt bbm files (sub header size < 6) |
|
10 |
+ - loading *.bml: channels="1", bits="4" is now default |
|
11 |
+ - added importing frames from image files |
|
12 |
+ |
|
7 | 13 |
version 0.5 date 2004-11-19 |
8 | 14 |
--------------------------- |
9 | 15 |
- fixed a bug in channels 3..inf when drawing with alpha < 255 |
... | ... |
@@ -1,6 +1,6 @@ |
1 | 1 |
# BlinkenLightsInteractiveMovieProgram |
2 |
-# version 0.5 date 2004-11-19 |
|
3 |
-# Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info> |
|
2 |
+# version 0.6 date 2005-03-10 |
|
3 |
+# Copyright (C) 2004-2005: Stefan Schuermans <1stein@schuermans.info> |
|
4 | 4 |
# Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html |
5 | 5 |
# a blinkenarea.org project |
6 | 6 |
# powered by eventphone.de |
... | ... |
@@ -11,8 +11,6 @@ KEYTOOL=keytool |
11 | 11 |
JARSIGNER=jarsigner |
12 | 12 |
KEYPASS=BlinkenLightsInteractiveMovieProgram |
13 | 13 |
JAVA=java |
14 |
-UPLOAD_CMD=scp -r |
|
15 |
-UPLOAD_DEST=gate:~/www/html/Blimp/ |
|
16 | 14 |
|
17 | 15 |
CLASS_FILES=BlinkenFileFilter.class BlinkenFrame.class BlinkenFrameDisplay.class \ |
18 | 16 |
BlinkenFrameDisplayListener.class BlinkenFrameDisplayInterceptor.class \ |
19 | 17 |