tag->tagmap = tagmap_new();
return (PyObject*)tag;
}
-PyObject* tag_new2(TAG*_tag)
+PyObject* tag_new2(TAG*t, PyObject* tagmap)
{
TagObject*tag = PyObject_New(TagObject, &TagClass);
- mylog("+%08x(%d) tag_new\n", (int)tag, tag->ob_refcnt);
+ mylog("+%08x(%d) tag_new tag=%08x\n", (int)tag, tag->ob_refcnt, t);
tag->font = 0;
tag->character = 0;
tag->placeobject = 0;
- tag->tag = _tag;
+ tag->tag = t;
tag->tagmap = tagmap_new();
+
+ int num = swf_GetNumUsedIDs(t);
+ int * positions = malloc(num*sizeof(int));
+ swf_GetUsedIDs(t, positions);
+ int i;
+ for(i=0;i<num;i++) {
+ int id = GET16(&t->data[positions[i]]);
+ PyObject*obj = tagmap_id2obj(tagmap, id);
+ if(obj==NULL) {
+ PyErr_SetString(PyExc_Exception, setError("TagID %d not defined", id));
+ return NULL;
+ }
+ tagmap_addMapping(tag->tagmap, id, obj);
+ }
return (PyObject*)tag;
}
/* serialize */
TAG* tag_getTAG(PyObject*self, TAG*prevTag, PyObject*tagmap)
{
- mylog(" %08x(%d) tag_getTAG tagmap=%08x \n", (int)self, self->ob_refcnt, tagmap);
TagObject*tag = (TagObject*)self;
TAG* t = tag_getRAWTAG(self);
+ mylog(" %08x(%d) tag_getTAG tagmap=%08x tag=%08x\n", (int)self, self->ob_refcnt, tagmap, t);
t->next = 0;
t->prev = prevTag;
if(prevTag)