yaze
0.3.2
Link to the Past ROM Editor
Loading...
Searching...
No Matches
canvas_types.h
Go to the documentation of this file.
1
#ifndef YAZE_APP_GUI_CANVAS_CANVAS_TYPES_H
2
#define YAZE_APP_GUI_CANVAS_CANVAS_TYPES_H
3
4
// POD and option structs for the canvas subsystem.
5
6
#include <cstdint>
7
#include <optional>
8
9
#include "imgui/imgui.h"
10
11
namespace
yaze
{
12
namespace
gui {
13
14
enum class
CanvasType
{
kTile
,
kBlock
,
kMap
};
15
enum class
CanvasMode
{
kPaint
,
kSelect
};
16
enum class
CanvasGridSize
{
k8x8
,
k16x16
,
k32x32
,
k64x64
};
17
18
// Describes the role this canvas plays: what it's for, distinct from
19
// CanvasMode which describes the input behavior the user is currently
20
// performing. A canvas can have CanvasMode::kSelect while being either a
21
// kSelectionSource (picker) or a kEditableScratchpad (rect-select-then-edit).
22
//
23
// Editors set this once at Init/Begin time. Canvas reads it for cursor and
24
// hover-hint defaults; it does not gate operations.
25
enum class
CanvasRole
: uint8_t {
26
kPreviewOnly
,
// Read-only display (gfx-group sheet thumbnail).
27
kSelectionSource
,
// Read-only tile/region picker source.
28
kEditableScratchpad
,
// User-editable target (default).
29
kCompositeOutput
,
// Post-render composite output.
30
};
31
32
// True when the canvas's underlying bitmap is owned by the editor and may be
33
// mutated through it. False for kPreviewOnly/kSelectionSource canvases whose
34
// bitmap is a shared view (gfx-group sheets, sprite atlas thumbnails) where
35
// destructive operations like Reformat/SetPalette would corrupt every other
36
// view of the same data. The context menu uses this to suppress
37
// "Pixel Format" and "Edit Palette" entries on read-only canvases.
38
constexpr
bool
RoleAllowsBitmapMutation
(
CanvasRole
role) {
39
return
role ==
CanvasRole::kEditableScratchpad
||
40
role ==
CanvasRole::kCompositeOutput
;
41
}
42
43
struct
CanvasRuntime
{
44
ImDrawList*
draw_list
=
nullptr
;
45
ImVec2
canvas_p0
= ImVec2(0, 0);
46
ImVec2
canvas_sz
= ImVec2(0, 0);
47
ImVec2
scrolling
= ImVec2(0, 0);
48
ImVec2
mouse_pos_local
= ImVec2(0, 0);
49
bool
hovered
=
false
;
50
float
grid_step
= 16.0f;
51
float
scale
= 1.0f;
52
ImVec2
content_size
= ImVec2(0, 0);
53
};
54
55
struct
CanvasFrameOptions
{
56
ImVec2
canvas_size
= ImVec2(0, 0);
57
// Optional fixed viewport in screen pixels. The content still uses
58
// canvas_size/global_scale, but zooming cannot enlarge the host item.
59
std::optional<ImVec2>
viewport_size
;
60
bool
draw_context_menu
=
true
;
61
bool
draw_grid
=
true
;
62
std::optional<float>
grid_step
;
63
bool
draw_overlay
=
true
;
64
bool
render_popups
=
true
;
65
bool
use_child_window
=
false
;
66
bool
show_scrollbar
=
false
;
67
};
68
69
struct
BitmapPreviewOptions
{
70
ImVec2
canvas_size
= ImVec2(0, 0);
71
ImVec2
dest_pos
= ImVec2(0, 0);
72
ImVec2
dest_size
= ImVec2(0, 0);
73
ImVec2
src_pos
= ImVec2(0, 0);
74
ImVec2
src_size
= ImVec2(0, 0);
75
float
scale
= 1.0f;
76
int
alpha
= 255;
77
bool
draw_context_menu
=
false
;
78
bool
draw_grid
=
true
;
79
std::optional<float>
grid_step
;
80
bool
draw_overlay
=
true
;
81
bool
render_popups
=
true
;
82
bool
ensure_texture
=
false
;
83
int
selector_tile_size
= 0;
84
int
selector_tile_size_y
= 0;
85
};
86
87
struct
TileHit
{
88
int
tile_index
= -1;
89
ImVec2
tile_origin
= ImVec2(0, 0);
90
ImVec2
tile_size
= ImVec2(0, 0);
91
};
92
93
struct
BitmapDrawOpts
{
94
ImVec2
dest_pos
= ImVec2(0, 0);
95
ImVec2
dest_size
= ImVec2(0, 0);
96
ImVec2
src_pos
= ImVec2(0, 0);
97
ImVec2
src_size
= ImVec2(0, 0);
98
float
scale
= 1.0f;
99
int
alpha
= 255;
100
bool
ensure_texture
=
true
;
101
};
102
103
struct
SelectorPanelOpts
{
104
ImVec2
canvas_size
= ImVec2(0, 0);
105
float
grid_step
= 16.0f;
106
bool
show_grid
=
true
;
107
bool
show_overlay
=
true
;
108
bool
render_popups
=
true
;
109
bool
ensure_texture
=
true
;
110
int
tile_selector_size
= 0;
111
int
tile_selector_size_y
= 0;
112
};
113
114
struct
PreviewPanelOpts
{
115
ImVec2
canvas_size
= ImVec2(0, 0);
116
ImVec2
dest_pos
= ImVec2(0, 0);
117
ImVec2
dest_size
= ImVec2(0, 0);
118
float
grid_step
= 0.0f;
119
bool
render_popups
=
false
;
120
bool
ensure_texture
=
true
;
121
};
122
123
struct
ZoomToFitResult
{
124
float
scale
= 1.0f;
125
ImVec2
scroll
= ImVec2(0, 0);
126
};
127
128
}
// namespace gui
129
}
// namespace yaze
130
131
#endif
// YAZE_APP_GUI_CANVAS_CANVAS_TYPES_H
yaze::gui::CanvasMode
CanvasMode
Definition
canvas_types.h:15
yaze::gui::CanvasMode::kSelect
@ kSelect
yaze::gui::CanvasMode::kPaint
@ kPaint
yaze::gui::CanvasRole
CanvasRole
Definition
canvas_types.h:25
yaze::gui::CanvasRole::kCompositeOutput
@ kCompositeOutput
yaze::gui::CanvasRole::kEditableScratchpad
@ kEditableScratchpad
yaze::gui::CanvasRole::kPreviewOnly
@ kPreviewOnly
yaze::gui::CanvasRole::kSelectionSource
@ kSelectionSource
yaze::gui::CanvasType
CanvasType
Definition
canvas_types.h:14
yaze::gui::CanvasType::kBlock
@ kBlock
yaze::gui::CanvasType::kTile
@ kTile
yaze::gui::CanvasType::kMap
@ kMap
yaze::gui::RoleAllowsBitmapMutation
constexpr bool RoleAllowsBitmapMutation(CanvasRole role)
Definition
canvas_types.h:38
yaze::gui::CanvasGridSize
CanvasGridSize
Definition
canvas_types.h:16
yaze::gui::CanvasGridSize::k16x16
@ k16x16
yaze::gui::CanvasGridSize::k8x8
@ k8x8
yaze::gui::CanvasGridSize::k32x32
@ k32x32
yaze::gui::CanvasGridSize::k64x64
@ k64x64
yaze
Definition
patch_export_usage.cc:8
yaze::gui::BitmapDrawOpts
Definition
canvas_types.h:93
yaze::gui::BitmapDrawOpts::alpha
int alpha
Definition
canvas_types.h:99
yaze::gui::BitmapDrawOpts::dest_pos
ImVec2 dest_pos
Definition
canvas_types.h:94
yaze::gui::BitmapDrawOpts::dest_size
ImVec2 dest_size
Definition
canvas_types.h:95
yaze::gui::BitmapDrawOpts::src_size
ImVec2 src_size
Definition
canvas_types.h:97
yaze::gui::BitmapDrawOpts::src_pos
ImVec2 src_pos
Definition
canvas_types.h:96
yaze::gui::BitmapDrawOpts::scale
float scale
Definition
canvas_types.h:98
yaze::gui::BitmapDrawOpts::ensure_texture
bool ensure_texture
Definition
canvas_types.h:100
yaze::gui::BitmapPreviewOptions
Definition
canvas_types.h:69
yaze::gui::BitmapPreviewOptions::scale
float scale
Definition
canvas_types.h:75
yaze::gui::BitmapPreviewOptions::alpha
int alpha
Definition
canvas_types.h:76
yaze::gui::BitmapPreviewOptions::selector_tile_size_y
int selector_tile_size_y
Definition
canvas_types.h:84
yaze::gui::BitmapPreviewOptions::src_pos
ImVec2 src_pos
Definition
canvas_types.h:73
yaze::gui::BitmapPreviewOptions::draw_grid
bool draw_grid
Definition
canvas_types.h:78
yaze::gui::BitmapPreviewOptions::canvas_size
ImVec2 canvas_size
Definition
canvas_types.h:70
yaze::gui::BitmapPreviewOptions::src_size
ImVec2 src_size
Definition
canvas_types.h:74
yaze::gui::BitmapPreviewOptions::ensure_texture
bool ensure_texture
Definition
canvas_types.h:82
yaze::gui::BitmapPreviewOptions::grid_step
std::optional< float > grid_step
Definition
canvas_types.h:79
yaze::gui::BitmapPreviewOptions::draw_context_menu
bool draw_context_menu
Definition
canvas_types.h:77
yaze::gui::BitmapPreviewOptions::selector_tile_size
int selector_tile_size
Definition
canvas_types.h:83
yaze::gui::BitmapPreviewOptions::draw_overlay
bool draw_overlay
Definition
canvas_types.h:80
yaze::gui::BitmapPreviewOptions::render_popups
bool render_popups
Definition
canvas_types.h:81
yaze::gui::BitmapPreviewOptions::dest_pos
ImVec2 dest_pos
Definition
canvas_types.h:71
yaze::gui::BitmapPreviewOptions::dest_size
ImVec2 dest_size
Definition
canvas_types.h:72
yaze::gui::CanvasFrameOptions
Definition
canvas_types.h:55
yaze::gui::CanvasFrameOptions::viewport_size
std::optional< ImVec2 > viewport_size
Definition
canvas_types.h:59
yaze::gui::CanvasFrameOptions::show_scrollbar
bool show_scrollbar
Definition
canvas_types.h:66
yaze::gui::CanvasFrameOptions::draw_context_menu
bool draw_context_menu
Definition
canvas_types.h:60
yaze::gui::CanvasFrameOptions::render_popups
bool render_popups
Definition
canvas_types.h:64
yaze::gui::CanvasFrameOptions::use_child_window
bool use_child_window
Definition
canvas_types.h:65
yaze::gui::CanvasFrameOptions::draw_grid
bool draw_grid
Definition
canvas_types.h:61
yaze::gui::CanvasFrameOptions::canvas_size
ImVec2 canvas_size
Definition
canvas_types.h:56
yaze::gui::CanvasFrameOptions::grid_step
std::optional< float > grid_step
Definition
canvas_types.h:62
yaze::gui::CanvasFrameOptions::draw_overlay
bool draw_overlay
Definition
canvas_types.h:63
yaze::gui::CanvasRuntime
Definition
canvas_types.h:43
yaze::gui::CanvasRuntime::scale
float scale
Definition
canvas_types.h:51
yaze::gui::CanvasRuntime::scrolling
ImVec2 scrolling
Definition
canvas_types.h:47
yaze::gui::CanvasRuntime::grid_step
float grid_step
Definition
canvas_types.h:50
yaze::gui::CanvasRuntime::canvas_sz
ImVec2 canvas_sz
Definition
canvas_types.h:46
yaze::gui::CanvasRuntime::mouse_pos_local
ImVec2 mouse_pos_local
Definition
canvas_types.h:48
yaze::gui::CanvasRuntime::draw_list
ImDrawList * draw_list
Definition
canvas_types.h:44
yaze::gui::CanvasRuntime::content_size
ImVec2 content_size
Definition
canvas_types.h:52
yaze::gui::CanvasRuntime::canvas_p0
ImVec2 canvas_p0
Definition
canvas_types.h:45
yaze::gui::CanvasRuntime::hovered
bool hovered
Definition
canvas_types.h:49
yaze::gui::PreviewPanelOpts
Definition
canvas_types.h:114
yaze::gui::PreviewPanelOpts::ensure_texture
bool ensure_texture
Definition
canvas_types.h:120
yaze::gui::PreviewPanelOpts::dest_pos
ImVec2 dest_pos
Definition
canvas_types.h:116
yaze::gui::PreviewPanelOpts::render_popups
bool render_popups
Definition
canvas_types.h:119
yaze::gui::PreviewPanelOpts::canvas_size
ImVec2 canvas_size
Definition
canvas_types.h:115
yaze::gui::PreviewPanelOpts::dest_size
ImVec2 dest_size
Definition
canvas_types.h:117
yaze::gui::PreviewPanelOpts::grid_step
float grid_step
Definition
canvas_types.h:118
yaze::gui::SelectorPanelOpts
Definition
canvas_types.h:103
yaze::gui::SelectorPanelOpts::grid_step
float grid_step
Definition
canvas_types.h:105
yaze::gui::SelectorPanelOpts::canvas_size
ImVec2 canvas_size
Definition
canvas_types.h:104
yaze::gui::SelectorPanelOpts::tile_selector_size_y
int tile_selector_size_y
Definition
canvas_types.h:111
yaze::gui::SelectorPanelOpts::render_popups
bool render_popups
Definition
canvas_types.h:108
yaze::gui::SelectorPanelOpts::tile_selector_size
int tile_selector_size
Definition
canvas_types.h:110
yaze::gui::SelectorPanelOpts::show_overlay
bool show_overlay
Definition
canvas_types.h:107
yaze::gui::SelectorPanelOpts::show_grid
bool show_grid
Definition
canvas_types.h:106
yaze::gui::SelectorPanelOpts::ensure_texture
bool ensure_texture
Definition
canvas_types.h:109
yaze::gui::TileHit
Definition
canvas_types.h:87
yaze::gui::TileHit::tile_index
int tile_index
Definition
canvas_types.h:88
yaze::gui::TileHit::tile_origin
ImVec2 tile_origin
Definition
canvas_types.h:89
yaze::gui::TileHit::tile_size
ImVec2 tile_size
Definition
canvas_types.h:90
yaze::gui::ZoomToFitResult
Definition
canvas_types.h:123
yaze::gui::ZoomToFitResult::scale
float scale
Definition
canvas_types.h:124
yaze::gui::ZoomToFitResult::scroll
ImVec2 scroll
Definition
canvas_types.h:125
src
app
gui
canvas
canvas_types.h
Generated by
1.10.0