add 'cursor' ui property
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
#include "commons.hpp"
|
||||
|
||||
#include <map>
|
||||
|
||||
std::optional<CursorShape> CursorShape_from(std::string_view name) {
|
||||
static std::map<std::string_view, CursorShape> shapes = {
|
||||
{"arrow", CursorShape::ARROW},
|
||||
{"text", CursorShape::TEXT},
|
||||
{"crosshair", CursorShape::CROSSHAIR},
|
||||
{"pointer", CursorShape::POINTER},
|
||||
{"ew-resize", CursorShape::EW_RESIZE},
|
||||
{"ns-resize", CursorShape::NS_RESIZE},
|
||||
{"nwse-resize", CursorShape::NWSE_RESIZE},
|
||||
{"nesw-resize", CursorShape::NESW_RESIZE},
|
||||
{"all-resize", CursorShape::ALL_RESIZE},
|
||||
{"not-allowed", CursorShape::NOT_ALLOWED}
|
||||
};
|
||||
const auto& found = shapes.find(name);
|
||||
if (found == shapes.end()) {
|
||||
return std::nullopt;
|
||||
}
|
||||
return found->second;
|
||||
}
|
||||
|
||||
std::string to_string(CursorShape shape) {
|
||||
static std::string names[] = {
|
||||
"arrow",
|
||||
"text",
|
||||
"crosshair",
|
||||
"pointer",
|
||||
"ew-resize",
|
||||
"ns-resize",
|
||||
"nwse-resize",
|
||||
"nesw-resize",
|
||||
"all-resize",
|
||||
"not-allowed"
|
||||
};
|
||||
return names[static_cast<int>(shape)];
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <optional>
|
||||
|
||||
enum class DrawPrimitive {
|
||||
point = 0,
|
||||
line,
|
||||
@@ -7,9 +10,47 @@ enum class DrawPrimitive {
|
||||
};
|
||||
|
||||
enum class BlendMode {
|
||||
normal, addition, inversion
|
||||
/// @brief Normal blending mode.
|
||||
normal,
|
||||
/// @brief Additive blending mode.
|
||||
addition,
|
||||
/// @brief Subtractive blending mode.
|
||||
inversion
|
||||
};
|
||||
|
||||
/// @brief Standard GLFW 3.4 cursor shapes (same order and count as in GLFW).
|
||||
/// It also works in GLFW 3.3 (unsupported shapes will be replaced with the arrow).
|
||||
enum class CursorShape {
|
||||
/// @brief Regular arrow
|
||||
ARROW,
|
||||
/// @brief Text input I-beam
|
||||
TEXT,
|
||||
/// @brief Crosshair
|
||||
CROSSHAIR,
|
||||
/// @brief Pointing hand
|
||||
POINTER,
|
||||
/// @brief Horizontal resize arrow
|
||||
EW_RESIZE,
|
||||
/// @brief Vertical resize arrow
|
||||
NS_RESIZE,
|
||||
|
||||
// GLFW 3.4+ cursor shapes
|
||||
|
||||
/// @brief Diagonal resize arrow (top-left to bottom-right)
|
||||
NWSE_RESIZE,
|
||||
/// @brief Diagonal resize arrow (top-right to bottom-left)
|
||||
NESW_RESIZE,
|
||||
/// @brief All-direction resize arrow
|
||||
ALL_RESIZE,
|
||||
/// @brief Operation not allowed
|
||||
NOT_ALLOWED,
|
||||
|
||||
LAST=NOT_ALLOWED
|
||||
};
|
||||
|
||||
std::optional<CursorShape> CursorShape_from(std::string_view name);
|
||||
std::string to_string(CursorShape shape);
|
||||
|
||||
class Flushable {
|
||||
public:
|
||||
virtual ~Flushable() = default;
|
||||
|
||||
Reference in New Issue
Block a user