1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // Defines a simple integer rectangle class. The containment semantics
6 // are array-like; that is, the coordinate (x, y) is considered to be
7 // contained by the rectangle, but the coordinate (x + width, y) is not.
8 // The class will happily let you create malformed rectangles (that is,
9 // rectangles with negative width and/or height), but there will be assertions
10 // in the operations (such as Contains()) to complain in this case.
12 #ifndef UI_GFX_RECT_H_
13 #define UI_GFX_RECT_H_
18 #include "ui/gfx/point.h"
19 #include "ui/gfx/rect_base.h"
20 #include "ui/gfx/size.h"
23 typedef struct tagRECT RECT
;
24 #elif defined(TOOLKIT_GTK)
25 typedef struct _GdkRectangle GdkRectangle
;
32 class UI_EXPORT Rect
: public RectBase
<Rect
, Point
, Size
, Insets
, int> {
35 Rect(int width
, int height
);
36 Rect(int x
, int y
, int width
, int height
);
38 explicit Rect(const RECT
& r
);
39 #elif defined(OS_MACOSX)
40 explicit Rect(const CGRect
& r
);
41 #elif defined(TOOLKIT_GTK)
42 explicit Rect(const GdkRectangle
& r
);
44 explicit Rect(const gfx::Size
& size
);
45 Rect(const gfx::Point
& origin
, const gfx::Size
& size
);
50 Rect
& operator=(const RECT
& r
);
51 #elif defined(OS_MACOSX)
52 Rect
& operator=(const CGRect
& r
);
53 #elif defined(TOOLKIT_GTK)
54 Rect
& operator=(const GdkRectangle
& r
);
58 // Construct an equivalent Win32 RECT object.
60 #elif defined(TOOLKIT_GTK)
61 GdkRectangle
ToGdkRectangle() const;
62 #elif defined(OS_MACOSX)
63 // Construct an equivalent CoreGraphics object.
64 CGRect
ToCGRect() const;
67 std::string
ToString() const;
70 #if !defined(COMPILER_MSVC)
71 extern template class RectBase
<Rect
, Point
, Size
, Insets
, int>;
76 #endif // UI_GFX_RECT_H_