renamed dragimag sample
[wxWidgets.git] / samples / dragimag / dragimag.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: dragimag.h
3 // Purpose: wxDragImage sample
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 28/2/2000
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_DRAGIMAGSAMPLE_
13 #define _WX_DRAGIMAGSAMPLE_
14
15 // derived classes
16
17 class MyFrame;
18 class MyApp;
19 class MyCanvas;
20 class DragShape;
21
22 // MyFrame
23
24 class MyFrame: public wxFrame
25 {
26 public:
27 MyFrame();
28
29 void OnAbout( wxCommandEvent &event );
30 void OnQuit( wxCommandEvent &event );
31
32 MyCanvas* GetCanvas() const { return m_canvas; }
33 void SetCanvas(MyCanvas* canvas) { m_canvas = canvas; }
34
35 private:
36 MyCanvas* m_canvas;
37
38 DECLARE_DYNAMIC_CLASS(MyFrame)
39 DECLARE_EVENT_TABLE()
40 };
41
42 // MyApp
43
44 class MyApp: public wxApp
45 {
46 public:
47 MyApp();
48 virtual bool OnInit();
49
50 //// Operations
51
52 // Tile the bitmap
53 bool TileBitmap(const wxRect& rect, wxDC& dc, wxBitmap& bitmap);
54
55 //// Accessors
56 wxBitmap& GetBackgroundBitmap() const { return (wxBitmap&) m_background; }
57
58 bool GetUseScreen() const { return m_useScreen; }
59 void SetUseScreen(bool useScreen) { m_useScreen = useScreen; }
60
61 void OnUseScreen(wxCommandEvent& event);
62
63 protected:
64 wxBitmap m_background;
65 bool m_useScreen;
66
67 DECLARE_EVENT_TABLE()
68 };
69
70 DECLARE_APP(MyApp)
71
72 #define TEST_USE_SCREEN 100
73
74 // MyCanvas
75
76 // Dragging modes
77 #define TEST_DRAG_NONE 0
78 #define TEST_DRAG_START 1
79 #define TEST_DRAG_DRAGGING 2
80
81 class MyCanvas: public wxScrolledWindow
82 {
83 public:
84 MyCanvas( wxWindow *parent, wxWindowID, const wxPoint &pos, const wxSize &size );
85 ~MyCanvas();
86
87 void OnPaint( wxPaintEvent &event );
88 void OnEraseBackground(wxEraseEvent& event);
89 void OnMouseEvent(wxMouseEvent& event);
90
91 void DrawShapes(wxDC& dc);
92 void EraseShape(DragShape* shape, wxDC& dc);
93 void ClearShapes();
94 DragShape* FindShape(const wxPoint& pt) const;
95
96 wxList& GetDisplayList() { return m_displayList; }
97
98 protected:
99
100 private:
101 wxList m_displayList; // A list of DragShapes
102 int m_dragMode;
103 DragShape* m_draggedShape;
104 DragShape* m_currentlyHighlighted; // The shape that's being highlighted
105 wxPoint m_dragStartPos;
106 wxDragImage* m_dragImage;
107
108 DECLARE_CLASS(MyCanvas)
109 DECLARE_EVENT_TABLE()
110 };
111
112
113 // Ways to drag a shape
114
115 #define SHAPE_DRAG_BITMAP 1
116 #define SHAPE_DRAG_TEXT 2
117 #define SHAPE_DRAG_ICON 3
118
119 // Shape
120
121 class DragShape: public wxObject
122 {
123 public:
124 DragShape(const wxBitmap& bitmap);
125 ~DragShape();
126
127 //// Operations
128
129 bool HitTest(const wxPoint& pt) const;
130 bool Draw(wxDC& dc, int op = wxCOPY);
131
132 //// Accessors
133
134 wxPoint GetPosition() const { return m_pos; }
135 void SetPosition(const wxPoint& pos) { m_pos = pos; }
136
137 wxRect GetRect() const { return wxRect(m_pos.x, m_pos.y, m_bitmap.GetWidth(), m_bitmap.GetHeight()); }
138
139 wxBitmap& GetBitmap() const { return (wxBitmap&) m_bitmap; }
140 void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; }
141
142 int GetDragMethod() const { return m_dragMethod; }
143 void SetDragMethod(int method) { m_dragMethod = method; }
144
145 bool IsShown() const { return m_show; }
146 void SetShow(bool show) { m_show = show; }
147
148 protected:
149 wxPoint m_pos;
150 wxBitmap m_bitmap;
151 int m_dragMethod;
152 bool m_show;
153 };
154
155 #endif
156 // _WX_DRAGIMAGSAMPLE_