CYD-UI
A C++ library for building native graphic user interfaces
Loading...
Searching...
No Matches
arc.cppm
Go to the documentation of this file.
1
// Copyright (c) 2024, Víctor Castillo Agüero.
2
// SPDX-License-Identifier: GPL-3.0-or-later
3
4
module
;
5
#include <cairomm-1.16/cairomm/cairomm.h>
6
#include <tracy/Tracy.hpp>
7
8
export
module
cydui.graphics.vector.elements.arc
;
9
10
import
std;
11
12
export
import
cydui.dimensions
;
13
export
import
cydui.graphics.vector.element
;
14
15
export
namespace
vg
{
16
struct
arc
:
17
element_t
,
18
attrs_core
<arc>,
19
attrs_fill
<arc>,
20
attrs_stroke
<arc>,
21
attr_cx
<arc>,
22
attr_cy
<arc>,
23
attr_r
<arc>,
24
attr_a1
<arc>,
25
attr_a2
<arc> {
26
arc
() {
27
//TracyAllocN(this, sizeof(decltype(*this)), "fragment_elements");
28
}
29
~arc
()
override
{
30
//TracyFreeN(this, "fragment_elements");
31
}
32
void
apply_to
(
pixelmap_editor_t
&editor)
const override
{
33
editor->save();
34
apply_stroke
(editor);
35
apply_fill
(editor);
36
37
double
odd_offset = 0.0;
38
if
((
_stroke_width
% 2) != 0) {
39
odd_offset = 0.5;
40
}
41
editor->translate(
origin_x
+
_cx
+ odd_offset,
origin_y
+
_cy
+ odd_offset);
42
//editor->scale(_rx, _ry);
43
editor->arc(0.0, 0.0,
_r
,
_a1
* 2 * std::numbers::pi / 360.0,
_a2
* 2 * std::numbers::pi / 360.0);
44
45
set_source_to_fill
(editor);
46
editor->fill_preserve();
47
48
set_source_to_stroke
(editor);
49
editor->stroke();
50
51
editor->restore();
52
}
53
54
footprint
get_footprint
()
const override
{
55
return
{
_cx
-
_r
,
_cy
-
_r
, 2 *
_r
, 2 *
_r
};
56
}
57
};
58
}
pixelmap_editor_t
Definition
pixelmap_editor.cppm:14
cydui.dimensions
cydui.graphics.vector.element
cydui.graphics.vector.elements.arc
vg
Definition
attributes.cppm:14
vg::arc::get_footprint
footprint get_footprint() const override
Definition
arc.cppm:54
vg::arc::~arc
~arc() override
Definition
arc.cppm:29
vg::arc::apply_to
void apply_to(pixelmap_editor_t &editor) const override
Definition
arc.cppm:32
vg::arc::arc
arc()
Definition
arc.cppm:26
vg::attr_a1
a1 - 1st angle in arcs in degrees
Definition
attributes.cppm:349
vg::attr_a1< arc >::_a1
double _a1
Definition
attributes.cppm:349
vg::attr_a2
a1 - 2st angle in arcs in degrees
Definition
attributes.cppm:351
vg::attr_a2< arc >::_a2
double _a2
Definition
attributes.cppm:351
vg::attr_cx
cx - center x-axis coordinate
Definition
attributes.cppm:339
vg::attr_cx< arc >::_cx
int _cx
Definition
attributes.cppm:339
vg::attr_cy
cy - center y-axis coordinate
Definition
attributes.cppm:341
vg::attr_cy< arc >::_cy
int _cy
Definition
attributes.cppm:341
vg::attr_r
r - radius
Definition
attributes.cppm:325
vg::attr_r< arc >::_r
int _r
Definition
attributes.cppm:325
vg::attr_stroke_width< arc >::_stroke_width
int _stroke_width
Definition
attributes.cppm:409
vg::attrs_core
Definition
attributes.cppm:529
vg::attrs_fill
Definition
attributes.cppm:494
vg::attrs_fill< arc >::apply_fill
void apply_fill(pixelmap_editor_t &editor) const
Definition
attributes.cppm:496
vg::attrs_fill< arc >::set_source_to_fill
void set_source_to_fill(pixelmap_editor_t &editor) const
Definition
attributes.cppm:500
vg::attrs_stroke
Definition
attributes.cppm:473
vg::attrs_stroke< arc >::set_source_to_stroke
void set_source_to_stroke(pixelmap_editor_t &editor) const
Definition
attributes.cppm:483
vg::attrs_stroke< arc >::apply_stroke
void apply_stroke(pixelmap_editor_t &editor) const
Definition
attributes.cppm:475
vg::element_t::footprint
Definition
element.cppm:31
vg::element_t
Definition
element.cppm:19
vg::element_t::origin_y
int origin_y
Definition
element.cppm:21
vg::element_t::origin_x
int origin_x
Definition
element.cppm:20
include
cyd_ui
graphics
vector
elements
arc.cppm
Generated by
1.13.2