73c0fd8e7fad1411042cad1ebe21a8b77922bbae
Christian Heimke Blimp v.0.2 (2004-11-10)

Christian Heimke authored 13 years ago

1) /* BlinkenLightsInteractiveMovieProgram
Christian Heimke Blimp v.0.3 (2004-11-12)

Christian Heimke authored 13 years ago

2)  * version 0.3 date 2004-11-12
Christian Heimke Blimp v.0.2 (2004-11-10)

Christian Heimke authored 13 years ago

3)  * Copyright (C) 2004: Stefan Schuermans <1stein@schuermans.info>
4)  * Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
5)  * a blinkenarea.org project
6)  * powered by eventphone.de
7)  */
8) 
9) import java.util.*;
10) import java.util.regex.*;
11) import java.io.*;
12) 
13) public class BlinkenMovie
14) {
15) 
16)   private int height;
17)   private int width;
18)   private int channels;
19)   private int maxval;
20)   private int infoCnt;
21)   private String[][] infos;
22)   private int frameCnt;
23)   private BlinkenFrame[] frames;
24) 
25)   BlinkenMovie( int height, int width, int channels, int maxval )
26)   {
27)     if( height < 1 ) height = 1;
28)     if( height > 1024 ) height = 1024;
29)     if( width < 1 ) width = 1;
30)     if( width > 1024 ) width = 1024;
31)     if( channels < 1 ) channels = 1;
32)     if( channels > 16 ) channels = 16;
33)     if( maxval < 1 ) maxval = 1;
34)     if( maxval > 255 ) maxval = 255;
35) 
36)     this.height = height;
37)     this.width = width;
38)     this.channels = channels;
39)     this.maxval = maxval;
40)     infoCnt = 0;
41)     infos = new String[0][2];
42)     frameCnt = 0;
43)     frames = new BlinkenFrame[0];
44)   }
45) 
46)   BlinkenMovie( BlinkenMovie movie )
47)   {
48)     int i;
49) 
50)     height = movie.height;
51)     width = movie.width;
52)     channels = movie.channels;
53)     maxval = movie.maxval;
54)     infoCnt = 0;
55)     infos = new String[0][2];
56)     frameCnt = 0;
57)     frames = new BlinkenFrame[0];
58) 
59)     for( i = 0; i < movie.infoCnt; i++ )
60)       appendInfo( new String( movie.infos[i][0] ), new String( movie.infos[i][1] ) );
61) 
62)     for( i = 0; i < movie.frameCnt; i++ )
63)       appendFrame( new BlinkenFrame( movie.frames[i] ) );
64)   }
65) 
66)   public int getHeight( )
67)   {
68)     return height;
69)   }
70) 
71)   public int getWidth( )
72)   {
73)     return width;
74)   }
75) 
76)   public int getChannels( )
77)   {
78)     return channels;
79)   }
80) 
81)   public int getMaxval( )
82)   {
83)     return maxval;
84)   }
85) 
86)   public int getDuration( )
87)   {
88)     int duration, i;
89)     duration = 0;
90)     for( i = 0; i < frameCnt; i++ )
91)       duration += frames[i].getDuration( );
92)     return duration;
93)   }
94) 
95)   public int getInfoCnt( )
96)   {
97)     return infoCnt;
98)   }
99) 
100)   public String getInfoType( int infoNo )
101)   {
102)     if( infoCnt < 1 ) return "";
103)     if( infoNo < 0 ) infoNo = 0;
104)     if( infoNo >= infoCnt ) infoNo = infoCnt - 1;
105)     return infos[infoNo][0];
106)   }
107) 
108)   public String getInfoData( int infoNo )
109)   {
110)     if( infoCnt < 1 ) return "";
111)     if( infoNo < 0 ) infoNo = 0;
112)     if( infoNo >= infoCnt ) infoNo = infoCnt - 1;
113)     return infos[infoNo][1];
114)   }
115) 
116)   public void setInfo( int infoNo, String infoType, String infoData )
117)   {
118)     if( infoNo < 0 || infoNo >= infoCnt )
119)       return;
120)     infos[infoNo][0] = infoType;
121)     infos[infoNo][1] = infoData;
122)   }
123) 
124)   public void insertInfo( int infoNo, String infoType, String infoData )
125)   {
126)     String[][] infos;
127)     int i;
128) 
129)     if( infoNo < 0 || infoNo > infoCnt )
130)       return;
131) 
132)     infos = new String[infoCnt+1][2];
133) 
134)     for( i = 0; i < infoNo; i++ )
135)     {
136)       infos[i][0] = this.infos[i][0];
137)       infos[i][1] = this.infos[i][1];
138)     }
139) 
140)     infos[infoNo][0] = infoType;
141)     infos[infoNo][1] = infoData;
142) 
143)     for( i = infoNo; i < infoCnt; i++ )
144)     {
145)       infos[i+1][0] = this.infos[i][0];
146)       infos[i+1][1] = this.infos[i][1];
147)     }
148) 
149)     this.infos = infos;
150)     infoCnt++;
151)   }
152)   
153)   public void appendInfo( String infoType, String infoData )
154)   {
155)     insertInfo( infoCnt, infoType, infoData );
156)   }
157) 
158)   public void deleteInfo( int infoNo )
159)   {
160)     String[][] infos;
161)     int i;
162) 
163)     if( infoNo < 0 || infoNo >= infoCnt )
164)       return;
165) 
166)     infos = new String[infoCnt-1][2];
167) 
168)     for( i = 0; i < infoNo; i++ )
169)     {
170)       infos[i][0] = this.infos[i][0];
171)       infos[i][1] = this.infos[i][1];
172)     }
173) 
174)     for( i = infoNo; i < infoCnt-1; i++ )
175)     {
176)       infos[i][0] = this.infos[i+1][0];
177)       infos[i][1] = this.infos[i+1][1];
178)     }
179) 
180)     this.infos = infos;
181)     infoCnt--;
182)   }
183)   
184)   public void deleteInfos( )
185)   {
186)     infos = new String[0][2];
187)     infoCnt = 0;
188)   }
189) 
190)   public int getFrameCnt( )
191)   {
192)     return frameCnt;
193)   }
194) 
195)   public BlinkenFrame getFrame( int frameNo )
196)   {
197)     BlinkenFrame frame;
198)     if( frameCnt < 1 )
199)     {
200)       frame = new BlinkenFrame( height, width, channels, maxval, 0 );
201)       frame.clear( );
202)       return frame;
203)     }
204)     if( frameNo < 0 ) frameNo = 0;
205)     if( frameNo >= frameCnt ) frameNo = frameCnt - 1;
206)     return frames[frameNo];
207)   }
208) 
209)   public void setFrame( int frameNo, BlinkenFrame frame )
210)   {
211)     if( frameNo < 0 || frameNo >= frameCnt )
212)       return;
213)     frame.resize( height, width, channels, maxval );
214)     frames[frameNo] = frame;
215)   }
216) 
217)   public void insertFrame( int frameNo, BlinkenFrame frame )
218)   {
219)     BlinkenFrame[] frames;
220)     int i;
221) 
222)     if( frameNo < 0 || frameNo > frameCnt )
223)       return;
224) 
225)     frames = new BlinkenFrame[frameCnt+1];
226) 
227)     for( i = 0; i < frameNo; i++ )
228)       frames[i] = this.frames[i];
229) 
230)     frame.resize( height, width, channels, maxval );
231)     frames[frameNo] = frame;
232) 
233)     for( i = frameNo; i < frameCnt; i++ )
234)       frames[i+1] = this.frames[i];
235) 
236)     this.frames = frames;
237)     frameCnt++;
238)   }
239)   
240)   public void appendFrame( BlinkenFrame frame )
241)   {
242)     insertFrame( frameCnt, frame );
243)   }
244) 
245)   public void deleteFrame( int frameNo )
246)   {
247)     BlinkenFrame[] frames;
248)     int i;
249) 
250)     if( frameNo < 0 || frameNo >= frameCnt )
251)       return;
252) 
253)     frames = new BlinkenFrame[frameCnt-1];
254) 
255)     for( i = 0; i < frameNo; i++ )
256)       frames[i] = this.frames[i];
257) 
258)     for( i = frameNo; i < frameCnt-1; i++ )
259)       frames[i] = this.frames[i+1];
260) 
261)     this.frames = frames;
262)     frameCnt--;
263)   }
264)   
265)   public void deleteFrames( )
266)   {
267)     frames = new BlinkenFrame[0];
268)     frameCnt = 0;
269)   }
270) 
271)   public void resize( int height, int width, int channels, int maxval )
272)   {
273)     int i;
274) 
275)     if( height < 1 ) height = 1;
276)     if( height > 1024 ) height = 1024;
277)     if( width < 1 ) width = 1;
278)     if( width > 1024 ) width = 1024;
279)     if( channels < 1 ) channels = 1;
280)     if( channels > 16 ) channels = 16;
281)     if( maxval < 1 ) maxval = 1;
282)     if( maxval > 255 ) maxval = 255;
283) 
284)     this.height = height;
285)     this.width = width;
286)     this.channels = channels;
287)     this.maxval = maxval;
288) 
289)     for( i = 0; i < frameCnt; i++ )
290)       frames[i].resize( height, width, channels, maxval );
291)   }
292) 
Christian Heimke Blimp v.0.3 (2004-11-12)

Christian Heimke authored 13 years ago

293)   public void scale( int height, int width )
294)   {
295)     int i;
296) 
297)     if( height < 1 ) height = 1;
298)     if( height > 1024 ) height = 1024;
299)     if( width < 1 ) width = 1;
300)     if( width > 1024 ) width = 1024;
301) 
302)     this.height = height;
303)     this.width = width;
304) 
305)     for( i = 0; i < frameCnt; i++ )
306)       frames[i].scale( height, width );
307)   }
308)