X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Frfxswf.h;h=21301b5c5d5c4c5a4a297b6bbade03ef949fcf40;hb=b9319467a11d6cc449505955298e578571a220a1;hp=743aaae1acef6096eda4dfdb24293bc4b6a47016;hpb=d5d595db551150511bacf91e0037908020bcf394;p=swftools.git diff --git a/lib/rfxswf.h b/lib/rfxswf.h index 743aaae..21301b5 100644 --- a/lib/rfxswf.h +++ b/lib/rfxswf.h @@ -95,10 +95,21 @@ typedef struct _CXFORM typedef struct _GRADIENT { int num; - U8 ratios[8]; - RGBA rgba[8]; + U8* ratios; + RGBA* rgba; } GRADIENT; +typedef struct _FILTER +{ + U8 type; +} FILTER; + +typedef struct _FILTERLIST +{ + int num; + FILTER*filter[8]; +} FILTERLIST; + typedef struct _TAG // NEVER access a Tag-Struct directly ! { U16 id; U8 * data; @@ -210,6 +221,7 @@ U32 swf_GetU32(TAG * t); void swf_GetRGB(TAG * t, RGBA * col); void swf_GetRGBA(TAG * t, RGBA * col); void swf_GetGradient(TAG * t, GRADIENT * gradient, char alpha); +void swf_FreeGradient(GRADIENT* gradient); char* swf_GetString(TAG*t); int swf_SetU8(TAG * t,U8 v); // resets Bitcount int swf_SetU16(TAG * t,U16 v); @@ -222,6 +234,11 @@ int swf_GetRect(TAG * t,SRECT * r); int swf_GetMatrix(TAG * t,MATRIX * m); int swf_GetCXForm(TAG * t,CXFORM * cx,U8 alpha); +double swf_GetFixed(TAG * t); +void swf_SetFixed(TAG * t, double f); +float swf_GetFixed8(TAG * t); +void swf_SetFixed8(TAG * t, float f); + //int swf_SetPoint(TAG * t,SPOINT * p); // resets Bitcount int swf_SetRect(TAG * t,SRECT * r); int swf_SetMatrix(TAG * t,MATRIX * m); @@ -300,8 +317,19 @@ SRECT swf_TurnRect(SRECT r, MATRIX* m); #define ST_VIDEOFRAME 61 #define ST_DEFINEFONTINFO2 62 #define ST_MX4 63 /*(?) */ +#define ST_ENABLEDEBUGGER2 64 /* version 8 */ #define ST_SCRIPTLIMITS 65 /* version 7- u16 maxrecursedepth, u16 scripttimeoutseconds */ #define ST_SETTABINDEX 66 /* version 7- u16 depth(!), u16 tab order value */ +#define ST_FILEATTRIBUTES 69 /* version 8 (required)- */ +#define ST_PLACEOBJECT3 70 /* version 8 */ +#define ST_IMPORTASSETS2 71 /* version 8 */ +#define ST_DEFINEFONTALIGNZONES 73 /* version 8 */ +#define ST_CSMTEXTSETTINGS 74 /* version 8 */ +#define ST_DEFINEFONT3 75 /* version 8 */ +#define ST_METADATA 77 /* version 8 */ +#define ST_DEFINESCALINGGRID 78 /* version 8 */ +#define ST_DEFINESHAPE4 83 /* version 8 */ +#define ST_DEFINEMORPHSHAPE2 84 /* version 8 */ /* custom tags- only valid for swftools */ #define ST_REFLEX 777 /* to identify generator software */ @@ -584,6 +612,7 @@ void swf_DumpHeader(FILE * f,SWF * swf); void swf_DumpMatrix(FILE * f,MATRIX * m); void swf_DumpTag(FILE * f,TAG * t); void swf_DumpSWF(FILE * f,SWF*swf); +void swf_DumpGradient(FILE* f, GRADIENT*gradient); char* swf_TagGetName(TAG*tag); void swf_DumpFont(SWFFONT * font); @@ -878,8 +907,11 @@ void action_fixjump(ActionMarker m1, ActionMarker m2); // The following 3 routines only use placeobject2: +extern char*blendModeNames[]; + int swf_ObjectPlace(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * name); int swf_ObjectPlaceClip(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * name, U16 clipaction); +int swf_ObjectPlaceBlend(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * name, U8 blendmode); int swf_ObjectMove(TAG * t,U16 depth,MATRIX * m,CXFORM * cx); typedef struct _SWFPLACEOBJECT { @@ -892,6 +924,8 @@ typedef struct _SWFPLACEOBJECT { U8*name; U16 clipdepth; ActionTAG* actions; + U8 blendmode; + FILTERLIST*filters; } SWFPLACEOBJECT; void swf_SetPlaceObject(TAG * t,SWFPLACEOBJECT* obj); @@ -951,6 +985,75 @@ void swf_Render_AddImage(RENDERBUF*buf, U16 id, RGBA*img, int width, int height) void swf_Render_ClearCanvas(RENDERBUF*dest); void swf_Render_Delete(RENDERBUF*dest); +// swffilter.c + +#define FILTERTYPE_DROPSHADOW 0 +#define FILTERTYPE_BLUR 1 +#define FILTERTYPE_GLOW 2 +#define FILTERTYPE_BEVEL 3 +#define FILTERTYPE_GRADIENTGLOW 4 +#define FILTERTYPE_CONVOLUTION 5 +#define FILTERTYPE_COLORMATRIX 6 +#define FILTERTYPE_GRADIENTBEVEL 7 + +extern char*filtername[]; + +typedef struct _FILTER_GRADIENTGLOW { + U8 type; + GRADIENT*gradient; + double blurx; + double blury; + double angle; + double distance; + float strength; + char innershadow; + char knockout; + char composite; + char ontop; + int passes; +} FILTER_GRADIENTGLOW; + +typedef struct _FILTER_DROPSHADOW { + U8 type; + RGBA color; + double blurx; + double blury; + double angle; + double distance; + float strength; + char innershadow; + char knockout; + char composite; + int passes; +} FILTER_DROPSHADOW; + +typedef struct _FILTER_BEVEL { + U8 type; + RGBA shadow; + RGBA highlight; + double blurx; + double blury; + double angle; + double distance; + float strength; + char innershadow; + char knockout; + char composite; + char ontop; + int passes; +} FILTER_BEVEL; + +typedef struct _FILTER_BLUR { + U8 type; + double blurx; + double blury; + int passes; +} FILTER_BLUR; + +void swf_SetFilter(TAG*tag, FILTER*f); +FILTER*swf_GetFilter(TAG*tag); +FILTER*swf_NewFilter(U8 type); + #ifdef __cplusplus } #endif