X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswfrender.c;h=65240896e2b684081106054e85fc998c84cee89e;hb=ab2f7a4cd0eda09ff3af29058c45d098f869b598;hp=e2469782fcd60552511448e6d4edfc98f0fe788d;hpb=644837a3d0f18ac76d55c9ba438246cb5a2927d6;p=swftools.git diff --git a/lib/modules/swfrender.c b/lib/modules/swfrender.c index e246978..6524089 100644 --- a/lib/modules/swfrender.c +++ b/lib/modules/swfrender.c @@ -365,7 +365,7 @@ void swf_Render_Delete(RENDERBUF*dest) /* delete line buffers */ for(y=0;yheight2;y++) { - swf_DeleteTag(i->lines[y].points); + swf_DeleteTag(0, i->lines[y].points); i->lines[y].points = 0; } @@ -1048,7 +1048,7 @@ typedef struct SHAPE2**glyphs; } font_t; -enum CHARACTER_TYPE {none_type, shape_type, image_type, text_type, font_type, sprite_type}; +enum CHARACTER_TYPE {none_type, shape_type, image_type, text_type, edittext_type, font_type, sprite_type}; typedef struct { TAG*tag; @@ -1233,6 +1233,12 @@ static void renderFromTag(RENDERBUF*buf, character_t*idtable, TAG*firstTag, MATR info.buf = buf; swf_ParseDefineText(tag, textcallback, &info); + } else if(idtable[id].type == edittext_type) { + TAG* tag = idtable[id].tag; + U16 flags = swf_GetBits(tag, 16); + if(flags & ET_HASTEXT) { + fprintf(stderr, "edittext not supported yet (id %d)\n", id); + } } else { fprintf(stderr, "Unknown/Unsupported Object Type for id %d: %s\n", id, swf_TagGetName(idtable[id].tag)); } @@ -1247,6 +1253,7 @@ void swf_RenderSWF(RENDERBUF*buf, SWF*swf) int t; RGBA color; + swf_OptimizeTagOrder(swf); swf_FoldAll(swf); character_t* idtable = (character_t*)rfx_calloc(sizeof(character_t)*65536); // id to character mapping @@ -1302,6 +1309,8 @@ void swf_RenderSWF(RENDERBUF*buf, SWF*swf) idtable[id].type = text_type; } else if(tag->id == ST_DEFINESPRITE) { idtable[id].type = sprite_type; + } else if(tag->id == ST_DEFINEEDITTEXT) { + idtable[id].type = edittext_type; } } tag = tag->next;