gtk4/auto/
snapshot.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// DO NOT EDIT
4#![allow(deprecated)]
5
6use crate::{ffi, StyleContext};
7use glib::{prelude::*, translate::*};
8
9glib::wrapper! {
10    #[doc(alias = "GtkSnapshot")]
11    pub struct Snapshot(Object<ffi::GtkSnapshot, ffi::GtkSnapshotClass>) @extends gdk::Snapshot;
12
13    match fn {
14        type_ => || ffi::gtk_snapshot_get_type(),
15    }
16}
17
18impl Snapshot {
19    pub const NONE: Option<&'static Snapshot> = None;
20
21    #[doc(alias = "gtk_snapshot_new")]
22    pub fn new() -> Snapshot {
23        assert_initialized_main_thread!();
24        unsafe { from_glib_full(ffi::gtk_snapshot_new()) }
25    }
26}
27
28impl Default for Snapshot {
29    fn default() -> Self {
30        Self::new()
31    }
32}
33
34pub trait SnapshotExt: IsA<Snapshot> + 'static {
35    #[doc(alias = "gtk_snapshot_append_cairo")]
36    fn append_cairo(&self, bounds: &graphene::Rect) -> cairo::Context {
37        unsafe {
38            from_glib_full(ffi::gtk_snapshot_append_cairo(
39                self.as_ref().to_glib_none().0,
40                bounds.to_glib_none().0,
41            ))
42        }
43    }
44
45    #[doc(alias = "gtk_snapshot_append_color")]
46    fn append_color(&self, color: &gdk::RGBA, bounds: &graphene::Rect) {
47        unsafe {
48            ffi::gtk_snapshot_append_color(
49                self.as_ref().to_glib_none().0,
50                color.to_glib_none().0,
51                bounds.to_glib_none().0,
52            );
53        }
54    }
55
56    #[doc(alias = "gtk_snapshot_append_conic_gradient")]
57    fn append_conic_gradient(
58        &self,
59        bounds: &graphene::Rect,
60        center: &graphene::Point,
61        rotation: f32,
62        stops: &[gsk::ColorStop],
63    ) {
64        let n_stops = stops.len() as _;
65        unsafe {
66            ffi::gtk_snapshot_append_conic_gradient(
67                self.as_ref().to_glib_none().0,
68                bounds.to_glib_none().0,
69                center.to_glib_none().0,
70                rotation,
71                stops.to_glib_none().0,
72                n_stops,
73            );
74        }
75    }
76
77    #[cfg(feature = "v4_14")]
78    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
79    #[doc(alias = "gtk_snapshot_append_fill")]
80    fn append_fill(&self, path: &gsk::Path, fill_rule: gsk::FillRule, color: &gdk::RGBA) {
81        unsafe {
82            ffi::gtk_snapshot_append_fill(
83                self.as_ref().to_glib_none().0,
84                path.to_glib_none().0,
85                fill_rule.into_glib(),
86                color.to_glib_none().0,
87            );
88        }
89    }
90
91    #[doc(alias = "gtk_snapshot_append_inset_shadow")]
92    fn append_inset_shadow(
93        &self,
94        outline: &gsk::RoundedRect,
95        color: &gdk::RGBA,
96        dx: f32,
97        dy: f32,
98        spread: f32,
99        blur_radius: f32,
100    ) {
101        unsafe {
102            ffi::gtk_snapshot_append_inset_shadow(
103                self.as_ref().to_glib_none().0,
104                outline.to_glib_none().0,
105                color.to_glib_none().0,
106                dx,
107                dy,
108                spread,
109                blur_radius,
110            );
111        }
112    }
113
114    #[doc(alias = "gtk_snapshot_append_layout")]
115    fn append_layout(&self, layout: &pango::Layout, color: &gdk::RGBA) {
116        unsafe {
117            ffi::gtk_snapshot_append_layout(
118                self.as_ref().to_glib_none().0,
119                layout.to_glib_none().0,
120                color.to_glib_none().0,
121            );
122        }
123    }
124
125    #[doc(alias = "gtk_snapshot_append_linear_gradient")]
126    fn append_linear_gradient(
127        &self,
128        bounds: &graphene::Rect,
129        start_point: &graphene::Point,
130        end_point: &graphene::Point,
131        stops: &[gsk::ColorStop],
132    ) {
133        let n_stops = stops.len() as _;
134        unsafe {
135            ffi::gtk_snapshot_append_linear_gradient(
136                self.as_ref().to_glib_none().0,
137                bounds.to_glib_none().0,
138                start_point.to_glib_none().0,
139                end_point.to_glib_none().0,
140                stops.to_glib_none().0,
141                n_stops,
142            );
143        }
144    }
145
146    #[doc(alias = "gtk_snapshot_append_node")]
147    fn append_node(&self, node: impl AsRef<gsk::RenderNode>) {
148        unsafe {
149            ffi::gtk_snapshot_append_node(
150                self.as_ref().to_glib_none().0,
151                node.as_ref().to_glib_none().0,
152            );
153        }
154    }
155
156    #[doc(alias = "gtk_snapshot_append_outset_shadow")]
157    fn append_outset_shadow(
158        &self,
159        outline: &gsk::RoundedRect,
160        color: &gdk::RGBA,
161        dx: f32,
162        dy: f32,
163        spread: f32,
164        blur_radius: f32,
165    ) {
166        unsafe {
167            ffi::gtk_snapshot_append_outset_shadow(
168                self.as_ref().to_glib_none().0,
169                outline.to_glib_none().0,
170                color.to_glib_none().0,
171                dx,
172                dy,
173                spread,
174                blur_radius,
175            );
176        }
177    }
178
179    #[cfg(feature = "v4_22")]
180    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
181    #[doc(alias = "gtk_snapshot_append_paste")]
182    fn append_paste(&self, bounds: &graphene::Rect, nth: usize) {
183        unsafe {
184            ffi::gtk_snapshot_append_paste(
185                self.as_ref().to_glib_none().0,
186                bounds.to_glib_none().0,
187                nth,
188            );
189        }
190    }
191
192    #[doc(alias = "gtk_snapshot_append_radial_gradient")]
193    fn append_radial_gradient(
194        &self,
195        bounds: &graphene::Rect,
196        center: &graphene::Point,
197        hradius: f32,
198        vradius: f32,
199        start: f32,
200        end: f32,
201        stops: &[gsk::ColorStop],
202    ) {
203        let n_stops = stops.len() as _;
204        unsafe {
205            ffi::gtk_snapshot_append_radial_gradient(
206                self.as_ref().to_glib_none().0,
207                bounds.to_glib_none().0,
208                center.to_glib_none().0,
209                hradius,
210                vradius,
211                start,
212                end,
213                stops.to_glib_none().0,
214                n_stops,
215            );
216        }
217    }
218
219    #[doc(alias = "gtk_snapshot_append_repeating_linear_gradient")]
220    fn append_repeating_linear_gradient(
221        &self,
222        bounds: &graphene::Rect,
223        start_point: &graphene::Point,
224        end_point: &graphene::Point,
225        stops: &[gsk::ColorStop],
226    ) {
227        let n_stops = stops.len() as _;
228        unsafe {
229            ffi::gtk_snapshot_append_repeating_linear_gradient(
230                self.as_ref().to_glib_none().0,
231                bounds.to_glib_none().0,
232                start_point.to_glib_none().0,
233                end_point.to_glib_none().0,
234                stops.to_glib_none().0,
235                n_stops,
236            );
237        }
238    }
239
240    #[doc(alias = "gtk_snapshot_append_repeating_radial_gradient")]
241    fn append_repeating_radial_gradient(
242        &self,
243        bounds: &graphene::Rect,
244        center: &graphene::Point,
245        hradius: f32,
246        vradius: f32,
247        start: f32,
248        end: f32,
249        stops: &[gsk::ColorStop],
250    ) {
251        let n_stops = stops.len() as _;
252        unsafe {
253            ffi::gtk_snapshot_append_repeating_radial_gradient(
254                self.as_ref().to_glib_none().0,
255                bounds.to_glib_none().0,
256                center.to_glib_none().0,
257                hradius,
258                vradius,
259                start,
260                end,
261                stops.to_glib_none().0,
262                n_stops,
263            );
264        }
265    }
266
267    #[cfg(feature = "v4_10")]
268    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
269    #[doc(alias = "gtk_snapshot_append_scaled_texture")]
270    fn append_scaled_texture(
271        &self,
272        texture: &impl IsA<gdk::Texture>,
273        filter: gsk::ScalingFilter,
274        bounds: &graphene::Rect,
275    ) {
276        unsafe {
277            ffi::gtk_snapshot_append_scaled_texture(
278                self.as_ref().to_glib_none().0,
279                texture.as_ref().to_glib_none().0,
280                filter.into_glib(),
281                bounds.to_glib_none().0,
282            );
283        }
284    }
285
286    #[cfg(feature = "v4_14")]
287    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
288    #[doc(alias = "gtk_snapshot_append_stroke")]
289    fn append_stroke(&self, path: &gsk::Path, stroke: &gsk::Stroke, color: &gdk::RGBA) {
290        unsafe {
291            ffi::gtk_snapshot_append_stroke(
292                self.as_ref().to_glib_none().0,
293                path.to_glib_none().0,
294                stroke.to_glib_none().0,
295                color.to_glib_none().0,
296            );
297        }
298    }
299
300    #[doc(alias = "gtk_snapshot_append_texture")]
301    fn append_texture(&self, texture: &impl IsA<gdk::Texture>, bounds: &graphene::Rect) {
302        unsafe {
303            ffi::gtk_snapshot_append_texture(
304                self.as_ref().to_glib_none().0,
305                texture.as_ref().to_glib_none().0,
306                bounds.to_glib_none().0,
307            );
308        }
309    }
310
311    #[doc(alias = "gtk_snapshot_free_to_node")]
312    #[doc(alias = "free_to_node")]
313    fn to_node(self) -> Option<gsk::RenderNode> {
314        unsafe {
315            from_glib_full(ffi::gtk_snapshot_free_to_node(
316                self.upcast().into_glib_ptr(),
317            ))
318        }
319    }
320
321    #[doc(alias = "gtk_snapshot_free_to_paintable")]
322    #[doc(alias = "free_to_paintable")]
323    fn to_paintable(self, size: Option<&graphene::Size>) -> Option<gdk::Paintable> {
324        unsafe {
325            from_glib_full(ffi::gtk_snapshot_free_to_paintable(
326                self.upcast().into_glib_ptr(),
327                size.to_glib_none().0,
328            ))
329        }
330    }
331
332    #[cfg_attr(feature = "v4_16", deprecated = "Since 4.16")]
333    #[allow(deprecated)]
334    #[doc(alias = "gtk_snapshot_gl_shader_pop_texture")]
335    fn gl_shader_pop_texture(&self) {
336        unsafe {
337            ffi::gtk_snapshot_gl_shader_pop_texture(self.as_ref().to_glib_none().0);
338        }
339    }
340
341    #[doc(alias = "gtk_snapshot_perspective")]
342    fn perspective(&self, depth: f32) {
343        unsafe {
344            ffi::gtk_snapshot_perspective(self.as_ref().to_glib_none().0, depth);
345        }
346    }
347
348    #[doc(alias = "gtk_snapshot_pop")]
349    fn pop(&self) {
350        unsafe {
351            ffi::gtk_snapshot_pop(self.as_ref().to_glib_none().0);
352        }
353    }
354
355    #[doc(alias = "gtk_snapshot_push_blend")]
356    fn push_blend(&self, blend_mode: gsk::BlendMode) {
357        unsafe {
358            ffi::gtk_snapshot_push_blend(self.as_ref().to_glib_none().0, blend_mode.into_glib());
359        }
360    }
361
362    #[doc(alias = "gtk_snapshot_push_blur")]
363    fn push_blur(&self, radius: f64) {
364        unsafe {
365            ffi::gtk_snapshot_push_blur(self.as_ref().to_glib_none().0, radius);
366        }
367    }
368
369    #[doc(alias = "gtk_snapshot_push_clip")]
370    fn push_clip(&self, bounds: &graphene::Rect) {
371        unsafe {
372            ffi::gtk_snapshot_push_clip(self.as_ref().to_glib_none().0, bounds.to_glib_none().0);
373        }
374    }
375
376    #[doc(alias = "gtk_snapshot_push_color_matrix")]
377    fn push_color_matrix(&self, color_matrix: &graphene::Matrix, color_offset: &graphene::Vec4) {
378        unsafe {
379            ffi::gtk_snapshot_push_color_matrix(
380                self.as_ref().to_glib_none().0,
381                color_matrix.to_glib_none().0,
382                color_offset.to_glib_none().0,
383            );
384        }
385    }
386
387    #[cfg(feature = "v4_20")]
388    #[cfg_attr(docsrs, doc(cfg(feature = "v4_20")))]
389    #[doc(alias = "gtk_snapshot_push_component_transfer")]
390    fn push_component_transfer(
391        &self,
392        red: &gsk::ComponentTransfer,
393        green: &gsk::ComponentTransfer,
394        blue: &gsk::ComponentTransfer,
395        alpha: &gsk::ComponentTransfer,
396    ) {
397        unsafe {
398            ffi::gtk_snapshot_push_component_transfer(
399                self.as_ref().to_glib_none().0,
400                red.to_glib_none().0,
401                green.to_glib_none().0,
402                blue.to_glib_none().0,
403                alpha.to_glib_none().0,
404            );
405        }
406    }
407
408    #[cfg(feature = "v4_22")]
409    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
410    #[doc(alias = "gtk_snapshot_push_composite")]
411    fn push_composite(&self, op: gsk::PorterDuff) {
412        unsafe {
413            ffi::gtk_snapshot_push_composite(self.as_ref().to_glib_none().0, op.into_glib());
414        }
415    }
416
417    #[cfg(feature = "v4_22")]
418    #[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
419    #[doc(alias = "gtk_snapshot_push_copy")]
420    fn push_copy(&self) {
421        unsafe {
422            ffi::gtk_snapshot_push_copy(self.as_ref().to_glib_none().0);
423        }
424    }
425
426    #[doc(alias = "gtk_snapshot_push_cross_fade")]
427    fn push_cross_fade(&self, progress: f64) {
428        unsafe {
429            ffi::gtk_snapshot_push_cross_fade(self.as_ref().to_glib_none().0, progress);
430        }
431    }
432
433    #[cfg(feature = "v4_14")]
434    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
435    #[doc(alias = "gtk_snapshot_push_fill")]
436    fn push_fill(&self, path: &gsk::Path, fill_rule: gsk::FillRule) {
437        unsafe {
438            ffi::gtk_snapshot_push_fill(
439                self.as_ref().to_glib_none().0,
440                path.to_glib_none().0,
441                fill_rule.into_glib(),
442            );
443        }
444    }
445
446    #[cfg_attr(feature = "v4_16", deprecated = "Since 4.16")]
447    #[allow(deprecated)]
448    #[doc(alias = "gtk_snapshot_push_gl_shader")]
449    fn push_gl_shader(
450        &self,
451        shader: &gsk::GLShader,
452        bounds: &graphene::Rect,
453        take_args: glib::Bytes,
454    ) {
455        unsafe {
456            ffi::gtk_snapshot_push_gl_shader(
457                self.as_ref().to_glib_none().0,
458                shader.to_glib_none().0,
459                bounds.to_glib_none().0,
460                take_args.into_glib_ptr(),
461            );
462        }
463    }
464
465    #[cfg(feature = "v4_10")]
466    #[cfg_attr(docsrs, doc(cfg(feature = "v4_10")))]
467    #[doc(alias = "gtk_snapshot_push_mask")]
468    fn push_mask(&self, mask_mode: gsk::MaskMode) {
469        unsafe {
470            ffi::gtk_snapshot_push_mask(self.as_ref().to_glib_none().0, mask_mode.into_glib());
471        }
472    }
473
474    #[doc(alias = "gtk_snapshot_push_opacity")]
475    fn push_opacity(&self, opacity: f64) {
476        unsafe {
477            ffi::gtk_snapshot_push_opacity(self.as_ref().to_glib_none().0, opacity);
478        }
479    }
480
481    #[doc(alias = "gtk_snapshot_push_repeat")]
482    fn push_repeat(&self, bounds: &graphene::Rect, child_bounds: Option<&graphene::Rect>) {
483        unsafe {
484            ffi::gtk_snapshot_push_repeat(
485                self.as_ref().to_glib_none().0,
486                bounds.to_glib_none().0,
487                child_bounds.to_glib_none().0,
488            );
489        }
490    }
491
492    #[doc(alias = "gtk_snapshot_push_rounded_clip")]
493    fn push_rounded_clip(&self, bounds: &gsk::RoundedRect) {
494        unsafe {
495            ffi::gtk_snapshot_push_rounded_clip(
496                self.as_ref().to_glib_none().0,
497                bounds.to_glib_none().0,
498            );
499        }
500    }
501
502    #[doc(alias = "gtk_snapshot_push_shadow")]
503    fn push_shadow(&self, shadow: &[gsk::Shadow]) {
504        let n_shadows = shadow.len() as _;
505        unsafe {
506            ffi::gtk_snapshot_push_shadow(
507                self.as_ref().to_glib_none().0,
508                shadow.to_glib_none().0,
509                n_shadows,
510            );
511        }
512    }
513
514    #[cfg(feature = "v4_14")]
515    #[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
516    #[doc(alias = "gtk_snapshot_push_stroke")]
517    fn push_stroke(&self, path: &gsk::Path, stroke: &gsk::Stroke) {
518        unsafe {
519            ffi::gtk_snapshot_push_stroke(
520                self.as_ref().to_glib_none().0,
521                path.to_glib_none().0,
522                stroke.to_glib_none().0,
523            );
524        }
525    }
526
527    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
528    #[allow(deprecated)]
529    #[doc(alias = "gtk_snapshot_render_background")]
530    fn render_background(
531        &self,
532        context: &impl IsA<StyleContext>,
533        x: f64,
534        y: f64,
535        width: f64,
536        height: f64,
537    ) {
538        unsafe {
539            ffi::gtk_snapshot_render_background(
540                self.as_ref().to_glib_none().0,
541                context.as_ref().to_glib_none().0,
542                x,
543                y,
544                width,
545                height,
546            );
547        }
548    }
549
550    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
551    #[allow(deprecated)]
552    #[doc(alias = "gtk_snapshot_render_focus")]
553    fn render_focus(
554        &self,
555        context: &impl IsA<StyleContext>,
556        x: f64,
557        y: f64,
558        width: f64,
559        height: f64,
560    ) {
561        unsafe {
562            ffi::gtk_snapshot_render_focus(
563                self.as_ref().to_glib_none().0,
564                context.as_ref().to_glib_none().0,
565                x,
566                y,
567                width,
568                height,
569            );
570        }
571    }
572
573    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
574    #[allow(deprecated)]
575    #[doc(alias = "gtk_snapshot_render_frame")]
576    fn render_frame(
577        &self,
578        context: &impl IsA<StyleContext>,
579        x: f64,
580        y: f64,
581        width: f64,
582        height: f64,
583    ) {
584        unsafe {
585            ffi::gtk_snapshot_render_frame(
586                self.as_ref().to_glib_none().0,
587                context.as_ref().to_glib_none().0,
588                x,
589                y,
590                width,
591                height,
592            );
593        }
594    }
595
596    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
597    #[allow(deprecated)]
598    #[doc(alias = "gtk_snapshot_render_insertion_cursor")]
599    fn render_insertion_cursor(
600        &self,
601        context: &impl IsA<StyleContext>,
602        x: f64,
603        y: f64,
604        layout: &pango::Layout,
605        index: i32,
606        direction: pango::Direction,
607    ) {
608        unsafe {
609            ffi::gtk_snapshot_render_insertion_cursor(
610                self.as_ref().to_glib_none().0,
611                context.as_ref().to_glib_none().0,
612                x,
613                y,
614                layout.to_glib_none().0,
615                index,
616                direction.into_glib(),
617            );
618        }
619    }
620
621    #[cfg_attr(feature = "v4_10", deprecated = "Since 4.10")]
622    #[allow(deprecated)]
623    #[doc(alias = "gtk_snapshot_render_layout")]
624    fn render_layout(
625        &self,
626        context: &impl IsA<StyleContext>,
627        x: f64,
628        y: f64,
629        layout: &pango::Layout,
630    ) {
631        unsafe {
632            ffi::gtk_snapshot_render_layout(
633                self.as_ref().to_glib_none().0,
634                context.as_ref().to_glib_none().0,
635                x,
636                y,
637                layout.to_glib_none().0,
638            );
639        }
640    }
641
642    #[doc(alias = "gtk_snapshot_restore")]
643    fn restore(&self) {
644        unsafe {
645            ffi::gtk_snapshot_restore(self.as_ref().to_glib_none().0);
646        }
647    }
648
649    #[doc(alias = "gtk_snapshot_rotate")]
650    fn rotate(&self, angle: f32) {
651        unsafe {
652            ffi::gtk_snapshot_rotate(self.as_ref().to_glib_none().0, angle);
653        }
654    }
655
656    #[doc(alias = "gtk_snapshot_rotate_3d")]
657    fn rotate_3d(&self, angle: f32, axis: &graphene::Vec3) {
658        unsafe {
659            ffi::gtk_snapshot_rotate_3d(
660                self.as_ref().to_glib_none().0,
661                angle,
662                axis.to_glib_none().0,
663            );
664        }
665    }
666
667    #[doc(alias = "gtk_snapshot_save")]
668    fn save(&self) {
669        unsafe {
670            ffi::gtk_snapshot_save(self.as_ref().to_glib_none().0);
671        }
672    }
673
674    #[doc(alias = "gtk_snapshot_scale")]
675    fn scale(&self, factor_x: f32, factor_y: f32) {
676        unsafe {
677            ffi::gtk_snapshot_scale(self.as_ref().to_glib_none().0, factor_x, factor_y);
678        }
679    }
680
681    #[doc(alias = "gtk_snapshot_scale_3d")]
682    fn scale_3d(&self, factor_x: f32, factor_y: f32, factor_z: f32) {
683        unsafe {
684            ffi::gtk_snapshot_scale_3d(
685                self.as_ref().to_glib_none().0,
686                factor_x,
687                factor_y,
688                factor_z,
689            );
690        }
691    }
692
693    #[doc(alias = "gtk_snapshot_transform")]
694    fn transform(&self, transform: Option<&gsk::Transform>) {
695        unsafe {
696            ffi::gtk_snapshot_transform(self.as_ref().to_glib_none().0, transform.to_glib_none().0);
697        }
698    }
699
700    #[doc(alias = "gtk_snapshot_transform_matrix")]
701    fn transform_matrix(&self, matrix: &graphene::Matrix) {
702        unsafe {
703            ffi::gtk_snapshot_transform_matrix(
704                self.as_ref().to_glib_none().0,
705                matrix.to_glib_none().0,
706            );
707        }
708    }
709
710    #[doc(alias = "gtk_snapshot_translate")]
711    fn translate(&self, point: &graphene::Point) {
712        unsafe {
713            ffi::gtk_snapshot_translate(self.as_ref().to_glib_none().0, point.to_glib_none().0);
714        }
715    }
716
717    #[doc(alias = "gtk_snapshot_translate_3d")]
718    fn translate_3d(&self, point: &graphene::Point3D) {
719        unsafe {
720            ffi::gtk_snapshot_translate_3d(self.as_ref().to_glib_none().0, point.to_glib_none().0);
721        }
722    }
723}
724
725impl<O: IsA<Snapshot>> SnapshotExt for O {}