3 Creates the swf file simple_viewer.swf.
4 I'm not much of an designer. Suggestions and improvements concerning
5 this file or simple_viewer.swf are highly welcome. -mk
7 Part of the swftools package.
9 Copyright (c) 2000, 2001 Matthias Kramm <kramm@quiss.org>
11 This file is distributed under the GPL, see file COPYING for details
21 int button_sizex = 20; //button size in pixels
22 int button_sizey = 20;
24 RGBA button_colors[6]=
25 {{0,0x00,0x00,0x80}, //Idle left
26 {0,0x00,0x00,0x80}, // " right
27 {0,0x20,0x20,0xc0}, //MouseOver left
28 {0,0x20,0x20,0xc0}, // " right
29 {0,0x10,0x10,0xff}, //Down left
30 {0,0x10,0x10,0xff}};// " right
32 int useDefineButton2 = 0; // set this to 1 to use DefineButton2 Tags
33 // instead of DefineButton1
36 int main (int argc,char ** argv)
43 S32 width=1024,height = 768;
49 memset(&swf,0x00,sizeof(SWF)); // set global movie parameters
51 swf.fileVersion = 4; // make flash 4 compatible swf
52 swf.frameRate = 0x1900; // about 0x19 frames per second
54 swf.movieSize.xmax = 20*width; // flash units: 1 pixel = 20 units
55 swf.movieSize.ymax = 20*height;
57 swf.firstTag = swf_InsertTag(NULL,ST_SETBACKGROUNDCOLOR);
72 /* the "viewport" object will be replaced by swfcombine
73 with the object to browse. It is placed at the
74 upper left corner (0,0), by setting m.tx and m.ty
75 to 0. Therefore, the buttons are "in" the viewport,
77 tag = swf_InsertTag(tag,ST_DEFINESPRITE);
78 swf_SetU16(tag, 23); //id
79 swf_SetU16(tag, 0); //frames
80 tag = swf_InsertTag(tag,ST_END);
81 tag = swf_InsertTag(tag,ST_PLACEOBJECT2);
84 swf_ObjectPlace(tag, 23, 1,&m,0,"viewport");
86 for(count=0;count<6;count++)
88 tag = swf_InsertTag(tag,ST_DEFINESHAPE);
89 swf_ShapeNew(&s); // create new shape instance
90 rgb.r = rgb.b = rgb.g = 0x00;
91 ls1 = swf_ShapeAddLineStyle(s,40,&rgb);
92 rgb = button_colors[count];
93 fs1 = swf_ShapeAddSolidFillStyle(s,&rgb);
94 swf_SetU16(tag,32+count); // now set character ID
99 swf_SetRect(tag,&r); // set shape bounds
100 swf_SetShapeHeader(tag,s); // write all styles to tag
103 swf_ShapeSetAll(tag,s,0,0,ls1,fs1,0); // move to (0,0), select linestyle ls1 and no fillstyle
104 /* SetLine coordinates are relative.
105 It's important that the start and end points match, otherwise
106 the Macromedia Flash player will crash. */
107 swf_ShapeSetLine(tag,s,20*button_sizex,20*button_sizey);
108 swf_ShapeSetLine(tag,s,-20*button_sizex,20*button_sizey);
109 swf_ShapeSetLine(tag,s,0,-40*button_sizey);
111 swf_ShapeSetAll(tag,s,20*button_sizex,0,ls1,fs1,0);
112 swf_ShapeSetLine(tag,s,-20*button_sizex,20*button_sizey);
113 swf_ShapeSetLine(tag,s,20*button_sizex,20*button_sizey);
114 swf_ShapeSetLine(tag,s,0,-40*button_sizey);
116 swf_ShapeSetEnd(tag); // finish drawing
117 swf_ShapeFree(s); // clean shape structure (which isn't needed anymore after writing the tag)
120 a1 = action_SetTarget(0, "viewport");
121 a1 = action_PreviousFrame(a1);
122 a1 = action_SetTarget(a1, "");
125 a2 = action_SetTarget(0, "viewport");
126 a2 = action_NextFrame(a2);
127 a2 = action_SetTarget(a2,"");
130 a3 = action_SetTarget(0,"viewport");
131 a3 = action_Stop(a3);
132 a3 = action_SetTarget(a3,"");
134 a3 = action_PushString(a3,"/:subtitle");
135 a3 = action_PushString(a3,""); //reset variable
136 a3 = action_SetVariable(a3);
142 if(!useDefineButton2)
144 tag = swf_InsertTag(tag,ST_DEFINEBUTTON);
145 swf_SetU16(tag,30+t); //id
146 swf_ButtonSetRecord(tag,BS_UP|BS_HIT,32+t,1,NULL,NULL);
147 swf_ButtonSetRecord(tag,BS_OVER,34+t,1,NULL,NULL);
148 swf_ButtonSetRecord(tag,BS_DOWN,36+t,1,NULL,NULL);
149 swf_SetU8(tag,0); // end of button records
152 swf_ActionSet(tag,a2);
154 swf_ActionSet(tag,a1);
158 tag = swf_InsertTag(tag,ST_DEFINEBUTTON2);
159 swf_SetU16(tag,30+t); //id
160 swf_ButtonSetFlags(tag, 0); //menu=no
161 swf_ButtonSetRecord(tag,BS_UP|BS_HIT,32+t,1,NULL,NULL);
162 swf_ButtonSetRecord(tag,BS_OVER,34+t,1,NULL,NULL);
163 swf_ButtonSetRecord(tag,BS_DOWN,36+t,1,NULL,NULL);
164 swf_SetU8(tag,0); // end of button records
166 swf_ButtonSetCondition(tag, BC_OVERDOWN_OVERUP);
168 swf_ActionSet(tag,a2);
170 swf_ActionSet(tag,a1);
172 swf_ButtonPostProcess(tag, 1); // don't forget!
176 tag = swf_InsertTag(tag,ST_DOACTION);
177 swf_ActionSet(tag,a3);
181 tag = swf_InsertTag(tag,ST_PLACEOBJECT2);
182 swf_ObjectPlace(tag, 30, 2,&m,0,0);
183 m.tx = button_sizex*30;
184 tag = swf_InsertTag(tag,ST_PLACEOBJECT2);
185 swf_ObjectPlace(tag, 31, 3,&m,0,0);
192 tag = swf_InsertTag(tag,ST_DEFINEFONT2); {
193 U8 data[] = {0x90, 0x00, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x73,
194 0x20, 0x4e, 0x65, 0x77, 0x20, 0x52, 0x6f, 0x6d,
195 0x61, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00};
197 swf_SetU16(tag, 0x76); //id
198 swf_SetBlock(tag, data, sizeof(data));
200 tag = swf_InsertTag(tag,ST_DEFINEEDITTEXT); {
201 EditTextLayout layout;
203 layout.leftmargin = 0;
204 layout.rightmargin = 0;
208 swf_SetU16(tag, 0x77);//id
209 r.xmin = button_sizex*60;
210 r.xmax = r.xmin+ 826*20;
212 r.ymax = button_sizey*80;
213 rgb.r = rgb.g = rgb.b = 0;
215 swf_SetEditText(tag, ET_MULTILINE|ET_READONLY, r, 0, &rgb, 0, 0x76, button_sizey*40, &layout, "/:subtitle");
218 tag = swf_InsertTag(tag,ST_PLACEOBJECT2);
219 swf_ObjectPlace(tag, 0x77, 4,&m,0,0);
222 tag = swf_InsertTag(tag,ST_SHOWFRAME);
223 tag = swf_InsertTag(tag,ST_END);
226 f = open("simple_viewer.swf",O_WRONLY|O_CREAT|O_TRUNC, 0644);
227 if FAILED(swf_WriteSWF(f,&swf)) fprintf(stderr,"WriteSWF() failed.\n");
230 swf_FreeTags(&swf); // cleanup