1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Miscellaneous utilities for OGL
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
15 #if defined(__GNUG__) && !defined(__APPLE__)
16 #pragma interface "misc.h"
20 // List to use when copying objects; may need to associate elements of new objects
21 // with elements of old objects, e.g. when copying constraint.s
22 extern wxList oglObjectCopyMapping
;
25 * TEXT FORMATTING FUNCTIONS
29 // Centres the given list of wxShapeTextLine strings in the given box
30 // (changing the positions in situ). Doesn't actually draw into the DC.
31 WXDLLIMPEXP_OGL
void oglCentreText(wxDC
& dc
, wxList
*text
, double m_xpos
, double m_ypos
,
32 double width
, double height
,
33 int formatMode
= FORMAT_CENTRE_HORIZ
| FORMAT_CENTRE_VERT
);
35 // Given a string, returns a list of strings that fit within the given
36 // width of box. Height is ignored.
37 WXDLLIMPEXP_OGL wxStringList
* oglFormatText(wxDC
& dc
, const wxString
& text
, double width
, double height
, int formatMode
= 0);
39 // Centres the list of wxShapeTextLine strings, doesn't clip.
40 // Doesn't actually draw into the DC.
41 WXDLLIMPEXP_OGL
void oglCentreTextNoClipping(wxDC
& dc
, wxList
*text_list
,
42 double m_xpos
, double m_ypos
, double width
, double height
);
44 // Gets the maximum width and height of the given list of wxShapeTextLines.
45 WXDLLIMPEXP_OGL
void oglGetCentredTextExtent(wxDC
& dc
, wxList
*text_list
,
46 double m_xpos
, double m_ypos
, double width
, double height
,
47 double *actual_width
, double *actual_height
);
49 // Actually draw the preformatted list of wxShapeTextLines.
50 WXDLLIMPEXP_OGL
void oglDrawFormattedText(wxDC
& context
, wxList
*text_list
,
51 double m_xpos
, double m_ypos
, double width
, double height
,
52 int formatMode
= FORMAT_CENTRE_HORIZ
| FORMAT_CENTRE_VERT
);
54 // Give it a list of points, finds the centre.
55 WXDLLIMPEXP_OGL
void oglFindPolylineCentroid(wxList
*points
, double *x
, double *y
);
57 WXDLLIMPEXP_OGL
void oglCheckLineIntersection(double x1
, double y1
, double x2
, double y2
,
58 double x3
, double y3
, double x4
, double y4
,
59 double *ratio1
, double *ratio2
);
61 WXDLLIMPEXP_OGL
void oglFindEndForPolyline(double n
, double xvec
[], double yvec
[],
62 double x1
, double y1
, double x2
, double y2
, double *x3
, double *y3
);
65 WXDLLIMPEXP_OGL
void oglFindEndForBox(double width
, double height
,
66 double x1
, double y1
, // Centre of box (possibly)
67 double x2
, double y2
, // other end of line
68 double *x3
, double *y3
); // End on box edge
70 WXDLLIMPEXP_OGL
void oglFindEndForCircle(double radius
,
71 double x1
, double y1
, // Centre of circle
72 double x2
, double y2
, // Other end of line
73 double *x3
, double *y3
);
75 WXDLLIMPEXP_OGL
void oglGetArrowPoints(double x1
, double y1
, double x2
, double y2
,
76 double length
, double width
,
77 double *tip_x
, double *tip_y
,
78 double *side1_x
, double *side1_y
,
79 double *side2_x
, double *side2_y
);
82 * Given an ellipse and endpoints of a line, returns the point at which
83 * the line touches the ellipse in values x4, y4.
84 * This function assumes that the centre of the ellipse is at x1, y1, and the
85 * ellipse has a width of a1 and a height of b1. It also assumes you are
86 * wanting to draw an arc FROM point x2, y2 TOWARDS point x3, y3.
87 * This function calculates the x,y coordinates of the intersection point of
88 * the arc with the ellipse.
89 * Author: Ian Harrison
92 WXDLLIMPEXP_OGL
void oglDrawArcToEllipse(double x1
, double y1
, double a1
, double b1
, double x2
, double y2
, double x3
, double y3
,
93 double *x4
, double *y4
);
95 WXDLLIMPEXP_OGL
bool oglRoughlyEqual(double val1
, double val2
, double tol
= 0.00001);
97 extern wxFont
* g_oglNormalFont
;
98 extern wxPen
* g_oglBlackPen
;
99 extern wxPen
* g_oglWhiteBackgroundPen
;
100 extern wxPen
* g_oglTransparentPen
;
101 extern wxBrush
* g_oglWhiteBackgroundBrush
;
102 extern wxPen
* g_oglBlackForegroundPen
;
104 extern wxFont
* oglMatchFont(int point_size
);
106 extern wxString
oglColourToHex(const wxColour
& colour
);
107 extern wxColour
oglHexToColour(const wxString
& hex
);
108 extern void oglDecToHex(unsigned int dec
, char *buf
);
109 extern unsigned int oglHexToDec(char* buf
);