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(DYNAMICLINEART_H)
00024 #define DYNAMICLINEART_H
00025
00026 #include "Visible.h"
00027 #include "BaseActions.h"
00028
00029 class MHDynamicLineArt;
00030 class MHDLADisplay;
00031
00032 class MHDynamicLineArt : public MHLineArt
00033 {
00034 public:
00035 MHDynamicLineArt();
00036 virtual ~MHDynamicLineArt();
00037 virtual const char *ClassName() { return "DynamicLineArt"; }
00038 virtual void Initialise(MHParseNode *p, MHEngine *engine);
00039 virtual void PrintMe(FILE *fd, int nTabs) const;
00040 virtual void Preparation(MHEngine *engine);
00041
00042
00043 virtual void Display(MHEngine *d);
00044
00045 virtual QRegion GetOpaqueArea();
00046
00047
00048 virtual void SetBoxSize(int nWidth, int nHeight, MHEngine *engine);
00049
00050
00051 virtual void Clear();
00052
00053 virtual void SetFillColour(const MHColour &colour, MHEngine *);
00054 virtual void SetLineColour(const MHColour &colour, MHEngine *);
00055 virtual void SetLineWidth(int nWidth);
00056 virtual void SetLineStyle(int nStyle);
00057
00058 virtual void GetLineWidth(MHRoot *pResult) { pResult->SetVariableValue(m_nLineWidth); }
00059 virtual void GetLineStyle(MHRoot *pResult) { pResult->SetVariableValue(m_LineStyle); }
00060 virtual void GetLineColour(MHRoot *pResult);
00061 virtual void GetFillColour(MHRoot *pResult);
00062 virtual void DrawArcSector(bool fIsSector, int x, int y, int width, int height, int start, int arc, MHEngine *);
00063 virtual void DrawLine(int x1, int y1, int x2, int y2, MHEngine *);
00064 virtual void DrawOval(int x1, int y1, int width, int height, MHEngine *);
00065 virtual void DrawRectangle(int x1, int y1, int x2, int y2, MHEngine *);
00066 virtual void DrawPoly(bool fIsPolygon, int nPoints, const int *xArray, const int *yArray, MHEngine *);
00067
00068 protected:
00069 MHDLADisplay *m_picture;
00070 };
00071
00072
00073
00074 class MHGetLineWidth: public MHActionObjectRef
00075 {
00076 public:
00077 MHGetLineWidth(): MHActionObjectRef(":GetLineWidth") {}
00078 virtual void CallAction(MHEngine *, MHRoot *pTarget, MHRoot *pResult) { pTarget->GetLineWidth(pResult); }
00079 };
00080
00081
00082 class MHGetLineStyle: public MHActionObjectRef
00083 {
00084 public:
00085 MHGetLineStyle(): MHActionObjectRef(":GetLineStyle") {}
00086 virtual void CallAction(MHEngine *, MHRoot *pTarget, MHRoot *pResult) { pTarget->GetLineStyle(pResult); }
00087 };
00088
00089 class MHGetLineColour: public MHActionObjectRef
00090 {
00091 public:
00092 MHGetLineColour(): MHActionObjectRef(":GetLineColour") {}
00093 virtual void CallAction(MHEngine *, MHRoot *pTarget, MHRoot *pResult) { pTarget->GetLineColour(pResult); }
00094 };
00095
00096 class MHGetFillColour: public MHActionObjectRef
00097 {
00098 public:
00099 MHGetFillColour(): MHActionObjectRef(":GetFillColour") {}
00100 virtual void CallAction(MHEngine *, MHRoot *pTarget, MHRoot *pResult) { pTarget->GetLineWidth(pResult); }
00101 };
00102
00103 class MHClear: public MHElemAction {
00104 public:
00105 MHClear(): MHElemAction(":Clear") {}
00106 virtual void Perform(MHEngine *engine) { Target(engine)->Clear(); }
00107 };
00108
00109 class MHDrawArcSector: public MHActionInt6 {
00110 public:
00111 MHDrawArcSector(const char *name, bool fIsSector): MHActionInt6(name), m_fIsSector(fIsSector) {}
00112 virtual void CallAction(MHEngine *engine, MHRoot *pTarget, int nArg1, int nArg2, int nArg3, int nArg4, int nArg5, int nArg6)
00113 { pTarget->DrawArcSector(m_fIsSector, nArg1, nArg2, nArg3, nArg4, nArg5, nArg6, engine); }
00114 protected:
00115 bool m_fIsSector;
00116 };
00117
00118 class MHDrawLine: public MHActionInt4 {
00119 public:
00120 MHDrawLine(): MHActionInt4(":DrawLine") {}
00121 virtual void CallAction(MHEngine *engine, MHRoot *pTarget, int nArg1, int nArg2, int nArg3, int nArg4)
00122 { pTarget->DrawLine(nArg1, nArg2, nArg3, nArg4, engine); }
00123 };
00124
00125 class MHDrawOval: public MHActionInt4 {
00126 public:
00127 MHDrawOval(): MHActionInt4(":DrawOval") {}
00128 virtual void CallAction(MHEngine *engine, MHRoot *pTarget, int nArg1, int nArg2, int nArg3, int nArg4)
00129 { pTarget->DrawOval(nArg1, nArg2, nArg3, nArg4, engine); }
00130 };
00131
00132 class MHDrawRectangle: public MHActionInt4 {
00133 public:
00134 MHDrawRectangle(): MHActionInt4(":DrawRectangle") {}
00135 virtual void CallAction(MHEngine *engine, MHRoot *pTarget, int nArg1, int nArg2, int nArg3, int nArg4)
00136 { pTarget->DrawRectangle(nArg1, nArg2, nArg3, nArg4, engine); }
00137 };
00138
00139 class MHDrawPoly: public MHElemAction {
00140 public:
00141 MHDrawPoly(const char *name, bool fIsPolygon): MHElemAction(name), m_fIsPolygon(fIsPolygon) {}
00142 virtual void Initialise(MHParseNode *p, MHEngine *engine);
00143 virtual void Perform(MHEngine *engine);
00144 protected:
00145 virtual void PrintArgs(FILE *fd, int nTabs) const;
00146 bool m_fIsPolygon;
00147 MHOwnPtrSequence<MHPointArg> m_Points;
00148 };
00149
00150 #endif