CYD-UI
A C++ library for building native graphic user interfaces
Loading...
Searching...
No Matches
circle.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.circle
;
9
10
import
std;
11
12
export
import
cydui.dimensions
;
13
export
import
cydui.graphics.vector.element
;
14
15
export
namespace
vg
{
16
struct
circle
:
17
element_t
,
18
attrs_core
<circle>,
19
attrs_fill
<circle>,
20
attrs_stroke
<circle>,
21
attr_cx
<circle>,
22
attr_cy
<circle>,
23
attr_r
<circle> {
24
circle
() {
25
//TracyAllocN(this, sizeof(decltype(*this)), "fragment_elements");
26
}
27
~circle
()
override
{
28
//TracyFreeN(this, "fragment_elements");
29
}
30
void
apply_to
(
pixelmap_editor_t
&editor)
const override
{
31
editor->save();
32
apply_stroke
(editor);
33
apply_fill
(editor);
34
35
double
odd_offset = 0.0;
36
if
((
_stroke_width
% 2) != 0) {
37
odd_offset = 0.5;
38
}
39
editor->begin_new_path();
40
editor->translate(
origin_x
+
_cx
+ odd_offset,
origin_y
+
_cy
+ odd_offset);
41
editor->arc(0.0, 0.0,
_r
, 0, 2 * std::numbers::pi);
42
set_source_to_fill
(editor);
43
editor->fill_preserve();
44
45
set_source_to_stroke
(editor);
46
editor->stroke();
47
editor->restore();
48
}
49
50
footprint
get_footprint
()
const override
{
51
return
{
_cx
-
_r
,
_cy
-
_r
, 2 *
_r
, 2 *
_r
};
52
}
53
};
54
}
pixelmap_editor_t
Definition
pixelmap_editor.cppm:14
cydui.dimensions
cydui.graphics.vector.element
cydui.graphics.vector.elements.circle
vg
Definition
attributes.cppm:14
vg::attr_cx
cx - center x-axis coordinate
Definition
attributes.cppm:339
vg::attr_cx< circle >::_cx
int _cx
Definition
attributes.cppm:339
vg::attr_cy
cy - center y-axis coordinate
Definition
attributes.cppm:341
vg::attr_cy< circle >::_cy
int _cy
Definition
attributes.cppm:341
vg::attr_r
r - radius
Definition
attributes.cppm:325
vg::attr_r< circle >::_r
int _r
Definition
attributes.cppm:325
vg::attr_stroke_width< circle >::_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< circle >::apply_fill
void apply_fill(pixelmap_editor_t &editor) const
Definition
attributes.cppm:496
vg::attrs_fill< circle >::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< circle >::set_source_to_stroke
void set_source_to_stroke(pixelmap_editor_t &editor) const
Definition
attributes.cppm:483
vg::attrs_stroke< circle >::apply_stroke
void apply_stroke(pixelmap_editor_t &editor) const
Definition
attributes.cppm:475
vg::circle::circle
circle()
Definition
circle.cppm:24
vg::circle::apply_to
void apply_to(pixelmap_editor_t &editor) const override
Definition
circle.cppm:30
vg::circle::~circle
~circle() override
Definition
circle.cppm:27
vg::circle::get_footprint
footprint get_footprint() const override
Definition
circle.cppm:50
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
circle.cppm
Generated by
1.13.2