00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined(ROOTCLASS_H)
00024 #define ROOTCLASS_H
00025
00026 #include "BaseClasses.h"
00027 #include "BaseActions.h"
00028 class MHParseNode;
00029 class MHLink;
00030 class MHIngredient;
00031 class MHEngine;
00032
00033 enum EventType { EventIsAvailable = 1, EventContentAvailable, EventIsDeleted, EventIsRunning, EventIsStopped,
00034 EventUserInput, EventAnchorFired, EventTimerFired, EventAsyncStopped, EventInteractionCompleted,
00035 EventTokenMovedFrom, EventTokenMovedTo, EventStreamEvent, EventStreamPlaying, EventStreamStopped,
00036 EventCounterTrigger, EventHighlightOn, EventHighlightOff, EventCursorEnter, EventCursorLeave,
00037 EventIsSelected, EventIsDeselected, EventTestEvent, EventFirstItemPresented, EventLastItemPresented,
00038 EventHeadItems, EventTailItems, EventItemSelected, EventItemDeselected, EventEntryFieldFull,
00039 EventEngineEvent,
00040
00041 EventFocusMoved, EventSliderValueChanged };
00042
00043 class MHRoot
00044 {
00045 public:
00046 MHRoot(): m_fAvailable(false), m_fRunning(false) {}
00047 MHRoot(const MHRoot &): m_fAvailable(false), m_fRunning(false) {}
00048 virtual ~MHRoot() {}
00049
00050 virtual void Initialise(MHParseNode *p, MHEngine *engine);
00051
00052 virtual void PrintMe(FILE *fd, int nTabs) const;
00053
00054 virtual bool IsShared() { return false; }
00055
00056
00057
00058 virtual void Preparation(MHEngine *engine);
00059
00060 virtual void Activation(MHEngine *engine);
00061
00062 virtual void Deactivation(MHEngine *engine);
00063
00064 virtual void Destruction(MHEngine *engine);
00065
00066 virtual void ContentPreparation(MHEngine *) {}
00067
00068
00069
00070 virtual MHRoot *FindByObjectNo(int n);
00071
00072
00073
00074
00075 virtual bool GetAvailabilityStatus() { return m_fAvailable; }
00076 virtual bool GetRunningStatus() { return m_fRunning; }
00077
00078
00079 virtual void SetTimer(int, bool, int , MHEngine *) { InvalidAction("SetTimer"); }
00080
00081 virtual void MakeClone(MHRoot* , MHRoot* , MHEngine *) { InvalidAction("MakeClone"); }
00082 virtual void SetInputRegister(int , MHEngine *) { InvalidAction("SetInputRegister"); }
00083
00084
00085 virtual void SetData(const MHOctetString &, MHEngine *) { InvalidAction("SetData"); }
00086 virtual void SetData(const MHContentRef &, bool , int , bool , int , MHEngine *)
00087 { InvalidAction("SetData"); }
00088 virtual void Preload(MHEngine *) { InvalidAction("Preload"); }
00089 virtual void Unload(MHEngine *) { InvalidAction("Unload"); }
00090
00091 virtual MHIngredient *Clone(MHEngine *) { InvalidAction("Clone"); return NULL; }
00092
00093
00094
00095 virtual void Run(MHEngine *) { InvalidAction("Run"); }
00096 virtual void Stop(MHEngine *) { InvalidAction("Stop"); }
00097
00098
00099 virtual void TestVariable(int , const MHUnion &, MHEngine *) { InvalidAction("TestVariable"); }
00100 virtual void GetVariableValue(MHUnion &, MHEngine *) { InvalidAction("GetVariableValue"); }
00101 virtual void SetVariableValue(const MHUnion &) { InvalidAction("SetVariableValue"); }
00102
00103
00104 virtual void GetTextData(MHRoot * , MHEngine *) { InvalidAction("GetTextData"); }
00105 virtual void SetBackgroundColour(const MHColour &, MHEngine *) { InvalidAction("SetBackgroundColour"); }
00106 virtual void SetTextColour(const MHColour &, MHEngine *) { InvalidAction("SetTextColour"); }
00107 virtual void SetFontAttributes(const MHOctetString &, MHEngine *) { InvalidAction("SetFontAttributes"); }
00108
00109
00110 virtual void Activate(bool , MHEngine *) { InvalidAction("Activate/Deactivate"); }
00111
00112
00113 virtual void CallProgram(bool , const MHObjectRef &,
00114 const MHSequence<MHParameter *> &, MHEngine *) { InvalidAction("CallProgram"); }
00115
00116
00117 virtual void CallActionSlot(int, MHEngine *) { InvalidAction("CallActionSlot"); }
00118 virtual void Move(int, MHEngine *) { InvalidAction("Move"); }
00119 virtual void MoveTo(int, MHEngine *) { InvalidAction("MoveTo"); }
00120 virtual void GetTokenPosition(MHRoot * , MHEngine *) { InvalidAction("GetTokenPosition"); }
00121
00122
00123 virtual void AddItem(int , MHRoot * , MHEngine *) { InvalidAction("GetCellItem"); }
00124 virtual void DelItem(MHRoot * , MHEngine *) { InvalidAction("GetCellItem"); }
00125 virtual void GetCellItem(int , const MHObjectRef &, MHEngine *) { InvalidAction("GetCellItem"); }
00126 virtual void GetListItem(int , const MHObjectRef &, MHEngine *) { InvalidAction("GetCellItem"); }
00127 virtual void GetItemStatus(int , const MHObjectRef &, MHEngine *) { InvalidAction("GetItemStatus"); }
00128 virtual void SelectItem(int , MHEngine *) { InvalidAction("SelectItem"); }
00129 virtual void DeselectItem(int , MHEngine *) { InvalidAction("DeselectItem"); }
00130 virtual void ToggleItem(int , MHEngine *) { InvalidAction("ToggleItem"); }
00131 virtual void ScrollItems(int , MHEngine *) { InvalidAction("ScrollItems"); }
00132 virtual void SetFirstItem(int , MHEngine *) { InvalidAction("SetFirstItem"); }
00133 virtual void GetFirstItem(MHRoot * , MHEngine *) { InvalidAction("GetFirstItem"); }
00134 virtual void GetListSize(MHRoot * , MHEngine *) { InvalidAction("GetListSize"); }
00135
00136
00137 virtual void SetPosition(int , int , MHEngine *) { InvalidAction("SetPosition"); }
00138 virtual void GetPosition(MHRoot * , MHRoot * ) { InvalidAction("GetPosition"); }
00139 virtual void SetBoxSize(int , int , MHEngine *) { InvalidAction("SetBoxSize"); }
00140 virtual void GetBoxSize(MHRoot * , MHRoot * ) { InvalidAction("GetBoxSize"); }
00141 virtual void SetPaletteRef(const MHObjectRef , MHEngine *) { InvalidAction("SetPaletteRef"); }
00142 virtual void BringToFront(MHEngine *) { InvalidAction("BringToFront"); }
00143 virtual void SendToBack(MHEngine *) { InvalidAction("SendToBack"); }
00144 virtual void PutBefore(const MHRoot * , MHEngine *) { InvalidAction("PutBefore"); }
00145 virtual void PutBehind(const MHRoot * , MHEngine *) { InvalidAction("PutBehind"); }
00146 virtual void ResetPosition() { InvalidAction("ResetPosition"); }
00147
00148
00149 virtual void SetFillColour(const MHColour &, MHEngine *) { InvalidAction("SetFillColour"); }
00150 virtual void SetLineColour(const MHColour &, MHEngine *) { InvalidAction("SetLineColour"); }
00151 virtual void SetLineWidth(int , MHEngine *) { InvalidAction("SetLineWidth"); }
00152 virtual void SetLineStyle(int , MHEngine *) { InvalidAction("SetLineStyle"); }
00153
00154
00155 virtual void SetTransparency(int , MHEngine *) { InvalidAction("SetTransparency"); }
00156 virtual void ScaleBitmap(int , int , MHEngine *) { InvalidAction("ScaleBitmap"); }
00157 virtual void SetBitmapDecodeOffset(int , int , MHEngine *) { InvalidAction("SetBitmapDecodeOffset"); }
00158 virtual void GetBitmapDecodeOffset(MHRoot * , MHRoot * ) { InvalidAction("GetBitmapDecodeOffset"); }
00159
00160
00161 virtual void Clear() { InvalidAction(""); }
00162 virtual void GetLineWidth(MHRoot * ) { InvalidAction("GetLineWidth"); }
00163 virtual void GetLineStyle(MHRoot * ) { InvalidAction("GetLineStyle"); }
00164 virtual void GetLineColour(MHRoot * ) { InvalidAction("GetLineColour"); }
00165 virtual void GetFillColour(MHRoot * ) { InvalidAction("GetFillColour"); }
00166 virtual void DrawArcSector(bool , int , int , int , int , int ,
00167 int , MHEngine *) { InvalidAction("DrawArc/Sector"); }
00168 virtual void DrawLine(int , int , int , int , MHEngine *) { InvalidAction("DrawLine"); }
00169 virtual void DrawOval(int , int , int , int , MHEngine *) { InvalidAction("DrawOval"); }
00170 virtual void DrawRectangle(int , int , int , int , MHEngine *) { InvalidAction("DrawRectangle"); }
00171 virtual void DrawPoly(bool , int , const int * , const int * , MHEngine *)
00172 { InvalidAction("DrawPoly(gon/line)"); }
00173
00174
00175 virtual void ScaleVideo(int , int , MHEngine *) { InvalidAction("ScaleVideo"); }
00176 virtual void SetVideoDecodeOffset(int , int , MHEngine *) { InvalidAction("SetVideoDecodeOffset"); }
00177 virtual void GetVideoDecodeOffset(MHRoot * , MHRoot * , MHEngine *) { InvalidAction("GetVideoDecodeOffset"); }
00178 virtual void GetCounterPosition(MHRoot * , MHEngine *) { InvalidAction("GetCounterPosition"); }
00179 virtual void GetCounterMaxPosition(MHRoot * , MHEngine *) { InvalidAction("GetCounterMaxPosition"); }
00180 virtual void SetCounterPosition(int , MHEngine *) { InvalidAction("SetCounterPosition"); }
00181 virtual void SetSpeed(int , MHEngine *) { InvalidAction("SetSpeed"); }
00182
00183
00184 virtual void SetInteractionStatus(bool , MHEngine *) { InvalidAction("SetInteractionStatus"); }
00185 virtual bool GetInteractionStatus(void) { InvalidAction("GetInteractionStatus"); return false; }
00186 virtual void SetHighlightStatus(bool , MHEngine *engine) { InvalidAction("SetHighlightStatus"); }
00187 virtual bool GetHighlightStatus(void) { InvalidAction("GetHighlightStatus"); return false; }
00188
00189
00190 virtual void Step(int , MHEngine * ) { InvalidAction("Step"); }
00191 virtual void SetSliderValue(int , MHEngine * ) { InvalidAction("SetSliderValue"); }
00192 virtual int GetSliderValue(void) { InvalidAction("GetSliderValue"); return 0; }
00193 virtual void SetPortion(int , MHEngine * ) { InvalidAction("SetPortion"); }
00194 virtual int GetPortion(void) { InvalidAction("GetPortion"); return 0; }
00195
00196 virtual void SetSliderParameters(int , int , int , MHEngine * )
00197 { InvalidAction("SetSliderParameters"); }
00198
00199 protected:
00200
00201 void InvalidAction(const char *actionName);
00202 public:
00203 MHObjectRef m_ObjectReference;
00204
00205 virtual const char *ClassName() = 0;
00206 protected:
00207 bool m_fAvailable;
00208 bool m_fRunning;
00209
00210 friend class MHEngine;
00211 };
00212
00213
00214 class MHGetAvailabilityStatus: public MHElemAction
00215 {
00216 public:
00217 MHGetAvailabilityStatus(): MHElemAction(":GetAvailabilityStatus") {}
00218 virtual void Initialise(MHParseNode *p, MHEngine *engine);
00219 virtual void Perform(MHEngine *engine);
00220 protected:
00221 virtual void PrintArgs(FILE *fd, int ) const { m_ResultVar.PrintMe(fd, 0); }
00222 MHObjectRef m_ResultVar;
00223 };
00224
00225
00226 class MHGetRunningStatus: public MHActionObjectRef
00227 {
00228 public:
00229 MHGetRunningStatus(): MHActionObjectRef(":GetRunningStatus") {}
00230 virtual void CallAction(MHEngine *, MHRoot *pTarget, MHRoot *pResult) { pResult->SetVariableValue(pTarget->GetRunningStatus());}
00231 };
00232
00233 #endif