00001 #ifndef SHAPE_H 00002 #define SHAPE_H 00003 00004 #include <afxwin.h> 00005 #include "stdafx.h" 00006 00007 class VPoint; 00008 00009 #include "GenericProperty.h" 00010 #include "Color.h" 00011 #include "Point.h" 00012 00013 #include "Properties.h" 00014 00015 #include "ScreenState.h" 00016 #include "AppState.h" 00017 00018 #include "MoveTransform.h" 00019 #include "RotateTransform.h" 00020 #include "ScaleTransform.h" 00021 00022 #include "Flash\F3SDK.h" 00023 00024 00026 class VShape { 00027 public: 00028 00029 struct MouseEvent { 00031 VPoint ptstart; 00033 VPoint ptcurrent; 00034 00036 VPoint ptlast; 00037 00039 VShape *operand; 00040 00042 int internaldata; 00043 00045 bool changedselection; 00046 00047 }; 00048 00049 00050 00051 protected: 00052 00053 00055 VPoint ptmin; 00056 00058 VPoint ptmax; 00059 00061 VPoint ptmidleft; 00062 00064 VPoint ptmidright; 00065 00066 00068 CDC *pDC; 00069 00071 int currentframe; 00072 00073 00074 public: 00076 bool m_bActive; 00077 00078 VMoveTransform move; 00079 VRotateTransform rotate; 00080 VScaleTransform scale; 00081 00083 VProperty_LineWidth linewidth; 00084 00086 VProperty_ColorFill colorfill; 00087 00089 VProperty_ColorLine colorline; 00090 00092 VProperty_Opacity opacity; 00093 00094 00095 00096 VShape(); 00097 VShape(VShape*); 00098 virtual ~VShape(); 00099 00101 virtual VShape* Clone(); 00102 00104 00105 00107 virtual void Draw(ScreenState*, AppState *pApp); 00108 00110 virtual void DrawWhileDragged(MouseEvent *, ScreenState*, AppState *); 00111 00113 00114 00116 00117 00119 virtual U16 FlashSDKPushFrame(FObjCollection *objsMovie, U16 uId, int nFrame, int nStartFrame, int nEndFrame, int nDepth, ScreenState *pState); 00120 00122 virtual FShapeRec* FlashSDKCreateShapeRecordForThisPoint(int* pnPoint, VPoint* ptCurrent); 00123 00125 virtual bool FlashSDKShouldIExportThisShape(int nStartFrame, int nEndFrame, ScreenState *pState); 00126 00128 FMatrix* FlashSDKCreateTransformationMatrix(int nFrame, int nStartFrame, int nEndFrame); 00129 00131 FRect* FlashSDKCreateBoundsRect( int nFrame ); 00132 00134 bool FlashSDKDoesThisFrameWantAMorphShape(int nCurrentFrame, int nStartFrame, int nEndFrame); 00135 00137 bool FlashSDKShouldIGiveThisFrameAMorphShape(int nCurrentFrame, int nStartFrame, int nEndFrame); 00138 00140 int FlashSDKFindLastMorphFrame(int nCurrentFrame, int nStartFrame, int nEndFrame); 00141 00143 int FlashSDKFindNextMorphFrame(int nCurrentFrame, int nStartFrame, int nEndFrame); 00144 00146 00147 00149 00150 00152 virtual bool OnClick(MouseEvent *e, ScreenState*, AppState*); 00153 00155 virtual bool OnRightClick(MouseEvent *e, ScreenState*, AppState*); 00156 00158 virtual bool OnSelect(); 00159 00161 virtual bool OnDeSelect(); 00162 00164 virtual bool OnDrag(MouseEvent *e, ScreenState*, AppState*); 00165 00167 virtual VShape* OnDragCompleted(MouseEvent *e, ScreenState*, AppState*) {return NULL;} 00168 00169 00171 virtual void OnFrameChanged(int frame); 00172 00174 00175 00177 virtual void UpdateControlPoints( ); 00178 00179 00181 virtual bool InBounds( CPoint *, ScreenState *pState ) const; 00182 00184 virtual bool InBounds( RECT *, ScreenState *pState ) const; 00185 00186 00188 00189 00191 virtual VGenericProperty* GetProperty( int index ); 00192 00194 virtual int PropertyCount() const; 00195 00197 00200 00201 00203 virtual VPoint GetPoint ( int index ) const; 00204 00206 virtual void MovePoint ( int index, int dx, int dy); 00207 00209 virtual void SetPoint ( int index, int x, int y); 00210 00212 virtual unsigned int PointCount () const; 00214 00216 void CreateBlankKeyFrame( int frame ); 00217 00219 virtual void SetDC (CDC*); 00220 00222 virtual CDC* GetDC (); 00223 00224 00226 int DeterminePoint(VPoint p, ScreenState* pState, int* pDist = NULL) const; 00227 00229 int DeterminePointOnLine(VPoint p, ScreenState* pState, int* pDist = NULL) const; 00230 00231 00233 virtual string Identify() const { return string(""); } 00234 00235 }; 00236 00237 #endif