X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=src%2Fswfc-history.h;h=335089216c6eb973055661e1d19977505d56dfd2;hp=5ced477d53876e31b6b985c7038bd2c7a8bd3123;hb=70dd52c811db9f1a38a472a37135986accc4c06e;hpb=3ef17c4cee41231e1eed731c08381d3ddf0c8d1a diff --git a/src/swfc-history.h b/src/swfc-history.h index 5ced477..3350892 100644 --- a/src/swfc-history.h +++ b/src/swfc-history.h @@ -22,18 +22,18 @@ #ifndef __HISTORY_H #define __HISTORY_Y -#include "types.h" -#include "rfxswf.h" -#include "q.h" -#include "feedback.h" -#include "interpolation.h" +#include "../lib/types.h" +#include "../lib/rfxswf.h" +#include "../lib/q.h" +#include "swfc-feedback.h" +#include "swfc-interpolation.h" enum { CF_PUT = 1, CF_CHANGE = 2, - CF_QCHANGE = 3, - CF_ARCCHANGE = 4, + CF_SCHANGE = 3, + CF_SWEEP = 4, CF_JUMP = 5 }; @@ -49,55 +49,90 @@ enum #define SF_SHEAR 0x0200 #define SF_PIVOT 0x0400 #define SF_PIN 0x0800 -#define SF_BLEND 0x01000 -#define SF_FILTER 0x02000 +#define SF_BLEND 0x1000 +#define SF_FILTER 0x2000 +#define SF_ALL 0x3fff +#define IF_FIXED_ALIGNMENT 0x0001 -typedef struct _change +FILTER* noFilters; +FILTER_BLUR* noBlur; +FILTER_BEVEL* noBevel; +FILTER_DROPSHADOW* noDropshadow; +FILTER_GRADIENTGLOW* noGradientGlow; + +typedef struct _spline +{ + float a, b, c, d; +} spline_t; + +typedef struct _arc +{ + float r, angle, delta_angle, cX, cY; + int X; // boolean: 1 if this is for x; 0 if this is for y; +} arc_t; + +typedef struct _flagparms +{ + float pathAngle, instanceAngle; +} flagparams_t; + +typedef struct _state { U16 frame; float value; int function; interpolation_t* interpolation; - struct _change* next; -} change_t; - -change_t* change_new(U16 frame, int function, float value, interpolation_t* inter); -void change_free(change_t* change); -void change_init(change_t* change); -void change_append(change_t* first, change_t* newChange); -float change_value(change_t* first, U16 frame); - -typedef struct _changeFilter + spline_t spline; + arc_t arc; + flagparams_t params; + struct _state* next; +} state_t; + +state_t* state_new(U16 frame, int function, float value, interpolation_t* inter); +void state_free(state_t* state); +void state_init(state_t* state); +state_t* state_at(state_t* state, U16 frame); +void state_append(state_t* state, state_t* newState); +void state_insert(state_t* state, state_t* newState); +float state_value(state_t* first, float frame); +float state_tangent(state_t* modification, U16 frame, int tangent); + +typedef struct _filterState { U16 frame; - FILTER* value; + FILTERLIST* value; int function; interpolation_t* interpolation; - struct _changeFilter* next; -} changeFilter_t; + struct _filterState* next; +} filterState_t; -changeFilter_t* changeFilter_new(U16 frame, int function, FILTER* value, interpolation_t* inter); -void changeFilter_free(changeFilter_t* change); -void changeFilter_init(changeFilter_t* change); -void changeFilter_append(changeFilter_t* first, changeFilter_t* newChange); -FILTER* changeFilter_value(changeFilter_t* first, U16 frame); +filterState_t* filterState_new(U16 frame, int function, FILTERLIST* value, interpolation_t* inter); +void filterState_free(filterState_t* change); +void filterState_init(filterState_t* change); +void filterState_append(filterState_t* first, filterState_t* newChange); +FILTERLIST* filterState_value(filterState_t* first, U16 frame); typedef struct _history { - U16 firstFrame; + U16 firstFrame, lastFrame; TAG* firstTag; - dictionary_t* changes; + dict_t* states; } history_t; history_t* history_new(); void history_free(history_t* past); void history_init(history_t* past); void history_begin(history_t* past, char* parameter, U16 frame, TAG* tag, float value); -void history_beginFilter(history_t* past, U16 frame, TAG* tag, FILTER* value); +void history_beginFilter(history_t* past, U16 frame, TAG* tag, FILTERLIST* value); void history_remember(history_t* past, char* parameter, U16 frame, int function, float value, interpolation_t* inter); -void history_rememberFilter(history_t* past, U16 frame, int function, FILTER* value, interpolation_t* inter); +void history_rememberSweep(history_t* past, U16 frame, float x, float y, float r, int clockwise, int short_arc, interpolation_t* inter); +void history_rememberFilter(history_t* past, U16 frame, int function, FILTERLIST* value, interpolation_t* inter); +void history_processFlags(history_t* past); +int history_change(history_t* past, U16 frame, char* parameter); float history_value(history_t* past, U16 frame, char* parameter); -FILTER* history_valueFilter(history_t* past, U16 frame); +float history_rotateValue(history_t* past, U16 frame); +int history_changeFilter(history_t* past, U16 frame); +FILTERLIST* history_filterValue(history_t* past, U16 frame); #endif