wxFreeChart
drawutils.h
1 // Name: drawutils.h
3 // Purpose: Defines some useful drawing utilities.
4 // Author: Moskvichev Andrey V.
5 // Created: 2008/11/07
6 // Copyright: (c) 2008-2010 Moskvichev Andrey V.
7 // Licence: wxWidgets licence
9 
10 #ifndef DRAWUTILS_H_
11 #define DRAWUTILS_H_
12 
20 inline static void DrawTextCenter(wxDC &dc, wxCoord x, wxCoord y, wxString text)
21 {
22  wxSize textExtent = dc.GetTextExtent(text);
23 
24  x -= textExtent.x / 2;
25  y -= textExtent.y / 2;
26 
27  dc.DrawText(text, x, y);
28 }
29 
36 inline static void DrawTextCenter(wxDC &dc, wxRect &rc, wxString text)
37 {
38  wxSize textExtent = dc.GetTextExtent(text);
39 
40  wxCoord x = rc.x + (rc.GetWidth() - textExtent.x) / 2;
41  wxCoord y = rc.y + (rc.GetHeight() - textExtent.y) / 2;
42 
43  dc.DrawText(text, x, y);
44 }
45 
52 inline static void CheckFixRect(wxRect &rc)
53 {
54  if (rc.x < 0)
55  rc.x = 0;
56  if (rc.y < 0)
57  rc.y = 0;
58  if (rc.width < 0)
59  rc.width = 0;
60  if (rc.height < 0)
61  rc.height = 0;
62 }
63 
72 inline static void Margins(wxRect &rc, wxCoord left, wxCoord top, wxCoord right, wxCoord bottom)
73 {
74  if ((left + right) > rc.width) {
75  rc.x = left;
76  rc.width = 0;
77  }
78  else {
79  rc.x += left;
80  rc.width -= (left + right);
81  }
82 
83  if ((top + bottom) > rc.height) {
84  rc.y = top;
85  rc.height = 0;
86  }
87  else {
88  rc.y += top;
89  rc.height -= (top + bottom);
90  }
91 
92  CheckFixRect(rc);
93 }
94 
103 inline static void SetupRect(wxRect &rc, wxCoord x0, wxCoord y0, wxCoord x1, wxCoord y1)
104 {
105  if (x0 < x1) {
106  rc.x = x0;
107  rc.width = x1 - x0;
108  }
109  else {
110  rc.x = x1;
111  rc.width = x0 - x1;
112  }
113 
114  if (y0 < y1) {
115  rc.y = y0;
116  rc.height = y1 - y0;
117  }
118  else {
119  rc.y = y1;
120  rc.height = y0 - y1;
121  }
122 }
123 
124 #endif /*DRAWUTILS_H_*/