1use crate::{
6 ffi, Color, Font, Glyph, GlyphItem, GlyphString, Layout, LayoutLine, Matrix, RenderPart,
7};
8use glib::{prelude::*, translate::*};
9
10glib::wrapper! {
11 #[doc(alias = "PangoRenderer")]
12 pub struct Renderer(Object<ffi::PangoRenderer, ffi::PangoRendererClass>);
13
14 match fn {
15 type_ => || ffi::pango_renderer_get_type(),
16 }
17}
18
19impl Renderer {
20 pub const NONE: Option<&'static Renderer> = None;
21}
22
23pub trait RendererExt: IsA<Renderer> + 'static {
24 #[doc(alias = "pango_renderer_activate")]
25 fn activate(&self) {
26 unsafe {
27 ffi::pango_renderer_activate(self.as_ref().to_glib_none().0);
28 }
29 }
30
31 #[doc(alias = "pango_renderer_deactivate")]
32 fn deactivate(&self) {
33 unsafe {
34 ffi::pango_renderer_deactivate(self.as_ref().to_glib_none().0);
35 }
36 }
37
38 #[doc(alias = "pango_renderer_draw_error_underline")]
39 fn draw_error_underline(&self, x: i32, y: i32, width: i32, height: i32) {
40 unsafe {
41 ffi::pango_renderer_draw_error_underline(
42 self.as_ref().to_glib_none().0,
43 x,
44 y,
45 width,
46 height,
47 );
48 }
49 }
50
51 #[doc(alias = "pango_renderer_draw_glyph")]
52 fn draw_glyph(&self, font: &impl IsA<Font>, glyph: Glyph, x: f64, y: f64) {
53 unsafe {
54 ffi::pango_renderer_draw_glyph(
55 self.as_ref().to_glib_none().0,
56 font.as_ref().to_glib_none().0,
57 glyph,
58 x,
59 y,
60 );
61 }
62 }
63
64 #[doc(alias = "pango_renderer_draw_glyph_item")]
65 fn draw_glyph_item(&self, text: Option<&str>, glyph_item: &mut GlyphItem, x: i32, y: i32) {
66 unsafe {
67 ffi::pango_renderer_draw_glyph_item(
68 self.as_ref().to_glib_none().0,
69 text.to_glib_none().0,
70 glyph_item.to_glib_none_mut().0,
71 x,
72 y,
73 );
74 }
75 }
76
77 #[doc(alias = "pango_renderer_draw_glyphs")]
78 fn draw_glyphs(&self, font: &impl IsA<Font>, glyphs: &mut GlyphString, x: i32, y: i32) {
79 unsafe {
80 ffi::pango_renderer_draw_glyphs(
81 self.as_ref().to_glib_none().0,
82 font.as_ref().to_glib_none().0,
83 glyphs.to_glib_none_mut().0,
84 x,
85 y,
86 );
87 }
88 }
89
90 #[doc(alias = "pango_renderer_draw_layout")]
91 fn draw_layout(&self, layout: &Layout, x: i32, y: i32) {
92 unsafe {
93 ffi::pango_renderer_draw_layout(
94 self.as_ref().to_glib_none().0,
95 layout.to_glib_none().0,
96 x,
97 y,
98 );
99 }
100 }
101
102 #[doc(alias = "pango_renderer_draw_layout_line")]
103 fn draw_layout_line(&self, line: &LayoutLine, x: i32, y: i32) {
104 unsafe {
105 ffi::pango_renderer_draw_layout_line(
106 self.as_ref().to_glib_none().0,
107 line.to_glib_none().0,
108 x,
109 y,
110 );
111 }
112 }
113
114 #[doc(alias = "pango_renderer_draw_rectangle")]
115 fn draw_rectangle(&self, part: RenderPart, x: i32, y: i32, width: i32, height: i32) {
116 unsafe {
117 ffi::pango_renderer_draw_rectangle(
118 self.as_ref().to_glib_none().0,
119 part.into_glib(),
120 x,
121 y,
122 width,
123 height,
124 );
125 }
126 }
127
128 #[doc(alias = "pango_renderer_draw_trapezoid")]
129 fn draw_trapezoid(
130 &self,
131 part: RenderPart,
132 y1_: f64,
133 x11: f64,
134 x21: f64,
135 y2: f64,
136 x12: f64,
137 x22: f64,
138 ) {
139 unsafe {
140 ffi::pango_renderer_draw_trapezoid(
141 self.as_ref().to_glib_none().0,
142 part.into_glib(),
143 y1_,
144 x11,
145 x21,
146 y2,
147 x12,
148 x22,
149 );
150 }
151 }
152
153 #[doc(alias = "pango_renderer_get_alpha")]
154 #[doc(alias = "get_alpha")]
155 fn alpha(&self, part: RenderPart) -> u16 {
156 unsafe { ffi::pango_renderer_get_alpha(self.as_ref().to_glib_none().0, part.into_glib()) }
157 }
158
159 #[doc(alias = "pango_renderer_get_color")]
160 #[doc(alias = "get_color")]
161 fn color(&self, part: RenderPart) -> Option<Color> {
162 unsafe {
163 from_glib_none(ffi::pango_renderer_get_color(
164 self.as_ref().to_glib_none().0,
165 part.into_glib(),
166 ))
167 }
168 }
169
170 #[doc(alias = "pango_renderer_get_layout")]
171 #[doc(alias = "get_layout")]
172 fn layout(&self) -> Option<Layout> {
173 unsafe {
174 from_glib_none(ffi::pango_renderer_get_layout(
175 self.as_ref().to_glib_none().0,
176 ))
177 }
178 }
179
180 #[doc(alias = "pango_renderer_get_layout_line")]
181 #[doc(alias = "get_layout_line")]
182 fn layout_line(&self) -> Option<LayoutLine> {
183 unsafe {
184 from_glib_none(ffi::pango_renderer_get_layout_line(
185 self.as_ref().to_glib_none().0,
186 ))
187 }
188 }
189
190 #[doc(alias = "pango_renderer_get_matrix")]
191 #[doc(alias = "get_matrix")]
192 fn matrix(&self) -> Option<Matrix> {
193 unsafe {
194 from_glib_none(ffi::pango_renderer_get_matrix(
195 self.as_ref().to_glib_none().0,
196 ))
197 }
198 }
199
200 #[doc(alias = "pango_renderer_part_changed")]
201 fn part_changed(&self, part: RenderPart) {
202 unsafe {
203 ffi::pango_renderer_part_changed(self.as_ref().to_glib_none().0, part.into_glib());
204 }
205 }
206
207 #[doc(alias = "pango_renderer_set_alpha")]
208 fn set_alpha(&self, part: RenderPart, alpha: u16) {
209 unsafe {
210 ffi::pango_renderer_set_alpha(self.as_ref().to_glib_none().0, part.into_glib(), alpha);
211 }
212 }
213
214 #[doc(alias = "pango_renderer_set_color")]
215 fn set_color(&self, part: RenderPart, color: Option<&Color>) {
216 unsafe {
217 ffi::pango_renderer_set_color(
218 self.as_ref().to_glib_none().0,
219 part.into_glib(),
220 color.to_glib_none().0,
221 );
222 }
223 }
224
225 #[doc(alias = "pango_renderer_set_matrix")]
226 fn set_matrix(&self, matrix: Option<&Matrix>) {
227 unsafe {
228 ffi::pango_renderer_set_matrix(self.as_ref().to_glib_none().0, matrix.to_glib_none().0);
229 }
230 }
231}
232
233impl<O: IsA<Renderer>> RendererExt for O {}