added swfdraw.c module.
authorkramm <kramm>
Mon, 15 Sep 2003 16:06:39 +0000 (16:06 +0000)
committerkramm <kramm>
Mon, 15 Sep 2003 16:06:39 +0000 (16:06 +0000)
lib/Makefile.in
lib/modules/swfdraw.c [new file with mode: 0644]
lib/rfxswf.h

index f60f5a4..30f8738 100644 (file)
@@ -7,7 +7,7 @@ all: librfxswf.a q.o
 
 lame_objects =  lame/psymodel.o lame/fft.o lame/newmdct.o lame/quantize.o lame/takehiro.o lame/reservoir.o lame/quantize_pvt.o lame/vbrquantize.o lame/encoder.o lame/id3tag.o lame/version.o lame/tables.o lame/util.o lame/bitstream.o lame/set_get.o lame/VbrTag.o lame/lame.o
 h263_objects = h.263/dct.o h.263/h263tables.o h.263/swfvideo.o
-rfxswf_modules =  modules/swfbits.c modules/swfaction.c modules/swfdump.c modules/swfcgi.c modules/swfbutton.c modules/swftext.c modules/swftools.c modules/swfsound.c modules/swfshape.c modules/swfobject.c h.263/swfvideo.c
+rfxswf_modules =  modules/swfbits.c modules/swfaction.c modules/swfdump.c modules/swfcgi.c modules/swfbutton.c modules/swftext.c modules/swftools.c modules/swfsound.c modules/swfshape.c modules/swfobject.c modules/swfdraw.c h.263/swfvideo.c
 
 bitio.o: bitio.c bitio.h
        $(C) bitio.c -o $@
diff --git a/lib/modules/swfdraw.c b/lib/modules/swfdraw.c
new file mode 100644 (file)
index 0000000..8254d75
--- /dev/null
@@ -0,0 +1,71 @@
+// swfdraw.c
+void swf_DrawerInit(SWFSHAPEDRAWER*draw, TAG*tag)
+{
+    draw->tagfree = 0;
+    if(tag == 0) {
+       tag = swf_InsertTag(0, ST_DEFINESHAPE);
+       draw->tagfree = 1;
+    }
+    draw->tag = tag;
+    swf_ShapeNew(&draw->shape);
+    draw->pos = to;
+
+    swf_SetU8(draw->tag,0);
+    draw->shape->bits.fill = 1;
+    draw->shape->bits.line = 0;
+    swf_ShapeSetStyle(draw->tag,draw->shape,0,1,0);
+}
+void swf_DrawerMoveTo(SWFSHAPEDRAWER*draw, FPOINT * to)
+{
+    swf_ShapeSetMove(draw->tag,draw->shape,(int)(to->x*20), (int)(to->y*20));
+    draw->pos = to;
+}
+void swf_DrawerLineTo(SWFSHAPEDRAWER*draw, FPOINT * to)
+{
+    swf_ShapeSetMove(draw->tag,draw->shape,(int)(to->x*20), (int)(to->y*20));
+    draw->pos = to;
+}
+void swf_DrawerSplineTo(SWFSHAPEDRAWER*draw, FPOINT * c1, FPOINT*  to)
+{
+    swf_ShapeSetSpline(draw->tag,draw->shape,
+           (int)(c1->x*20), (int)(c1->y*20),
+           (int)(to->x*20), (int)(to->y*20),
+           );
+    draw->pos = to;
+}
+void swf_DrawerCubicTo(SWFSHAPEDRAWER*draw, FPOINT*  c1, FPOINT* c2, FPOINT*  to)
+{
+    draw->pos = to;
+}
+void swf_DrawerConicTo(SWFSHAPEDRAWER*draw, FPOINT* c, FPOINT*  to)
+{
+    FPOINT* pos = draw->pos;
+    FPOINT c1,c2;
+    c1.x = (pos->x + 2 * c->x) / 3;
+    c1.y = (pos->y + 2 * c->y) / 3;
+    c2.x = (2 * c->x + to->x) / 3;
+    c2.y = (2 * c->y + to->y) / 3;
+    swf_DrawerCubicTo(draw, &c1,&c2,to);
+    draw->pos = to;
+    return 0;
+}
+void swf_DrawerFinish(SWFSHAPEDRAWER*draw)
+{
+    swf_ShapeSetEnd(draw->tag);
+}
+void swf_Drawer2Shape(SWFSHAPEDRAWER*draw, SHAPE*shape)
+{
+    memset(shape, 0, sizeof(SHAPE));
+    shape->bitlen = (draw->tag->len-1)*8;
+    shape->data = (U8*)malloc(draw->tag->len-1);
+    memcpy(shape->data, &draw->tag->data[1], draw->tag->len-1);
+}
+void swf_DrawerFree(SWFSHAPEDRAWER*draw)
+{
+    if(draw->tagfree) {
+       swf_DeleteTag(tag);
+       draw->tag = 0;
+    }
+    swf_ShapeFree(draw->s);
+    draw->s = 0;
+}
index d565c83..45ac72a 100644 (file)
@@ -433,6 +433,28 @@ SRECT         swf_GetShapeBoundingBox(SHAPE2*shape);
 void       swf_SetShape2(TAG*tag, SHAPE2*shape);
 void      swf_Shape2Free(SHAPE2 * s);
 
+// swfdraw.c
+
+typedef struct _FPOINT
+{
+    float x,y;
+} FPOINT;
+
+typedef struct _SWFSHAPEDRAWER
+{
+    FPOINT pos;
+    SHAPE*shape;
+    TAG*tag;
+    int tagfree;
+} SWFSHAPEDRAWER;
+
+void swf_DrawerInit(SWFSHAPEDRAWER*draw);
+void swf_DrawerMoveTo(SWFSHAPEDRAWER*draw, FPOINT * to);
+void swf_DrawerLineTo(SWFSHAPEDRAWER*draw, FPOINT * to);
+void swf_DrawerSplineTo(SWFSHAPEDRAWER*draw, FPOINT *  control1, FPOINT*  to);
+void swf_DrawerCubicTo(SWFSHAPEDRAWER*draw, FPOINT*  control1, FPOINT* control2, FPOINT*  to);
+void swf_DrawerConicTo(SWFSHAPEDRAWER*draw, FPOINT*  control, FPOINT*  to);
+
 // swffont.c
 
 // does not support wide characters !