xtd 0.2.0
rectangle.h
Go to the documentation of this file.
1 #pragma once
5 #include "../drawing_export.h"
6 #include "point.h"
7 #include "size.h"
8 #include "rectangle_f.h"
9 #include <xtd/iequatable>
10 #include <xtd/object>
11 #include <xtd/ustring>
12 #include <cstdint>
13 #include <ostream>
14 
16 namespace xtd {
18  namespace drawing {
44  class drawing_export_ rectangle : public xtd::object, public xtd::iequatable<rectangle> {
45  public:
47 
50  static const rectangle empty;
52 
54 
58  rectangle() noexcept = default;
64  rectangle(int32 x, int32 y, int32 width, int32 height) noexcept;
68  rectangle(const xtd::drawing::point& location, const xtd::drawing::size& size) noexcept;
70 
72  rectangle(const rectangle&) noexcept = default;
73  rectangle& operator =(const rectangle&) noexcept = default;
74  operator rectangle_f() const noexcept;
76 
78 
83  int32 bottom() const noexcept;
84 
88  int32 height() const noexcept;
92  void height(int32 value) noexcept;
93 
96  bool is_empty() const noexcept;
97 
100  int32 left() const noexcept;
101 
104  xtd::drawing::point location() const noexcept;
107  void location(const xtd::drawing::point& value) noexcept;
108 
111  int32 right() const noexcept;
112 
115  xtd::drawing::size size() const noexcept;
118  void size(const xtd::drawing::size& value) noexcept;
119 
122  int32 top() const noexcept;
123 
127  int32 width() const noexcept;
131  void width(int32 value) noexcept;
132 
136  int32 x() const noexcept;
140  void x(int32 value) noexcept;
141 
145  int32 y() const noexcept;
149  void y(int32 value) noexcept;
151 
153 
158  void add(const drawing::size& sz) noexcept;
163  void add(int32 width, int32 height) noexcept;
170  static rectangle add(const rectangle& rect, int32 x, int32 y) noexcept;
176  static rectangle add(const rectangle& rect, const drawing::size& sz) noexcept;
177 
181  static rectangle ceiling(const xtd::drawing::rectangle_f& rect) noexcept;
182 
187  bool contains(const xtd::drawing::point& pt) const noexcept;
192  bool contains(const xtd::drawing::rectangle& rect) const noexcept;
198  bool contains(int32 x, int32 y) const noexcept;
199 
200  bool equals(const rectangle& value) const noexcept override;
201 
209  static rectangle from_ltrb(int32 left, int32 top, int32 right, int32 bottom) noexcept;
210 
214  void inflate(const drawing::size& sz) noexcept;
220  void inflate(int32 width, int32 height) noexcept;
227  static rectangle inflate(const rectangle& rect, int32 x, int32 y) noexcept;
233  static rectangle inflate(const rectangle& rect, const drawing::size& sz) noexcept;
234 
238  bool intersects_with(const rectangle& rect) const noexcept;
239 
244  static rectangle make_intersect(const rectangle& a, const rectangle& b) noexcept;
247  void make_intersect(const rectangle& rect) noexcept;
248 
253  static rectangle make_union(const rectangle& a, const rectangle& b) noexcept;
256  void make_union(const rectangle& rect) noexcept;
257 
261  void offset(const point& pos) noexcept;
265  void offset(int32 x, int32 y) noexcept;
271  static rectangle offset(const rectangle& rect, const point& pos) noexcept;
278  static rectangle offset(const rectangle& rect, int32 x, int32 y) noexcept;
279 
283  static rectangle round(const rectangle_f& rect) noexcept;
284 
287  xtd::ustring to_string() const noexcept override;
288 
292  static rectangle truncate(const rectangle_f& rect) noexcept;
294 
295  private:
296  int32 x_ = 0;
297  int32 y_ = 0;
298  int32 width_ = 0;
299  int32 height_ = 0;
300  };
301  }
302 }
Represents an ordered pair of integer x- and y-coordinates that defines a point in a two-dimensional ...
Definition: point.h:54
Contains xtd::drawing::point class.
Stores an ordered pair of integers, which specify a height and width.
Definition: size.h:31
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
Stores a set of four floating-point numbers that represent the location and size of a rectangle...
Definition: rectangle_f.h:34
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:46
std::string to_string(const date_time &value, const std::string &fmt, const std::locale &loc)
Convert a specified value into a string with specified format and locale.
Definition: date_time.h:1063
Contains xtd::drawing::rectangle_f class.
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition: iequatable.h:18
Stores a set of four integers that represent the location and size of a rectangle.
Definition: rectangle.h:44
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes...
Definition: object.h:32
int_least32_t int32
Represents a 32-bit signed integer.
Definition: types.h:129
Contains xtd::drawing::size class.
static const rectangle empty
Represents a xtd::drawing::rectangle that has xtd::drawing::rectagle::x, xtd::drawing::rectangle::y, xtd::drawing::rectangle::width and xtd::drawing::rectangle::height values set to zero.
Definition: rectangle.h:50