xtd 0.2.0
rectangle_f.h
Go to the documentation of this file.
1 #pragma once
5 #include "../drawing_export.h"
6 #include "point_f.h"
7 #include "size_f.h"
8 #include <xtd/iequatable>
9 #include <xtd/object>
10 #include <xtd/ustring>
11 #include <cstdint>
12 #include <ostream>
13 
15 namespace xtd {
17  namespace drawing {
19  class rectangle;
21 
34  class drawing_export_ rectangle_f : public xtd::object, public xtd::iequatable<rectangle_f> {
35  public:
37 
40  static const rectangle_f empty;
42 
44 
48  rectangle_f() noexcept = default;
54  rectangle_f(float x, float y, float width, float height) noexcept;
58  rectangle_f(const point_f& location, const size_f& size) noexcept;
60 
62  rectangle_f(const rectangle_f&) noexcept = default;
63  rectangle_f& operator =(const rectangle_f&) noexcept = default;
65 
67 
72  float bottom() const noexcept;
73 
77  float height() const noexcept;
81  void height(float height) noexcept;
82 
85  bool is_empty() const noexcept;
86 
89  float left() const noexcept;
90 
93  point_f location() const noexcept;
96  void location(const point_f& location);
97 
100  float right() const noexcept;
101 
104  size_f size() const noexcept;
107  void size(const size_f& size) noexcept;
108 
111  float top() const noexcept;
112 
116  float width() const noexcept;
120  void width(float width) noexcept;
121 
125  float x() const noexcept;
129  void x(float x) noexcept;
130 
134  float y() const noexcept;
138  void y(float y) noexcept;
140 
142 
147  void add(const drawing::size_f& sz) noexcept;
152  void add(float width, float height) noexcept;
159  static rectangle_f add(const rectangle_f& rect, float x, float y) noexcept;
165  static rectangle_f add(const rectangle_f& rect, const drawing::size_f& sz) noexcept;
166 
171  bool contains(const point_f& pt) const noexcept;
176  bool contains(const rectangle_f& rect) const noexcept;
182  bool contains(float x, float y) const noexcept;
183 
184  bool equals(const rectangle_f& value) const noexcept override;
185 
193  static rectangle_f from_ltrb(float left, float top, float right, float bottom) noexcept;
194 
198  void inflate(const drawing::size_f& sz) noexcept;
204  void inflate(float width, float height) noexcept;
211  static rectangle_f inflate(const rectangle_f& rect, const drawing::size_f& sz) noexcept;
217  static rectangle_f inflate(const rectangle_f& rect, float width, float height) noexcept;
218 
222  bool intersects_with(const rectangle_f& rect) const noexcept;
223 
228  static rectangle_f make_intersect(const rectangle_f& a, const rectangle_f& b) noexcept;
231  void make_intersect(const rectangle_f& rect) noexcept;
232 
237  static rectangle_f make_union(const rectangle_f& a, const rectangle_f& b) noexcept;
240  void make_union(const rectangle_f& rect) noexcept;
241 
245  void offset(const point_f& pos) noexcept;
249  void offset(float x, float y) noexcept;
255  static rectangle_f offset(const rectangle_f& rect, const point_f& pos) noexcept;
262  static rectangle_f offset(const rectangle_f& rect, float x, float y) noexcept;
263 
266  xtd::ustring to_string() const noexcept override;
268 
269  private:
270  float x_ = 0;
271  float y_ = 0;
272  float width_ = 0;
273  float height_ = 0;
274  };
275  }
276 }
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
Contains xtd::drawing::point_f class.
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
Represents an ordered pair of floating-point x- and y-coordinates that defines a point in a two-dimen...
Definition: point_f.h:35
Stores an ordered pair of floating-point, which specify a height and width.
Definition: size_f.h:31
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition: iequatable.h:18
static const rectangle_f empty
Represents a xtd::drawing::rectangle_F that has xtd::drawing::rectagle_f::x, xtd::drawing::rectangle_...
Definition: rectangle_f.h:40
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes...
Definition: object.h:32
Contains xtd::drawing::size_f class.