bugfix: ST_DEFINEBUTTON2 and CXForms
[swftools.git] / lib / modules / swfbutton.c
index 23bd3c7..84528a4 100644 (file)
 \r
 */\r
 \r
-int ButtonSetRecord(LPTAG t,U8 state,U16 id,U16 layer,LPMATRIX m,LPCXFORM cx)\r
+int swf_ButtonSetRecord(TAG * t,U8 state,U16 id,U16 layer,MATRIX * m,CXFORM * cx)\r
 \r
-{ SetU8(t,state);\r
-  SetU16(t,id);\r
-  SetU16(t,layer);\r
-  SetMatrix(t,m);\r
-//  SetCXForm(t,cx,0);\r
+{ swf_SetU8(t,state);\r
+  swf_SetU16(t,id);\r
+  swf_SetU16(t,layer);\r
+  swf_SetMatrix(t,m);\r
+  if (swf_GetTagID(t)==ST_DEFINEBUTTON2) swf_SetCXForm(t,cx,0);\r
   return 0;\r
 }\r
 \r
-int ButtonSetCondition(LPTAG t,U16 condition)\r
-{ SetU16(t,0); // dummy for Action Offset -> later set by ButtonPostProcess\r
-  SetU16(t,condition);\r
+int swf_ButtonSetCondition(TAG * t,U16 condition)\r
+{ swf_SetU16(t,0); // dummy for Action Offset -> later set by ButtonPostProcess\r
+  swf_SetU16(t,condition);\r
   return 0;\r
 }\r
 \r
-int ButtonSetFlags(LPTAG t,U8 flags)\r
-{ if (GetTagID(t)==ST_DEFINEBUTTON2)\r
-  { SetU8(t,flags);\r
-    SetU16(t,0); // dummy for Action Offset -> later set by ButtonPostProcess\r
+int swf_ButtonSetFlags(TAG * t,U8 flags)\r
+{ if (swf_GetTagID(t)==ST_DEFINEBUTTON2)\r
+  { swf_SetU8(t,flags);\r
+    swf_SetU16(t,0); // dummy for Action Offset -> later set by ButtonPostProcess\r
   }\r
   return 0;\r
 }\r
 \r
-void SetButtonOffset(LPTAG t,U32 offsetpos)\r
-{ U32 now = GetTagPos(t);\r
+void swf_SetButtonOffset(TAG * t,U32 offsetpos)\r
+{ U32 now = swf_GetTagPos(t);\r
   U16 diff = now-offsetpos;\r
-  SetTagPos(t,offsetpos);\r
+  swf_SetTagPos(t,offsetpos);\r
   t->data[t->pos++] = (U8)(diff&0xff);\r
   t->data[t->pos++] = (U8)(diff>>8);\r
-  SetTagPos(t,now);\r
+  swf_SetTagPos(t,now);\r
 }\r
 \r
-int ButtonPostProcess(LPTAG t,int anz_action)\r
-{ if (GetTagID(t)==ST_DEFINEBUTTON2)\r
+int swf_ButtonPostProcess(TAG * t,int anz_action)\r
+{ if (swf_GetTagID(t)==ST_DEFINEBUTTON2)\r
   { U32 oldTagPos;\r
     U32 offsetpos;\r
 \r
-    oldTagPos = GetTagPos(t);\r
+    oldTagPos = swf_GetTagPos(t);\r
 \r
     // scan DefineButton2 Record\r
     \r
-    GetU16(t);          // Character ID\r
-    GetU8(t);           // Flags;\r
+    swf_GetU16(t);          // Character ID\r
+    swf_GetU8(t);           // Flags;\r
 \r
-    offsetpos = GetTagPos(t);  // first offset\r
-    GetU16(t);\r
+    offsetpos = swf_GetTagPos(t);  // first offset\r
+    swf_GetU16(t);\r
 \r
-    while (GetU8(t))      // state  -> parse ButtonRecord\r
-    { GetU16(t);          // id\r
-      GetU16(t);          // layer\r
-      GetMatrix(t,NULL);  // matrix\r
-      // evtl.: CXForm\r
+    while (swf_GetU8(t))      // state  -> parse ButtonRecord\r
+    { swf_GetU16(t);          // id\r
+      swf_GetU16(t);          // layer\r
+      swf_GetMatrix(t,NULL);  // matrix\r
+      swf_GetCXForm(t,NULL,0);// CXForm\r
     }\r
 \r
-    SetButtonOffset(t,offsetpos);\r
+    swf_SetButtonOffset(t,offsetpos);\r
 \r
     while(anz_action)\r
     { U8 a;\r
         \r
-      offsetpos = GetTagPos(t); // offset\r
-      GetU16(t);\r
+      offsetpos = swf_GetTagPos(t); // offset\r
+      swf_GetU16(t);\r
 \r
-      GetU16(t);                // condition\r
+      swf_GetU16(t);                // condition\r
       \r
-      while (a=GetU8(t))        // skip action records\r
+      while (a=swf_GetU8(t))        // skip action records\r
       { if (a&0x80)\r
-        { U16 l = GetU16(t);\r
-          GetBlock(t,NULL,l);\r
+        { U16 l = swf_GetU16(t);\r
+          swf_GetBlock(t,NULL,l);\r
         }\r
       }\r
       \r
-      if (--anz_action) SetButtonOffset(t,offsetpos);\r
+      if (--anz_action) swf_SetButtonOffset(t,offsetpos);\r
     }\r
     \r
-    SetTagPos(t,oldTagPos);\r
+    swf_SetTagPos(t,oldTagPos);\r
   }\r
   return 0;\r
 }\r