⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 basic.h

📁 wxWidgets 是一个跨平台的 GUI 框架。它给开发人员提供了统一的接口
💻 H
📖 第 1 页 / 共 2 页
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        basic.h// Purpose:     Basic OGL classes and definitions// Author:      Julian Smart// Modified by:// Created:     12/07/98// RCS-ID:      $Id: basic.h,v 1.22 2006/04/26 02:24:42 PC Exp $// Copyright:   (c) Julian Smart// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////#ifndef _OGL_BASIC_H_#define _OGL_BASIC_H_#ifndef wxUSE_DEPRECATED#define wxUSE_DEPRECATED 0#endif#if wxUSE_DEPRECATED    #include "wx/deprecated/setup.h"#endif#ifndef wxUSE_PROLOGIO    #define wxUSE_PROLOGIO 0#endif#define OGL_VERSION     2.0#ifndef DEFAULT_MOUSE_TOLERANCE#define DEFAULT_MOUSE_TOLERANCE 3#endif// Key identifiers#define KEY_SHIFT 1#define KEY_CTRL  2// Arrow styles#define ARROW_NONE         0#define ARROW_END          1#define ARROW_BOTH         2#define ARROW_MIDDLE       3#define ARROW_START        4// Control point types// Rectangle and most other shapes#define CONTROL_POINT_VERTICAL   1#define CONTROL_POINT_HORIZONTAL 2#define CONTROL_POINT_DIAGONAL   3// Line#define CONTROL_POINT_ENDPOINT_TO 4#define CONTROL_POINT_ENDPOINT_FROM 5#define CONTROL_POINT_LINE       6// Types of formatting: can be combined in a bit list#define FORMAT_NONE           0                                // Left justification#define FORMAT_CENTRE_HORIZ   1                                // Centre horizontally#define FORMAT_CENTRE_VERT    2                                // Centre vertically#define FORMAT_SIZE_TO_CONTENTS 4                                // Resize shape to contents// Shadow mode#define SHADOW_NONE           0#define SHADOW_LEFT           1#define SHADOW_RIGHT          2/* * Declare types * */#define SHAPE_BASIC           wxTYPE_USER + 1#define SHAPE_RECTANGLE       wxTYPE_USER + 2#define SHAPE_ELLIPSE         wxTYPE_USER + 3#define SHAPE_POLYGON         wxTYPE_USER + 4#define SHAPE_CIRCLE          wxTYPE_USER + 5#define SHAPE_LINE            wxTYPE_USER + 6#define SHAPE_DIVIDED_RECTANGLE wxTYPE_USER + 8#define SHAPE_COMPOSITE       wxTYPE_USER + 9#define SHAPE_CONTROL_POINT   wxTYPE_USER + 10#define SHAPE_DRAWN           wxTYPE_USER + 11#define SHAPE_DIVISION        wxTYPE_USER + 12#define SHAPE_LABEL_OBJECT    wxTYPE_USER + 13#define SHAPE_BITMAP          wxTYPE_USER + 14#define SHAPE_DIVIDED_OBJECT_CONTROL_POINT   wxTYPE_USER + 15#define OBJECT_REGION         wxTYPE_USER + 20#define OP_CLICK_LEFT  1#define OP_CLICK_RIGHT 2#define OP_DRAG_LEFT 4#define OP_DRAG_RIGHT 8#define OP_ALL (OP_CLICK_LEFT | OP_CLICK_RIGHT | OP_DRAG_LEFT | OP_DRAG_RIGHT)// Attachment modes#define ATTACHMENT_MODE_NONE        0#define ATTACHMENT_MODE_EDGE        1#define ATTACHMENT_MODE_BRANCHING   2// Sub-modes for branching attachment mode#define BRANCHING_ATTACHMENT_NORMAL 1#define BRANCHING_ATTACHMENT_BLOB   2class wxShapeTextLine;class wxShapeCanvas;class wxLineShape;class wxControlPoint;class wxShapeRegion;class wxShape;#if wxUSE_PROLOGIOclass WXDLLEXPORT wxExpr;class WXDLLEXPORT wxExprDatabase;#endif// Round up#define WXROUND(x) ( (long) (x + 0.5) )// logical function to use when drawing rubberband boxes, etc.#define OGLRBLF         wxINVERTclass WXDLLIMPEXP_OGL wxShapeEvtHandler: public wxObject, public wxClientDataContainer{ DECLARE_DYNAMIC_CLASS(wxShapeEvtHandler) public:  wxShapeEvtHandler(wxShapeEvtHandler *prev = NULL, wxShape *shape = NULL);  virtual ~wxShapeEvtHandler();  inline void SetShape(wxShape *sh) { m_handlerShape = sh; }  inline wxShape *GetShape() const { return m_handlerShape; }  inline void SetPreviousHandler(wxShapeEvtHandler* handler) { m_previousHandler = handler; }  inline wxShapeEvtHandler* GetPreviousHandler() const { return m_previousHandler; }  // This is called when the _shape_ is deleted.  virtual void OnDelete();  virtual void OnDraw(wxDC& dc);  virtual void OnDrawContents(wxDC& dc);  virtual void OnDrawBranches(wxDC& dc, bool erase = false);  virtual void OnMoveLinks(wxDC& dc);  virtual void OnErase(wxDC& dc);  virtual void OnEraseContents(wxDC& dc);  virtual void OnHighlight(wxDC& dc);  virtual void OnLeftClick(double x, double y, int keys = 0, int attachment = 0);  virtual void OnLeftDoubleClick(double x, double y, int keys = 0, int attachment = 0);  virtual void OnRightClick(double x, double y, int keys = 0, int attachment = 0);  virtual void OnSize(double x, double y);  virtual bool OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = true);  virtual void OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = true);  virtual void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false  virtual void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);  virtual void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);  virtual void OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false  virtual void OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);  virtual void OnEndDragRight(double x, double y, int keys=0, int attachment = 0);  virtual void OnDrawOutline(wxDC& dc, double x, double y, double w, double h);  virtual void OnDrawControlPoints(wxDC& dc);  virtual void OnEraseControlPoints(wxDC& dc);  virtual void OnMoveLink(wxDC& dc, bool moveControlPoints = true);  // Control points ('handles') redirect control to the actual shape, to make it easier  // to override sizing behaviour.  virtual void OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false  virtual void OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0);  virtual void OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0);  virtual void OnBeginSize(double WXUNUSED(w), double WXUNUSED(h)) { }  virtual void OnEndSize(double WXUNUSED(w), double WXUNUSED(h)) { }  // Can override this to prevent or intercept line reordering.  virtual void OnChangeAttachment(int attachment, wxLineShape* line, wxList& ordering);  // Creates a copy of this event handler.  wxShapeEvtHandler *CreateNewCopy();  // Does the copy - override for new event handlers which might store  // app-specific data.  virtual void CopyData(wxShapeEvtHandler& WXUNUSED(copy)) {}; private:  wxShapeEvtHandler*    m_previousHandler;  wxShape*              m_handlerShape;};class WXDLLIMPEXP_OGL wxShape: public wxShapeEvtHandler{ DECLARE_ABSTRACT_CLASS(wxShape) public:  wxShape(wxShapeCanvas *can = NULL);  virtual ~wxShape();  virtual void GetBoundingBoxMax(double *width, double *height);  virtual void GetBoundingBoxMin(double *width, double *height) = 0;  virtual bool GetPerimeterPoint(double x1, double y1,                                 double x2, double y2,                                 double *x3, double *y3);  inline wxShapeCanvas *GetCanvas() { return m_canvas; }  void SetCanvas(wxShapeCanvas *the_canvas);  virtual void AddToCanvas(wxShapeCanvas *the_canvas, wxShape *addAfter = NULL);  virtual void InsertInCanvas(wxShapeCanvas *the_canvas);  virtual void RemoveFromCanvas(wxShapeCanvas *the_canvas);  inline double GetX() const { return m_xpos; }  inline double GetY() const { return m_ypos; }  inline void SetX(double x) { m_xpos = x; }  inline void SetY(double y) { m_ypos = y; }  inline wxShape *GetParent() const { return m_parent; }  inline void SetParent(wxShape *p) { m_parent = p; }  wxShape *GetTopAncestor();  inline wxList& GetChildren() { return m_children; }  virtual void OnDraw(wxDC& dc);  virtual void OnDrawContents(wxDC& dc);  virtual void OnMoveLinks(wxDC& dc);  virtual void Unlink() { };  void SetDrawHandles(bool drawH);  inline bool GetDrawHandles() { return m_drawHandles; }  virtual void OnErase(wxDC& dc);  virtual void OnEraseContents(wxDC& dc);  virtual void OnHighlight(wxDC& dc);  virtual void OnLeftClick(double x, double y, int keys = 0, int attachment = 0);  virtual void OnLeftDoubleClick(double WXUNUSED(x), double WXUNUSED(y), int WXUNUSED(keys) = 0, int WXUNUSED(attachment) = 0) {}  virtual void OnRightClick(double x, double y, int keys = 0, int attachment = 0);  virtual void OnSize(double x, double y);  virtual bool OnMovePre(wxDC& dc, double x, double y, double old_x, double old_y, bool display = true);  virtual void OnMovePost(wxDC& dc, double x, double y, double old_x, double old_y, bool display = true);  virtual void OnDragLeft(bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false  virtual void OnBeginDragLeft(double x, double y, int keys=0, int attachment = 0);  virtual void OnEndDragLeft(double x, double y, int keys=0, int attachment = 0);  virtual void OnDragRight(bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false  virtual void OnBeginDragRight(double x, double y, int keys=0, int attachment = 0);  virtual void OnEndDragRight(double x, double y, int keys=0, int attachment = 0);  virtual void OnDrawOutline(wxDC& dc, double x, double y, double w, double h);  virtual void OnDrawControlPoints(wxDC& dc);  virtual void OnEraseControlPoints(wxDC& dc);  virtual void OnBeginSize(double WXUNUSED(w), double WXUNUSED(h)) { }  virtual void OnEndSize(double WXUNUSED(w), double WXUNUSED(h)) { }  // Control points ('handles') redirect control to the actual shape, to make it easier  // to override sizing behaviour.  virtual void OnSizingDragLeft(wxControlPoint* pt, bool draw, double x, double y, int keys=0, int attachment = 0); // Erase if draw false  virtual void OnSizingBeginDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0);  virtual void OnSizingEndDragLeft(wxControlPoint* pt, double x, double y, int keys=0, int attachment = 0);  virtual void MakeControlPoints();  virtual void DeleteControlPoints(wxDC *dc = NULL);  virtual void ResetControlPoints();  inline wxShapeEvtHandler *GetEventHandler() { return m_eventHandler; }  inline void SetEventHandler(wxShapeEvtHandler *handler) { m_eventHandler = handler; }  // Mandatory control points, e.g. the divided line moving handles  // should appear even if a child of the 'selected' image  virtual void MakeMandatoryControlPoints();  virtual void ResetMandatoryControlPoints();  inline virtual bool Recompute() { return true; };  // Calculate size recursively, if size changes. Size might depend on children.  inline virtual void CalculateSize() { };  virtual void Select(bool select = true, wxDC* dc = NULL);  virtual void SetHighlight(bool hi = true, bool recurse = false);  inline virtual bool IsHighlighted() const { return m_highlighted; };  virtual bool Selected() const;  virtual bool AncestorSelected() const;  void SetSensitivityFilter(int sens = OP_ALL, bool recursive = false);  int GetSensitivityFilter() const { return m_sensitivity; }  void SetDraggable(bool drag, bool recursive = false);  inline  void SetFixedSize(bool x, bool y) { m_fixedWidth = x; m_fixedHeight = y; };  inline  void GetFixedSize(bool *x, bool *y) const { *x = m_fixedWidth; *y = m_fixedHeight; };  inline  bool GetFixedWidth() const { return m_fixedWidth; }  inline  bool GetFixedHeight() const { return m_fixedHeight; }  inline  void SetSpaceAttachments(bool sp) { m_spaceAttachments = sp; };  inline  bool GetSpaceAttachments() const { return m_spaceAttachments; };  void SetShadowMode(int mode, bool redraw = false);  inline int GetShadowMode() const { return m_shadowMode; }  virtual bool HitTest(double x, double y, int *attachment, double *distance);  inline void SetCentreResize(bool cr) { m_centreResize = cr; }  inline bool GetCentreResize() const { return m_centreResize; }  inline void SetMaintainAspectRatio(bool ar) { m_maintainAspectRatio = ar; }  inline bool GetMaintainAspectRatio() const { return m_maintainAspectRatio; }  inline wxList& GetLines() const { return (wxList&) m_lines; }  inline void SetDisableLabel(bool flag) { m_disableLabel = flag; }  inline bool GetDisableLabel() const { return m_disableLabel; }  inline void SetAttachmentMode(int mode) { m_attachmentMode = mode; }  inline int GetAttachmentMode() const { return m_attachmentMode; }  inline void SetId(long i) { m_id = i; }  inline long GetId() const { return m_id; }  void SetPen(const wxPen *pen);  void SetBrush(const wxBrush *brush);  virtual void Show(bool show);  virtual bool IsShown() const { return m_visible; }  virtual void Move(wxDC& dc, double x1, double y1, bool display = true);  virtual void Erase(wxDC& dc);  virtual void EraseContents(wxDC& dc);  virtual void Draw(wxDC& dc);  virtual void Flash();  virtual void MoveLinks(wxDC& dc);  virtual void DrawContents(wxDC& dc);  // E.g. for drawing text label  virtual void SetSize(double x, double y, bool recursive = true);  virtual void SetAttachmentSize(double x, double y);  void Attach(wxShapeCanvas *can);  void Detach();  inline virtual bool Constrain() { return false; } ;  void AddLine(wxLineShape *line, wxShape *other,               int attachFrom = 0, int attachTo = 0,               // The line ordering               int positionFrom = -1, int positionTo = -1);  // Return the zero-based position in m_lines of line.  int GetLinePosition(wxLineShape* line);  void AddText(const wxString& string);  inline wxPen *GetPen() const { return wx_const_cast(wxPen*, m_pen); }  inline wxBrush *GetBrush() const { return wx_const_cast(wxBrush*, m_brush); }  /*   * Region-specific functions (defaults to the default region   * for simple objects   */  // Set the default, single region size to be consistent  // with the object size  void SetDefaultRegionSize();  virtual void FormatText(wxDC& dc, const wxString& s, int regionId = 0);  virtual void SetFormatMode(int mode, int regionId = 0);  virtual int GetFormatMode(int regionId = 0) const;  virtual void SetFont(wxFont *font, int regionId = 0);  virtual wxFont *GetFont(int regionId = 0) const;  virtual void SetTextColour(const wxString& colour, int regionId = 0);  virtual wxString GetTextColour(int regionId = 0) const;  virtual inline int GetNumberOfTextRegions() const { return m_regions.GetCount(); }  virtual void SetRegionName(const wxString& name, int regionId = 0);  // Get the name representing the region for this image alone.  // I.e. this image's region ids go from 0 to N-1.  // But the names might be "0.2.0", "0.2.1" etc. depending on position in composite.  // So the last digit represents the region Id, the others represent positions  // in composites.  virtual wxString GetRegionName(int regionId);  // Gets the region corresponding to the name, or -1 if not found.  virtual int GetRegionId(const wxString& name);  // Construct names for regions, unique even for children of a composite.  virtual void NameRegions(const wxString& parentName = wxEmptyString);  // Get list of regions  inline wxList& GetRegions() const { return (wxList&) m_regions; }  virtual void AddRegion(wxShapeRegion *region);  virtual void ClearRegions();  // Assign new ids to this image and children (if composite)  void AssignNewIds();  // Returns actual image (same as 'this' if non-composite) and region id  // for given region name.  virtual wxShape *FindRegion(const wxString& regionName, int *regionId);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -