diff options
author | Pixel <pixel@nobis-crew.org> | 2009-11-04 11:56:41 -0800 |
---|---|---|
committer | Pixel <pixel@nobis-crew.org> | 2009-11-04 11:59:33 -0800 |
commit | d577d991b97ae2b5ee1af23641bcffc3f83af5b2 (patch) | |
tree | 590639d50205d1bcfaff2a7d2dc6ebf3f373c7ed /iup/srcpplot/iuppplot.hpp |
Initial import. Contains the im, cd and iup librairies, and a "working" Makefile for them under linux.
Diffstat (limited to 'iup/srcpplot/iuppplot.hpp')
-rwxr-xr-x | iup/srcpplot/iuppplot.hpp | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/iup/srcpplot/iuppplot.hpp b/iup/srcpplot/iuppplot.hpp new file mode 100755 index 0000000..62e3db7 --- /dev/null +++ b/iup/srcpplot/iuppplot.hpp @@ -0,0 +1,137 @@ +/* + * IupPPlot component - private include file + * + * Description : A component, derived from PPlot and IUP canvas + * Remark : Depend on libs IUP, CD, IUPCD + */ + + +#ifndef __IUP_PPLOT_H +#define __IUP_PPLOT_H + +/* + PPainterIup class definition +*/ + + +class PostPainterCallbackIup: public PDrawer +{ + public: + PostPainterCallbackIup(PPlot &inPPlot, Ihandle* inHandle); + virtual bool Draw (Painter &inPainter); + protected: + Ihandle *_ih; // IUP handle +}; + +class PrePainterCallbackIup: public PDrawer +{ + public: + PrePainterCallbackIup(PPlot &inPPlot, Ihandle* inHandle); + virtual bool Draw (Painter &inPainter); + protected: + Ihandle *_ih; // IUP handle +}; + +class PDeleteInteractionIup: public PDeleteInteraction +{ + public: + PDeleteInteractionIup(PPlot &inPPlot, Ihandle* inHandle): + PDeleteInteraction(inPPlot), _ih(inHandle) {} + + protected: + Ihandle *_ih; // IUP handle + bool DeleteNotify(int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData); +}; + +class PSelectionInteractionIup: public PSelectionInteraction +{ + public: + PSelectionInteractionIup(PPlot &inPPlot, Ihandle* inHandle): + PSelectionInteraction(inPPlot), _ih(inHandle) {} + + protected: + Ihandle *_ih; // IUP handle + bool SelectNotify(int inIndex, int inSampleIndex, PlotDataBase *inXData, PlotDataBase *inYData, bool inSelect); +}; + +class PEditInteractionIup: public PEditInteraction +{ + public: + PEditInteractionIup (PPlot &inPPlot, Ihandle* inHandle): + PEditInteraction(inPPlot), _ih(inHandle) {} + + virtual bool Impl_HandleKeyEvent (const PKeyEvent &inEvent); + virtual bool Impl_Calculate (Painter &inPainter, PPlot& inPPlot); + + protected: + Ihandle *_ih; // IUP handle + void HandleCursorKey (const PlotDataSelection *inPlotDataSelection, PlotDataBase *inXData, PlotDataBase *inYData, int inIndex); + bool EditNotify(int inIndex, int inSampleIndex, float inX, float inY, float *inNewX, float *inNewY); +}; + +class InteractionContainerIup: public InteractionContainer +{ + public: + InteractionContainerIup(PPlot &inPPlot, Ihandle* inHandle); + + PZoomInteraction mZoomInteraction; + PSelectionInteractionIup mSelectionInteraction; + PEditInteractionIup mEditInteraction; + PDeleteInteractionIup mDeleteInteraction; + PCrosshairInteraction mCrosshairInteraction; + + PostPainterCallbackIup mPostPainterCallback; + PrePainterCallbackIup mPrePainterCallback; +}; + +class PPainterIup: public Painter +{ + public: + PPainterIup(Ihandle *ih); + virtual ~PPainterIup(); + cdCanvas *_cdcanvas; /* iup drawing surface */ + cdCanvas *_cddbuffer; /* double buffer drawing surface */ + PPlot _plot; /* plot data holder */ + int _redraw; /* must update the double buffer before flush */ + int _currentDataSetIndex; /* dataset index used for DS_ attributes in SetAttribute and GetAttribute */ + + // Called from C functions + void Draw(int force); // paint the stuff + void Resize(); // called when resizing + void MouseButton(int btn, int stat, int x, int y, char *r); // mouse event + void MouseMove(int x, int y); // mouse event + void KeyPress(int c, int press); // keyboard event + void DrawTo(cdCanvas *usrCnv); // send plot to some user defined device + + protected: + InteractionContainer *_InteractionContainer; + Ihandle *_ih; // IUP handle + short int _mouseDown; + short int _mouse_ALT; + short int _mouse_SHIFT; + short int _mouse_CTRL; + + PPainterIup() { }; + + virtual void FillArrow(int inX1, int inY1, int inX2, int inY2, int inX3, int inY3); + virtual void DrawLine(float inX1, float inY1, float inX2, float inY2); + virtual void FillRect(int inX, int inY, int inW, int inH); + virtual void InvertRect(int inX, int inY, int inW, int inH); + virtual void SetClipRect(int inX, int inY, int inW, int inH); + virtual long GetWidth() const; + virtual long GetHeight() const; + virtual void SetLineColor(int inR, int inG, int inB); + virtual void SetFillColor(int inR, int inG, int inB); + virtual long CalculateTextDrawSize(const char *inString); + virtual long GetFontHeight() const; + virtual void DrawText(int inX, int inY, short align, const char *inString); + virtual void DrawRotatedText(int inX, int inY, float inDegrees, + short align, const char *inString); + virtual void SetStyle(const PStyle &inStyle); + + private: + +}; // PPainterIup + + +#endif /* #ifndef __IUP_PPLOT_HPP */ |