Euphoria
size2.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "base/vec2.h"
4 #include "base/numeric.h"
5 #include "base/stringutils.h"
6 #include "base/string_io.h"
7 
8 
9 namespace eu
10 {
11  struct size2f
12  {
13  float width;
14  float height;
15 
16  size2f();
17 
18  [[nodiscard]] static size2f create_from_width_height(float w, float h);
19  [[nodiscard]] static size2f create_from_height_width(float h, float w);
20  [[nodiscard]] static size2f create_from_square(float s);
21 
22  [[nodiscard]] vec2f calc_center_offset_for(const size2f& o) const;
23 
24  void operator+=(const size2f& rhs);
25  void operator-=(const size2f& rhs);
26  void operator*=(float rhs);
27  void operator/=(float rhs);
28 
29  private:
30  size2f(float w, float h);
31  };
32 
33 
34  struct size2i
35  {
36  int width;
37  int height;
38 
39  size2i();
40 
41  [[nodiscard]] static size2i create_from_width_height(int w, int h);
42  [[nodiscard]] static size2i create_from_height_width(int h, int w);
43  [[nodiscard]] static size2i create_from_square(int s);
44 
45  [[nodiscard]] vec2i calc_center_offset_for(const size2i& o) const;
46 
47  void operator+=(const size2i& rhs);
48  void operator-=(const size2i& rhs);
49  void operator*=(int rhs);
50 
51  private:
52  size2i(int w, int h);
53  };
54 
55 
56  template<>
58  {
59  enum { value = 1 };
60 
61  static std::string to_string(const size2f& s);
62  static Result<size2f> parse(const std::string& value);
63  };
64 
65 
66  template<>
68  {
69  enum { value = 1 };
70 
71  static std::string to_string(const size2i& s);
72  static Result<size2i> parse(const std::string& value);
73  };
74 
75  size2f min(const size2f& lhs, const size2f& rhs);
76  size2i min(const size2i& lhs, const size2i& rhs);
77  size2f max(const size2f& lhs, const size2f& rhs);
78  size2i max(const size2i& lhs, const size2i& rhs);
79 
80  size2f operator+(const size2f& lhs, const size2f& rhs);
81  size2i operator+(const size2i& lhs, const size2i& rhs);
82  size2f operator-(const size2f& lhs, const size2f& rhs);
83  size2i operator-(const size2i& lhs, const size2i& rhs);
84 
85  size2f operator*(const size2f& lhs, float rhs);
86  size2i operator*(const size2i& lhs, int rhs);
87  size2f operator*(float lhs, const size2f& rhs);
88  size2i operator*(int lhs, const size2i& rhs);
89 
90  size2f operator/(const size2f& lhs, float rhs);
91 
92  std::string to_string(const size2f& r);
93  std::string to_string(const size2i& r);
94 }
95 
Definition: assert.h:90
Angle operator+(const Angle &lhs, const Angle &rhs)
Definition: angle.cc:123
Angle operator-(const Angle &lhs, const Angle &rhs)
Definition: angle.cc:132
Angle operator/(const Angle &lhs, float rhs)
Definition: angle.cc:141
std::string to_string(const Aabb &a)
Definition: aabb.cc:110
size2f min(const size2f lhs, const size2f rhs)
Definition: size2.cc:140
size2f max(const size2f lhs, const size2f rhs)
Definition: size2.cc:149
Angle operator*(const Angle &lhs, float rhs)
Definition: angle.cc:149
ADD_DEFAULT_FORMATTER(eu::size2f, std::string, eu::to_string)
String utility functions.
void operator-=(const size2f &rhs)
Definition: size2.cc:40
static size2f create_from_height_width(float h, float w)
Definition: size2.cc:21
static size2f create_from_width_height(float w, float h)
Definition: size2.cc:15
static size2f create_from_square(float s)
Definition: size2.cc:27
float height
Definition: size2.h:14
float width
Definition: size2.h:13
void operator*=(float rhs)
Definition: size2.cc:47
void operator+=(const size2f &rhs)
Definition: size2.cc:33
void operator/=(float rhs)
Definition: size2.cc:54
vec2f calc_center_offset_for(const size2f &o) const
Definition: size2.cc:61
size2f()
Definition: size2.cc:8
static size2i create_from_width_height(int w, int h)
Definition: size2.cc:211
static size2i create_from_height_width(int h, int w)
Definition: size2.cc:217
int width
Definition: size2.h:36
void operator*=(int rhs)
Definition: size2.cc:243
vec2i calc_center_offset_for(const size2i &o) const
Definition: size2.cc:250
size2i()
Definition: size2.cc:204
static size2i create_from_square(int s)
Definition: size2.cc:223
int height
Definition: size2.h:37
void operator-=(const size2i &rhs)
Definition: size2.cc:236
void operator+=(const size2i &rhs)
Definition: size2.cc:229
Definition: vec2.h:33
Definition: vec2.h:72