aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/GraphBase.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/platform/GraphBase.hpp')
-rw-r--r--include/cru/platform/GraphBase.hpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/include/cru/platform/GraphBase.hpp b/include/cru/platform/GraphBase.hpp
index 186ee9d0..6bf2736f 100644
--- a/include/cru/platform/GraphBase.hpp
+++ b/include/cru/platform/GraphBase.hpp
@@ -1,9 +1,13 @@
#pragma once
#include "cru/common/Base.hpp"
+#include "cru/common/Format.hpp"
+
+#include <fmt/core.h>
#include <cstdint>
#include <limits>
#include <optional>
+#include <string>
#include <utility>
namespace cru::platform {
@@ -14,6 +18,16 @@ struct Point final {
constexpr Point(const float x, const float y) : x(x), y(y) {}
explicit constexpr Point(const Size& size);
+ std::u16string ToDebugString() const {
+ return fmt::format(u"({}, {})", ToUtf16String(x), ToUtf16String(y));
+ }
+
+ constexpr Point& operator+=(const Point& other) {
+ this->x += other.x;
+ this->y += other.y;
+ return *this;
+ }
+
float x = 0;
float y = 0;
};
@@ -46,6 +60,11 @@ struct Size final {
std::numeric_limits<float>::max()};
}
+ std::u16string ToDebugString() const {
+ return fmt::format(u"({}, {})", ToUtf16String(width),
+ ToUtf16String(height));
+ }
+
float width = 0;
float height = 0;
};
@@ -258,7 +277,7 @@ struct TextRange final {
gsl::index GetStart() const { return position; }
gsl::index GetEnd() const { return position + count; }
- void AdjustEnd(gsl::index new_end) { count = new_end - position; }
+ void ChangeEnd(gsl::index new_end) { count = new_end - position; }
TextRange Normalize() const {
auto result = *this;
@@ -297,6 +316,12 @@ struct Color {
(hex >> 24) & mask);
}
+ constexpr Color WithAlpha(std::uint8_t new_alpha) const {
+ auto result = *this;
+ result.alpha = new_alpha;
+ return result;
+ }
+
std::uint8_t red;
std::uint8_t green;
std::uint8_t blue;