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