important for texture and gradient fill */
for(t=0;t<s2->numfillstyles;t++) {
MATRIX nm;
- swf_MatrixJoin(&nm, &s2->fillstyles[t].m, &mat); //TODO: is this the right order?
+ swf_MatrixJoin(&nm, &mat, &s2->fillstyles[t].m);
/*nm.sx *= i->multiply;
nm.sy *= i->multiply;
nm.r0 *= i->multiply;
textcallbackblock_t * info = (textcallbackblock_t*)self;
font_t*font = 0;
int t;
- if(!info->idtable[fontid].obj.font) {
+ if(info->idtable[fontid].type != font_type) {
+ fprintf(stderr, "ID %d is not a font\n", fontid);
+ return;
+ } else if(!info->idtable[fontid].obj.font) {
fprintf(stderr, "Font %d unknown\n", fontid);
return;
} else {
m.sy = (m.sy * fontsize) / 1024;
m.r0 = (m.r0 * fontsize) / 1024;
m.r1 = (m.r1 * fontsize) / 1024;
- m.tx += p.x;
- m.ty += p.y;
+ m.tx = p.x;
+ m.ty = p.y;
if(chars[t]<0 || chars[t]>= font->numchars) {
fprintf(stderr, "Character out of range: %d\n", chars[t]);
swf_GetPlaceObject(tag, &p);
/* TODO: add move and deletion */
placements[numplacements++] = p;
- swf_PlaceObjectFree(&p); //dirty! but it only removes items we don't need
+ swf_PlaceObjectFree(&p); //dirty! but it only frees fields we don't use
}
tag = tag->next;
}
swf_GetU16(tag);
swf_GetRect(tag,0);
swf_GetMatrix(tag,&m);
- swf_MatrixJoin(&info.m, &m, &p->matrix);
+ swf_MatrixJoin(&info.m, &p->matrix, &m);
/*printf("Text matrix:\n");
swf_DumpMatrix(stdout, &m);
printf("Placement matrix:\n");
- swf_DumpMatrix(stdout, &p->matrix);*/
+ swf_DumpMatrix(stdout, &p->matrix);
+ printf("Final matrix:\n");
+ swf_DumpMatrix(stdout, &info.m);*/
info.idtable = idtable;
info.depth = p->depth;