From 71212fddd3050a31a834dcb92d8b10122bca10be Mon Sep 17 00:00:00 2001 From: kramm Date: Sun, 16 May 2004 21:13:20 +0000 Subject: [PATCH] moved some functions to ../lib/rfxswf.h. --- src/swfbbox.c | 177 --------------------------------------------------------- 1 file changed, 177 deletions(-) diff --git a/src/swfbbox.c b/src/swfbbox.c index 22d9ccd..8259481 100644 --- a/src/swfbbox.c +++ b/src/swfbbox.c @@ -103,116 +103,6 @@ int args_callback_command(char*name,char*val) #define swf_ResetReadBits(tag) if (tag->readBit) { tag->pos++; tag->readBit = 0; } -void parseFillStyleArray(TAG*tag, SHAPE2*shape) -{ - U16 count; - int t; - int num=0; - if(tag->id == ST_DEFINESHAPE) - num = 1; - else if(tag->id == ST_DEFINESHAPE2) - num = 2; - else if(tag->id == ST_DEFINESHAPE3) - num = 3; - - count = swf_GetU8(tag); - if(count == 0xff && num>1) // defineshape2,3 only - count = swf_GetU16(tag); - - if(verbose) printf("num: %d\n", count); - shape->numfillstyles = count; - shape->fillstyles = malloc(sizeof(FILLSTYLE)*count); - - for(t=0;tfillstyles[t]; - type = swf_GetU8(tag); //type - shape->fillstyles[t].type = type; - if(type == 0) { - /* plain color */ - if(num == 3) - swf_GetRGBA(tag, &dest->color); - else - swf_GetRGB(tag, &dest->color); - } - else if(type == 0x10 || type == 0x12) - { - /* linear/radial gradient fill */ - swf_ResetReadBits(tag); - swf_GetMatrix(tag, &dest->m); - swf_ResetReadBits(tag); - swf_GetGradient(tag, &dest->gradient, num>=3?1:0); - } - else if(type == 0x40 || type == 0x41) - { - /* bitmap fill */ - swf_ResetReadBits(tag); - dest->id_bitmap = swf_GetU16(tag); //id - swf_ResetReadBits(tag); //? - swf_GetMatrix(tag, &dest->m); - } - else { - fprintf(stderr, "rfxswf:swftools.c Unknown fillstyle:0x%02x\n",type); - } - } - swf_ResetReadBits(tag); - count = swf_GetU8(tag); // line style array - if(count == 0xff) - count = swf_GetU16(tag); - - //if(verbose) printf("lnum: %d\n", count); - - shape->numlinestyles = count; - shape->linestyles = malloc(sizeof(LINESTYLE)*count); - /* TODO: should we start with 1 and insert a correct definition of the - "built in" linestyle 0? */ - for(t=0;tlinestyles[t].width = swf_GetU16(tag); - if(num == 3) - swf_GetRGBA(tag, &shape->linestyles[t].color); - else - swf_GetRGB(tag, &shape->linestyles[t].color); - } - return; -} - -void swf_ParseDefineShape(TAG*tag, SHAPE2*shape) -{ - int num = 0, id; - U16 fill,line; - SRECT r; - SRECT r2; - SHAPELINE*l; - if(tag->id == ST_DEFINESHAPE) - num = 1; - else if(tag->id == ST_DEFINESHAPE2) - num = 2; - else if(tag->id == ST_DEFINESHAPE3) - num = 3; - else { - fprintf(stderr, "parseDefineShape must be called with a shape tag"); - } - - id = swf_GetU16(tag); //id - memset(shape, 0, sizeof(SHAPE2)); - shape->bbox = malloc(sizeof(SRECT)); - swf_GetRect(tag, &r); - - memcpy(shape->bbox, &r, sizeof(SRECT)); - parseFillStyleArray(tag, shape); - - swf_ResetReadBits(tag); - fill = (U16)swf_GetBits(tag,4); - line = (U16)swf_GetBits(tag,4); - - shape->lines = swf_ParseShapeData(&tag->data[tag->pos], (tag->len - tag->pos)*8, fill, line); - - l = shape->lines; -} - void swf_Shape2Optimize(SHAPE2*shape) { if(!shape->bbox) @@ -220,73 +110,6 @@ void swf_Shape2Optimize(SHAPE2*shape) *(shape->bbox) = swf_GetShapeBoundingBox(shape); } -void swf_Shape2ToShape(SHAPE2*shape2, SHAPE*shape) -{ - TAG*tag = swf_InsertTag(0,0); - SHAPELINE*l,*next; - int newx=0,newy=0,lastx=0,lasty=0,oldls=0,oldfs0=0,oldfs1=0; - - memset(shape, 0, sizeof(SHAPE)); - - shape->linestyle.n = shape2->numlinestyles; - shape->linestyle.data = (LINESTYLE*)malloc(sizeof(LINESTYLE)*shape->linestyle.n); - memcpy(shape->linestyle.data, shape2->linestyles, sizeof(LINESTYLE)*shape->linestyle.n); - - shape->fillstyle.n = shape2->numfillstyles; - shape->fillstyle.data = (FILLSTYLE*)malloc(sizeof(FILLSTYLE)*shape->fillstyle.n); - memcpy(shape->fillstyle.data, shape2->fillstyles, sizeof(FILLSTYLE)*shape->fillstyle.n); - - swf_ShapeCountBits(shape,NULL,NULL); - - l = shape2->lines; - - while(l) { - int ls=0,fs0=0,fs1=0; - - if(l->type != moveTo) { - if(oldls != l->linestyle) {oldls = ls = l->linestyle;if(!ls) ls=0x8000;} - if(oldfs0 != l->fillstyle0) {oldfs0 = fs0 = l->fillstyle0;if(!fs0) fs0=0x8000;} - if(oldfs1 != l->fillstyle1) {oldfs1 = fs1 = l->fillstyle1;if(!fs1) fs1=0x8000;} - - if(ls || fs0 || fs1 || newx!=0x7fffffff || newy!=0x7fffffff) { - swf_ShapeSetAll(tag,shape,newx,newy,ls,fs0,fs1); - newx = 0x7fffffff; - newy = 0x7fffffff; - } - } - - if(l->type == lineTo) { - swf_ShapeSetLine(tag,shape,l->x-lastx,l->y-lasty); - } else if(l->type == splineTo) { - swf_ShapeSetCurve(tag,shape, l->sx-lastx,l->sy-lasty, l->x-l->sx,l->y-l->sy); - } - if(l->type == moveTo) { - newx = l->x; - newy = l->y; - } - - lastx = l->x; - lasty = l->y; - l = l->next; - } - swf_ShapeSetEnd(tag); - shape->data = tag->data; - shape->bitlen = tag->len*8; -} - -void swf_SetShape2(TAG*tag, SHAPE2*shape2) -{ - SHAPE shape; - swf_Shape2ToShape(shape2, &shape); - - swf_SetRect(tag,shape2->bbox); - swf_SetShapeStyles(tag, &shape); - swf_ShapeCountBits(&shape,NULL,NULL); - swf_SetShapeBits(tag,&shape); - - swf_SetBlock(tag, shape.data, (shape.bitlen+7)/8); -} - /* {char {x1 y1 x2 y2 x3 y3 x4 y4]] */ -- 1.7.10.4