1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxRealPoint
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
15 wxBITMAP_TYPE_INVALID
,
17 wxBITMAP_TYPE_BMP_RESOURCE
,
18 wxBITMAP_TYPE_RESOURCE
= wxBITMAP_TYPE_BMP_RESOURCE
,
20 wxBITMAP_TYPE_ICO_RESOURCE
,
22 wxBITMAP_TYPE_CUR_RESOURCE
,
24 wxBITMAP_TYPE_XBM_DATA
,
26 wxBITMAP_TYPE_XPM_DATA
,
28 wxBITMAP_TYPE_TIF_RESOURCE
,
30 wxBITMAP_TYPE_GIF_RESOURCE
,
32 wxBITMAP_TYPE_PNG_RESOURCE
,
34 wxBITMAP_TYPE_JPEG_RESOURCE
,
36 wxBITMAP_TYPE_PNM_RESOURCE
,
38 wxBITMAP_TYPE_PCX_RESOURCE
,
40 wxBITMAP_TYPE_PICT_RESOURCE
,
42 wxBITMAP_TYPE_ICON_RESOURCE
,
46 wxBITMAP_TYPE_MACCURSOR
,
47 wxBITMAP_TYPE_MACCURSOR_RESOURCE
,
48 wxBITMAP_TYPE_ANY
= 50
66 wxCURSOR_MIDDLE_BUTTON
,
72 wxCURSOR_QUESTION_ARROW
,
73 wxCURSOR_RIGHT_BUTTON
,
83 wxCURSOR_DEFAULT
, //!< standard X11 cursor
84 wxCURSOR_COPY_ARROW
, //!< MacOS Theme Plus arrow
85 // Not yet implemented for Windows
86 wxCURSOR_CROSS_REVERSE
,
87 wxCURSOR_DOUBLE_ARROW
,
88 wxCURSOR_BASED_ARROW_UP
,
89 wxCURSOR_BASED_ARROW_DOWN
,
100 A @b wxRealPoint is a useful data structure for graphics operations.
101 It contains floating point @e x and @e y members.
102 See also wxPoint for an integer version.
117 Members of the @b wxRealPoint object.
120 wxRealPoint(double x
, double y
);
130 A class for manipulating rectangles.
142 Creates a wxRect object from size values at the origin.
145 wxRect(int x
, int y
, int width
, int height
);
146 wxRect(const wxPoint
& topLeft
, const wxPoint
& bottomRight
);
147 wxRect(const wxPoint
& pos
, const wxSize
& size
);
148 wxRect(const wxSize
& size
);
153 Returns the rectangle having the same size as this one but centered relatively
154 to the given rectangle @e r. By default, rectangle is centred in both
155 directions but if @a dir includes only @c wxVERTICAL or only
156 @c wxHORIZONTAL flag, then it is only centered in this direction while
157 the other component of its position remains unchanged.
159 wxRect
CentreIn(const wxRect
& r
, int dir
= wxBOTH
) const;
160 const wxRect
CenterIn(const wxRect
& r
, int dir
= wxBOTH
) const;
165 Returns @true if the given rectangle is completely inside this rectangle
166 (or touches its boundary) and @false otherwise.
168 bool Contains(int x
, int y
) const;
169 const bool Contains(const wxPoint
& pt
) const;
170 const bool Contains(const wxRect
& rect
) const;
175 Decrease the rectangle size.
176 This method is the opposite from Inflate():
177 Deflate(a, b) is equivalent to Inflate(-a, -b).
178 Please refer to Inflate() for full description.
182 void Deflate(wxCoord dx
, wxCoord dy
) const;
183 void Deflate(const wxSize
& diff
) const;
184 void Deflate(wxCoord diff
) const;
185 wxRect
Deflate(wxCoord dx
, wxCoord dy
) const;
189 Gets the bottom point of the rectangle.
191 int GetBottom() const;
194 Gets the position of the bottom left corner.
196 wxPoint
GetBottomLeft() const;
199 Gets the position of the bottom right corner.
201 wxPoint
GetBottomRight() const;
204 Gets the height member.
206 int GetHeight() const;
209 Gets the left point of the rectangle (the same as wxRect::GetX).
216 wxPoint
GetPosition() const;
219 Gets the right point of the rectangle.
221 int GetRight() const;
228 wxSize
GetSize() const;
231 Gets the top point of the rectangle (the same as wxRect::GetY).
236 Gets the position of the top left corner of the rectangle, same as
239 wxPoint
GetTopLeft() const;
242 Gets the position of the top right corner.
244 wxPoint
GetTopRight() const;
247 Gets the width member.
249 int GetWidth() const;
263 Increases the size of the rectangle.
264 The second form uses the same @a diff for both @a dx and @e dy.
265 The first two versions modify the rectangle in place, the last one returns a
266 new rectangle leaving this one unchanged.
267 The left border is moved farther left and the right border is moved farther
268 right by @e dx. The upper border is moved farther up and the bottom border
269 is moved farther down by @e dy. (Note the the width and height of the
270 rectangle thus change by 2*@a dx and 2*@e dy, respectively.) If one or
271 both of @a dx and @a dy are negative, the opposite happens: the rectangle
272 size decreases in the respective direction.
273 Inflating and deflating behaves "naturally''. Defined more precisely, that
275 "Real'' inflates (that is, @a dx and/or @a dy = 0) are not
276 constrained. Thus inflating a rectangle can cause its upper left corner
277 to move into the negative numbers. (the versions prior to 2.5.4 forced
278 the top left coordinate to not fall below (0, 0), which implied a
279 forced move of the rectangle.)
280 Deflates are clamped to not reduce the width or height of the
281 rectangle below zero. In such cases, the top-left corner is nonetheless
282 handled properly. For example, a rectangle at (10, 10) with size (20,
283 40) that is inflated by (-15, -15) will become located at (20, 25) at
284 size (0, 10). Finally, observe that the width and height are treated
285 independently. In the above example, the width is reduced by 20,
286 whereas the height is reduced by the full 30 (rather than also stopping
287 at 20, when the width reached zero).
291 void Inflate(wxCoord dx
, wxCoord dy
) const;
292 void Inflate(const wxSize
& diff
) const;
293 void Inflate(wxCoord diff
) const;
294 wxRect
Inflate(wxCoord dx
, wxCoord dy
) const;
299 Modifies the rectangle to contain the overlapping box of this rectangle and the
300 one passed in as parameter. The const version returns the new rectangle, the
301 other one modifies this rectangle in place.
303 wxRect
Intersect(const wxRect
& rect
);
304 const wxRect
& Intersect(const wxRect
& rect
);
308 Returns @true if this rectangle has a non-empty intersection with the
309 rectangle @a rect and @false otherwise.
311 bool Intersects(const wxRect
& rect
) const;
314 Returns @true if this rectangle has a width or height less than or equal to
315 0 and @false otherwise.
317 bool IsEmpty() const;
321 Moves the rectangle by the specified offset. If @a dx is positive, the
322 rectangle is moved to the right, if @a dy is positive, it is moved to the
323 bottom, otherwise it is moved to the left or top respectively.
325 void Offset(wxCoord dx
, wxCoord dy
);
326 void Offset(const wxPoint
& pt
);
332 void SetHeight(int height
);
339 void SetSize(const wxSize
& s
);
344 void SetWidth(int width
);
358 Modifies the rectangle to contain the bounding box of this rectangle and the
359 one passed in as parameter. The const version returns the new rectangle, the
360 other one modifies this rectangle in place.
362 wxRect
Union(const wxRect
& rect
);
363 const wxRect
& Union(const wxRect
& rect
);
374 Returns the intersection of two rectangles (which may be empty).
376 bool operator !=(const wxRect
& r1
, const wxRect
& r2
);
377 wxRect
operator +(const wxRect
& r1
, const wxRect
& r2
);
378 wxRect
operator +=(const wxRect
& r
);
379 See also wxRect
operator *(const wxRect
& r1
,
381 wxRect
operator *=(const wxRect
& r
);
387 void operator =(const wxRect
& rect
);
392 bool operator ==(const wxRect
& r1
, const wxRect
& r2
);
402 x coordinate of the top-level corner of the rectangle.
408 y coordinate of the top-level corner of the rectangle.
418 A brush list is a list containing all brushes which have been created.
425 class wxBrushList
: public wxList
429 Constructor. The application should not construct its own brush list:
430 use the object pointer @b wxTheBrushList.
435 Finds a brush with the specified attributes and returns it, else creates a new
437 to the brush list, and returns it.
442 Brush style. See wxBrush::SetStyle for a list of styles.
444 wxBrush
* FindOrCreateBrush(const wxColour
& colour
,
445 int style
= wxSOLID
);
454 A @b wxPoint is a useful data structure for graphics operations.
455 It simply contains integer @e x and @e y members.
457 See also wxRealPoint for a floating point version.
472 wxPoint(int x
, int y
);
477 Operators for sum and subtraction between a wxPoint object and a
480 void operator =(const wxPoint
& pt
);
481 bool operator ==(const wxPoint
& p1
, const wxPoint
& p2
);
482 bool operator !=(const wxPoint
& p1
, const wxPoint
& p2
);
483 wxPoint
operator +(const wxPoint
& p1
, const wxPoint
& p2
);
484 wxPoint
operator -(const wxPoint
& p1
, const wxPoint
& p2
);
485 wxPoint
operator +=(const wxPoint
& pt
);
486 wxPoint
operator -=(const wxPoint
& pt
);
487 wxPoint
operator +(const wxPoint
& pt
, const wxSize
& sz
);
488 wxPoint
operator -(const wxPoint
& pt
, const wxSize
& sz
);
489 wxPoint
operator +(const wxSize
& sz
, const wxPoint
& pt
);
490 wxPoint
operator -(const wxSize
& sz
, const wxPoint
& pt
);
491 wxPoint
operator +=(const wxSize
& sz
);
492 wxPoint
operator -=(const wxSize
& sz
);
510 @class wxColourDatabase
513 wxWidgets maintains a database of standard RGB colours for a predefined
514 set of named colours (such as "BLACK'', "LIGHT GREY''). The
515 application may add to this set if desired by using
516 wxColourDatabase::AddColour and may use it to look up
517 colours by names using wxColourDatabase::Find or find the names
518 for the standard colour suing wxColourDatabase::FindName.
520 There is one predefined instance of this class called
521 @b wxTheColourDatabase.
528 class wxColourDatabase
532 Constructs the colour database. It will be initialized at the first use.
538 Adds a colour to the database. If a colour with the same name already exists,
540 Please note that the overload taking a pointer is deprecated and will be
541 removed in the next wxWidgets version, please don't use it.
543 void AddColour(const wxString
& colourName
,
544 const wxColour
& colour
);
545 void AddColour(const wxString
& colourName
, wxColour
* colour
);
549 Finds a colour given the name. Returns an invalid colour object (that is, such
550 that its @ref wxColour::isok Ok method returns @false) if the colour wasn't
551 found in the database.
553 wxColour
Find(const wxString
& colourName
);
556 Finds a colour name given the colour. Returns an empty string if the colour is
557 not found in the database.
559 wxString
FindName(const wxColour
& colour
) const;
568 A font list is a list containing all fonts which have been created. There
569 is only one instance of this class: @b wxTheFontList. Use this object to search
570 for a previously created font of the desired type and create it if not already
572 In some windowing systems, the font may be a scarce resource, so it is best to
573 reuse old resources if possible. When an application finishes, all fonts will
575 deleted and their resources freed, eliminating the possibility of 'memory
583 class wxFontList
: public wxList
587 Constructor. The application should not construct its own font list:
588 use the object pointer @b wxTheFontList.
593 Finds a font of the given specification, or creates one and adds it to the
594 list. See the @ref wxFont::ctor "wxFont constructor" for
595 details of the arguments.
597 wxFont
* FindOrCreateFont(int point_size
, int family
, int style
,
599 bool underline
= false,
600 const wxString
& facename
= NULL
,
601 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
610 A @b wxSize is a useful data structure for graphics operations.
611 It simply contains integer @e width and @e height members.
613 wxSize is used throughout wxWidgets as well as wxPoint which, although almost
614 equivalent to wxSize, has a different meaning: wxPoint represents a position
615 while wxSize - the size.
617 @b wxPython note: wxPython defines aliases for the @c x and @c y members
618 named @c width and @c height since it makes much more sense for
625 @see wxPoint, wxRealPoint
632 Creates a size object.
635 wxSize(int width
, int height
);
640 Decreases the size in x- and y- directions
641 By @e size.x and @e size.y for the first overload
642 By @a dx and @a dy for the second one
643 By @a d and @a d for the third one
647 void DecBy(const wxSize
& size
);
648 void DecBy(int dx
, int dy
);
653 Decrements this object so that both of its dimensions are not greater than the
654 corresponding dimensions of the @e size.
658 void DecTo(const wxSize
& size
);
661 Gets the height member.
663 int GetHeight() const;
666 Gets the width member.
668 int GetWidth() const;
672 Increases the size in x- and y- directions
673 By @e size.x and @e size.y for the first overload
674 By @a dx and @a dy for the second one
675 By @a d and @a d for the third one
679 void IncBy(const wxSize
& size
);
680 void IncBy(int dx
, int dy
);
685 Increments this object so that both of its dimensions are not less than the
686 corresponding dimensions of the @e size.
690 void IncTo(const wxSize
& size
);
693 Returns @true if neither of the size object components is equal to -1, which
694 is used as default for the size values in wxWidgets (hence the predefined
695 @c wxDefaultSize has both of its components equal to -1).
696 This method is typically used before calling
699 bool IsFullySpecified() const;
703 Operators for division and multiplication between a wxSize object and an
706 void operator =(const wxSize
& sz
);
707 bool operator ==(const wxSize
& s1
, const wxSize
& s2
);
708 bool operator !=(const wxSize
& s1
, const wxSize
& s2
);
709 wxSize
operator +(const wxSize
& s1
, const wxSize
& s2
);
710 wxSize
operator -(const wxSize
& s1
, const wxSize
& s2
);
711 wxSize
operator +=(const wxSize
& sz
);
712 wxSize
operator -=(const wxSize
& sz
);
713 wxSize
operator /(const wxSize
& sz
, int factor
);
714 wxSize
operator *(const wxSize
& sz
, int factor
);
715 wxSize
operator *(int factor
, const wxSize
& sz
);
716 wxSize
operator /=(int factor
);
717 wxSize
operator *=(int factor
);
721 Scales the dimensions of this object by the given factors.
722 If you want to scale both dimensions by the same factor you can also use
723 the @ref operators() "operator *="
724 Returns a reference to this object (so that you can concatenate other
725 operations in the same line).
727 wxSize
Scale(float xscale
, float yscale
);
730 Sets the width and height members.
732 void Set(int width
, int height
);
735 Combine this size object with another one replacing the default (i.e. equal
736 to -1) components of this object with those of the other. It is typically
739 @see IsFullySpecified()
741 void SetDefaults(const wxSize
& sizeDefault
);
746 void SetHeight(int height
);
751 void SetWidth(int width
);
760 There is only one instance of this class: @b wxThePenList. Use
761 this object to search for a previously created pen of the desired
762 type and create it if not already found. In some windowing systems,
763 the pen may be a scarce resource, so it can pay to reuse old
764 resources if possible. When an application finishes, all pens will
765 be deleted and their resources freed, eliminating the possibility of
766 'memory leaks'. However, it is best not to rely on this automatic
767 cleanup because it can lead to double deletion in some circumstances.
769 There are two mechanisms in recent versions of wxWidgets which make the
770 pen list less useful than it once was. Under Windows, scarce resources
771 are cleaned up internally if they are not being used. Also, a referencing
772 counting mechanism applied to all GDI objects means that some sharing
773 of underlying resources is possible. You don't have to keep track of pointers,
774 working out when it is safe delete a pen, because the referencing counting does
775 it for you. For example, you can set a pen in a device context, and then
776 immediately delete the pen you passed, because the pen is 'copied'.
778 So you may find it easier to ignore the pen list, and instead create
779 and copy pens as you see fit. If your Windows resource meter suggests
780 your application is using too many resources, you can resort to using
781 GDI lists to share objects explicitly.
783 The only compelling use for the pen list is for wxWidgets to keep
784 track of pens in order to clean them up on exit. It is also kept for
785 backward compatibility with earlier versions of wxWidgets.
796 Constructor. The application should not construct its own pen list:
797 use the object pointer @b wxThePenList.
803 Finds a pen with the specified attributes and returns it, else creates a new
805 to the pen list, and returns it.
810 Colour name, which should be in the colour database.
814 Pen style. See wxPen::wxPen for a list of styles.
816 wxPen
* FindOrCreatePen(const wxColour
& colour
, int width
,
818 wxPen
* FindOrCreatePen(const wxString
& colourName
, int width
,
825 // ============================================================================
826 // Global functions/macros
827 // ============================================================================
829 /** @ingroup group_funcmacro_gdi */
833 Returns the dimensions of the work area on the display. On Windows
834 this means the area not covered by the taskbar, etc. Other platforms
835 are currently defaulting to the whole display until a way is found to
836 provide this info for all window managers, etc.
838 void wxClientDisplayRect(int* x
, int* y
, int* width
,
840 wxRect
wxGetClientDisplayRect();
843 Returns the display size in pixels.
845 void wxDisplaySize(int* width
, int* height
);
846 wxSize
wxGetDisplaySize();
849 Returns the display size in millimeters.
851 void wxDisplaySizeMM(int* width
, int* height
);
852 wxSize
wxGetDisplaySizeMM();
855 This macro loads an icon from either application resources (on the platforms
856 for which they exist, i.e. Windows and OS2) or from an XPM file. It allows to
857 avoid using @c #ifdefs when creating icons.
859 @see @ref overview_wxbitmapoverview, wxBITMAP()
864 Returns @true if the display is colour, @false otherwise.
866 bool wxColourDisplay();
869 This macro loads a bitmap from either application resources (on the platforms
870 for which they exist, i.e. Windows and OS2) or from an XPM file. It allows to
871 avoid using @c #ifdefs when creating bitmaps.
873 @see @ref overview_wxbitmapoverview, wxICON()
875 #define wxBITMAP() /* implementation is private */
878 Returns the depth of the display (a value of 1 denotes a monochrome display).
880 int wxDisplayDepth();