X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Freaders%2Fswf.c;h=98c340ce0637563d7ad354b42a44e7d8db63bdb4;hb=b5a996ee217aea486eb78860fe7bab2b522f9678;hp=fac12e23e9443e6611f23ff5fc4e3de9c79b4528;hpb=10b60d36fcf6cc9532bf397866c5bdc3393246eb;p=swftools.git diff --git a/lib/readers/swf.c b/lib/readers/swf.c index fac12e2..98c340c 100644 --- a/lib/readers/swf.c +++ b/lib/readers/swf.c @@ -92,7 +92,7 @@ void map16_free(map16_t*map) void map16_add_id(map16_t*map, int nr, void*id) { if(map->ids[nr]) - fprintf(stderr, "Warning: ID %d defined more than once\n"); + fprintf(stderr, "Warning: ID %d defined more than once\n", nr); map->ids[nr] = id; } void map16_remove_id(map16_t*map, int nr) @@ -183,7 +183,7 @@ gfxline_t* swfline_to_gfxline(SHAPELINE*line, int linestyle, int fillstyle0) //---- bitmap handling ---- -gfximage_t* gfximage_new(RGBA*data, int width, int height) +static gfximage_t* gfximage_new(RGBA*data, int width, int height) { gfximage_t* b = (gfximage_t*)rfx_calloc(sizeof(gfximage_t)); b->data = (gfxcolor_t*)data; @@ -192,13 +192,6 @@ gfximage_t* gfximage_new(RGBA*data, int width, int height) return b; } -void gfximage_free(gfximage_t*b) -{ - free(b->data); //! - b->data = 0; - free(b); -} - static gfximage_t* findimage(render_t*r, U16 id) { character_t*c = (character_t*)map16_get_id(r->id2char, id); @@ -234,7 +227,15 @@ static void renderFilled(render_t*r, gfxline_t*line, FILLSTYLE*f, CXFORM*cx, MAT } else if(f->type == FILL_LINEAR || f->type == FILL_RADIAL) { gfxmatrix_t m; gfxgradient_t* g; - convertMatrix(&f->m, &m); + MATRIX* m2 = &f->m; + //swf_MatrixJoin(&m2, po_m, &f->m); + + double z = f->type==FILL_RADIAL?4:4; + m.m00 = m2->sx/z/20.0; m.m10 = m2->r1/z/20.0; + m.m01 = m2->r0/z/20.0; m.m11 = m2->sy/z/20.0; + m.tx = m2->tx/20.0; + m.ty = m2->ty/20.0; + g = convertGradient(&f->gradient); r->device->fillgradient(r->device, line, g, f->type == FILL_LINEAR ? gfxgradient_linear : gfxgradient_radial, &m); free(g); @@ -598,15 +599,13 @@ void swfpage_render(gfxpage_t*page, gfxdevice_t*output) int t; for(t=0;t<65536;t++) { + if(depths->ids[t]) { + placeObject(&r, t, depths->ids[t]); + } int i; - for(i=0; iendclip(output); } - - if(depths->ids[t]) { - placeObject(&r, t, depths->ids[t]); - } } free(r.clips_waiting); } @@ -626,7 +625,7 @@ void swf_doc_destroy(gfxdocument_t*gfx) free(gfx);gfx=0; } -void swf_doc_set_parameter(gfxdocument_t*gfx, const char*name, const char*value) +void swf_doc_setparameter(gfxdocument_t*gfx, const char*name, const char*value) { swf_doc_internal_t*i= (swf_doc_internal_t*)gfx->internal; } @@ -654,7 +653,7 @@ gfxpage_t* swf_doc_getpage(gfxdocument_t*doc, int page) return swf_page; } -void swf_set_parameter(gfxsource_t*src, const char*name, const char*value) +void swf_setparameter(gfxsource_t*src, const char*name, const char*value) { msg(" setting parameter %s to \"%s\"", name, value); } @@ -699,7 +698,7 @@ gfxdocument_t*swf_open(gfxsource_t*src, const char*filename) swf_doc->internal = i; swf_doc->get = 0; swf_doc->destroy = swf_doc_destroy; - swf_doc->set_parameter = swf_doc_set_parameter; + swf_doc->setparameter = swf_doc_setparameter; swf_doc->getpage = swf_doc_getpage; return swf_doc; @@ -716,7 +715,7 @@ gfxsource_t*gfxsource_swf_create() { gfxsource_t*src = (gfxsource_t*)malloc(sizeof(gfxsource_t)); memset(src, 0, sizeof(gfxsource_t)); - src->set_parameter = swf_set_parameter; + src->setparameter = swf_setparameter; src->open = swf_open; src->destroy = swf_destroy; return src;