76eb1ea660edc0d235528cec15846da18bb5a805
[swftools.git] / lib / example / jpegtest.c
1 // linux/gcc cc jpegtest.c ../rfxswf.c -funsigned-char -o jpegtest -lm -ljpeg; cp jpegtest /home/www/cgi-bin/jpegtest
2
3 #include <stdio.h>
4 #include <math.h>       
5 #include "../rfxswf.h"
6
7 #define WIDTH           256
8 #define HEIGHT  256
9 #define QUALITY         85
10
11 #define ID_BITS         1
12 #define ID_SHAPE        2
13
14 int main ( int argc, char ** argv)
15 { SWF swf;
16   LPTAG t;
17   RGBA rgb;
18   LPSHAPE s;
19   MATRIX m;
20   SRECT r;
21   LPJPEGBITS jpeg;
22   
23   int ls; // line style
24   int fs; // fill style
25   int frame;
26
27   memset(&swf,0x00,sizeof(SWF));
28
29   swf.FileVersion       = 4;
30   swf.FrameRate         = 0x1800;
31   swf.MovieSize.xmax    = 20*WIDTH;
32   swf.MovieSize.ymax    = 20*HEIGHT;
33
34   swf.FirstTag = InsertTag(NULL,ST_SETBACKGROUNDCOLOR);
35   t = swf.FirstTag;
36
37     rgb.r = 0xff;
38     rgb.b = 0xff;
39     rgb.g = 0xff;
40     SetRGB(t,&rgb);
41
42   t = InsertTag(t,ST_DEFINEBITSJPEG2);
43
44     SetU16(t,ID_BITS);
45     SetJPEGBits(t,"eye.jpg",QUALITY);
46     
47 /*    jpeg = SetJPEGBitsStart(t,WIDTH,HEIGHT,QUALITY);
48     { int y;
49       for (y=0;y<HEIGHT;y++)
50       { U8 scanline[3*WIDTH];
51         int x,p = 0;
52         for (x=0;x<WIDTH;x++) 
53         { scanline[p++] = x;    // R
54           scanline[p++] = y;    // G
55           scanline[p++] = 0x80; // B          
56         }
57         SetJPEGBitsLine(jpeg,scanline);
58       }
59     }
60     SetJPEGBitsFinish(jpeg);
61 */
62
63 for (frame=0;frame<64;frame++)
64 {
65   t = InsertTag(t,ST_DEFINESHAPE);
66     
67     NewShape(&s);
68     rgb.b = rgb.g = rgb.r = 0x00;
69     ls = ShapeAddLineStyle(s,40,&rgb);  
70     rgb.b = 0xff;
71   //  fs = ShapeAddSolidFillStyle(s,&rgb);
72     //  
73     GetMatrix(NULL,&m);
74     m.sy = m.sx = (int)(cos(((float)(frame))/32*3.141)*0x80000);
75     m.r0 = (int)(sin(((float)(frame))/32*3.141)*0x80000);
76     m.r1 = -m.r0;
77        
78     fs = ShapeAddBitmapFillStyle(s,&m,ID_BITS,0);
79     
80     SetU16(t,ID_SHAPE+frame);   // ID   
81
82     r.xmin = 0;
83     r.ymin = 0;
84     r.xmax = 10*WIDTH;
85     r.ymax = 10*HEIGHT;
86
87     SetRect(t,&r);
88
89     SetShapeStyles(t,s);
90     ShapeCountBits(s,NULL,NULL);
91     SetShapeBits(t,s);
92
93     ShapeSetAll(t,s,0,0,ls,fs,0);
94
95     ShapeSetLine(t,s,10*WIDTH,0);
96     ShapeSetLine(t,s,-10*WIDTH,10*HEIGHT);
97 //    ShapeSetLine(t,s,-10*WIDTH,-10*WIDTH);
98     ShapeSetLine(t,s,0,-10*HEIGHT);
99     ShapeSetEnd(t);
100
101   if (frame) 
102   { t = InsertTag(t,ST_REMOVEOBJECT2); SetU16(t,1);
103     t = InsertTag(t,ST_REMOVEOBJECT2); SetU16(t,2);
104   }
105          
106   t = InsertTag(t,ST_PLACEOBJECT2);
107     ObjectPlace(t,ID_SHAPE+frame,1,NULL,NULL,NULL); 
108
109   t = InsertTag(t,ST_PLACEOBJECT2);
110     GetMatrix(NULL,&m);
111     m.tx = m.ty = 10*WIDTH+frame*10;
112     m.sx = m.sy = 0xfffeffff;
113     ObjectPlace(t,ID_SHAPE+frame,2,&m,NULL,NULL);
114
115
116   t = InsertTag(t,ST_SHOWFRAME);
117 }
118
119   t = InsertTag(t,ST_END);
120
121   WriteCGI(&swf);
122   FreeTags(&swf);
123   return 0;
124 }