// Copyright © 1999 Middlesoft, Inc. All rights reserved. // First Created By Lee Thomason. // First Created On 09/08/1999. // Last Modified On 11/09/1999. /**************************************************************************************** File Summary: FCT.h This header-file contains the declarations of the low-level Control-Tag related classes: 1) class FCT; 2) all the derived classes of class FCT: class FCTDoAction; class FCTFrameLabel; class FCTPlaceObject; class FCTPlaceObject2; class FCTProtect; class FCTRemoveObject; class FCTRemoveObject2; class FCTSetBackgroundColor; class FCTShowFrame; class FCTStartSound; ****************************************************************************************/ #ifdef WIN32 // added from DV #pragma warning(push) #pragma warning(disable : 4786) #pragma warning(disable : 4251) #endif #include "tcommon.h" #undef DVAPI #undef DVVAR #ifdef TNZCORE_EXPORTS #define DVAPI DV_EXPORT_API #define DVVAR DV_EXPORT_VAR #else #define DVAPI DV_IMPORT_API #define DVVAR DV_IMPORT_VAR #endif #ifndef _F_C_T_H_ #define _F_C_T_H_ #include "Macromedia.h" #include "FObj.h" #include "FAction.h" #include "FPrimitive.h" class FCXForm; class FCXFormWAlpha; class FSoundInfo; // A "control tag" type of flash object class DVAPI FCT : public FObj { public: virtual ~FCT() {} virtual void WriteToSWFStream(FSWFStream * /*_SWFStream*/) {} }; // flash object that directs the flash player to complete a given set of actions at frame completion class DVAPI FCTDoAction : public FCT { public: FCTDoAction(); virtual ~FCTDoAction(); void AddAction(FActionRecord *_actionRecord); virtual void WriteToSWFStream(FSWFStream *_SWFStream); private: std::list actionRecordList; }; // Associates a label with the frame. This label can then be used // in the Go to Label Action. class DVAPI FCTFrameLabel : public FCT { public: FCTFrameLabel(FString *_frameName); virtual ~FCTFrameLabel(); virtual void WriteToSWFStream(FSWFStream *_SWFStream); private: FString *frameName; }; // a flash object that directs the player to add an object to the display list (flash 1.0) class DVAPI FCTPlaceObject : public FCT { public: // if no color transform then _colorTransform argument must be null FCTPlaceObject(U16 _characterID, U16 _depth, FMatrix *_matrix, // always present FCXForm *_colorTransform); // NULL if there is not a color transform virtual ~FCTPlaceObject(); virtual void WriteToSWFStream(FSWFStream *_SWFStream); private: U16 characterID; U16 depth; FMatrix *matrix; FCXForm *colorTransform; }; class DVAPI FCTPlaceObject2 : public FCT { public: // if a certain flag is not true, you must provide a NULL value for its associated argument(s) FCTPlaceObject2(U16 _hasClipDepth, /*DM*/ U16 _hasRatio, U16 _hasCharID, U16 _hasMove, U16 _depth, U16 _characterID, FMatrix *_matrix, // NULL if the object does not have a matrix FCXFormWAlpha *_colorTransform, // NULL if there is no color transform U16 _ratio, FString *_name, // NULL if there is no name U16 _clipDepth); /*DM*/ //now is possible to give a clip action // if a certain flag is not true, you must provide a NULL value for its associated argument(s) FCTPlaceObject2(U16 _hasClipAction, U16 _hasClipDepth, /*DM*/ U16 _hasRatio, U16 _hasCharID, U16 _hasMove, U16 _depth, U16 _characterID, FMatrix *_matrix, // NULL if the object does not have a matrix FCXFormWAlpha *_colorTransform, // NULL if there is no color transform U16 _ratio, FString *_name, // NULL if there is no name U16 _clipDepth, FClipAction *_clipAction); /*DM*/ FCTPlaceObject2(const FCTPlaceObject2 &_obj); void SetParameters(U16 _hasClipDepth, /*DM*/ U16 _hasRatio, U16 _hasCharID, U16 _hasMove, U16 _depth, U16 _characterID, FMatrix *_matrix, // NULL if the object does not have a matrix FCXFormWAlpha *_colorTransform, // NULL if there is no color transform U16 _ratio, FString *_name, // NULL if there is no name U16 _clipDepth); /*DM*/ // Used to fix the high level manager depth sorting problem. int GetDepth() { return depth; } void SetDepth(int d) { depth = d; } virtual ~FCTPlaceObject2(); virtual void WriteToSWFStream(FSWFStream *_SWFStream); U32 IsPlaceObject(); int GetPlacedId(); std::string GetName() { return name ? name->GetString() : string(); } void SetId(U16 id); void ChangePlacedId(U16 id); void SetMatrix(FMatrix *matrix); void ApplyMatrix(const FMatrix &_matrix) { if (matrix) (*matrix) = (*matrix) * _matrix; else matrix = new FMatrix(_matrix); } private: //flags U16 hasClipAction; U16 hasClipDepth; /*DM*/ U16 hasRatio; U16 hasCharID; U16 hasMove; U16 depth; U16 characterID; FMatrix *matrix; FCXFormWAlpha *colorTransform; U16 ratio; FString *name; U16 clipDepth; /*DM*/ FClipAction *clipAction; }; // a flash control tag object which marks a SWF movie as uneditable class DVAPI FCTProtect : public FCT { public: FCTProtect(); virtual void WriteToSWFStream(FSWFStream *_SWFStream); }; // a Flash control tag object which indicates to the flash player to remove an object from the display list (flash 1.0) class DVAPI FCTRemoveObject : public FCT { public: FCTRemoveObject(U16 _characterID, U16 _depth); virtual void WriteToSWFStream(FSWFStream *_SWFStream); // Used to fix the high level manager depth sorting problem. int GetDepth() { return depth; } void SetDepth(int d) { depth = d; } private: U16 characterID; U16 depth; }; // a Flash control tag object which indicates to the flash player to remove an object from the display list (flash 1.0) class DVAPI FCTRemoveObject2 : public FCT { public: FCTRemoveObject2(U16 _depth); virtual void WriteToSWFStream(FSWFStream *_SWFStream); private: U16 depth; }; // A flash object which sets a movie's background color class DVAPI FCTSetBackgroundColor : public FCT { public: FCTSetBackgroundColor(FColor *_color); virtual ~FCTSetBackgroundColor(); virtual void WriteToSWFStream(FSWFStream *_SWFStream); private: FColor *color; }; class DVAPI FCTUnparsedTag : public FCT { public: FCTUnparsedTag(U16 _tagId, U32 _lenght, U8 *_data); virtual ~FCTUnparsedTag(); virtual void WriteToSWFStream(FSWFStream *_SWFStream); USHORT GetID(); void SetID(USHORT id); private: U8 *data; U32 lenght; U16 tagId; }; //a control tag that indicates end of the current frame class DVAPI FCTShowFrame : public FCT { public: FCTShowFrame(); U32 IsShowFrame(); virtual void WriteToSWFStream(FSWFStream *_SWFStream); }; // A flash object that instructs flash player to start a sound class DVAPI FCTStartSound : public FCT { public: FCTStartSound(U16 _soundID, FSoundInfo *_soundInfo); virtual ~FCTStartSound(); virtual void WriteToSWFStream(FSWFStream *_SWFStream); private: U16 soundID; FSoundInfo *soundInfo; }; #ifdef WIN32 // added from DV #pragma warning(pop) #endif #endif