Skip to content

Commit a4aba82

Browse files
gsk: don't use IsRenderNode
Because IsRenderNode is not implemented for RenderNode and cannot be implemented. AsRef<RenderNode> allows us to pass both
1 parent 111bbe1 commit a4aba82

15 files changed

+41
-33
lines changed

gsk4/src/blend_node.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Take a look at the license at the top of the repository in the LICENSE file.
22

3-
use crate::{BlendMode, IsRenderNode, RenderNode, RenderNodeType};
3+
use crate::{BlendMode, RenderNode, RenderNodeType};
44
use glib::translate::*;
55

66
glib::wrapper! {
@@ -23,7 +23,7 @@ define_render_node!(
2323

2424
impl BlendNode {
2525
#[doc(alias = "gsk_blend_node_new")]
26-
pub fn new<P: IsRenderNode, Q: IsRenderNode>(
26+
pub fn new<P: AsRef<RenderNode>, Q: AsRef<RenderNode>>(
2727
bottom: &P,
2828
top: &Q,
2929
blend_mode: BlendMode,

gsk4/src/blur_node.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Take a look at the license at the top of the repository in the LICENSE file.
22

3-
use crate::{IsRenderNode, RenderNode, RenderNodeType};
3+
use crate::{RenderNode, RenderNodeType};
44
use glib::translate::*;
55

66
glib::wrapper! {
@@ -23,7 +23,7 @@ define_render_node!(
2323

2424
impl BlurNode {
2525
#[doc(alias = "gsk_blur_node_new")]
26-
pub fn new<P: IsRenderNode>(child: &P, radius: f32) -> Self {
26+
pub fn new<P: AsRef<RenderNode>>(child: &P, radius: f32) -> Self {
2727
skip_assert_initialized!();
2828
unsafe {
2929
from_glib_full(ffi::gsk_blur_node_new(

gsk4/src/clip_node.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Take a look at the license at the top of the repository in the LICENSE file.
22

3-
use crate::{IsRenderNode, RenderNode, RenderNodeType};
3+
use crate::{RenderNode, RenderNodeType};
44
use glib::translate::*;
55

66
glib::wrapper! {
@@ -23,7 +23,7 @@ define_render_node!(
2323

2424
impl ClipNode {
2525
#[doc(alias = "gsk_clip_node_new")]
26-
pub fn new<P: IsRenderNode>(child: &P, clip: &graphene::Rect) -> Self {
26+
pub fn new<P: AsRef<RenderNode>>(child: &P, clip: &graphene::Rect) -> Self {
2727
skip_assert_initialized!();
2828
unsafe {
2929
from_glib_full(ffi::gsk_clip_node_new(

gsk4/src/color_matrix_node.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Take a look at the license at the top of the repository in the LICENSE file.
22

3-
use crate::{IsRenderNode, RenderNode, RenderNodeType};
3+
use crate::{RenderNode, RenderNodeType};
44
use glib::translate::*;
55

66
glib::wrapper! {
@@ -23,7 +23,7 @@ define_render_node!(
2323

2424
impl ColorMatrixNode {
2525
#[doc(alias = "gsk_color_matrix_node_new")]
26-
pub fn new<P: IsRenderNode>(
26+
pub fn new<P: AsRef<RenderNode>>(
2727
child: &P,
2828
color_matrix: &graphene::Matrix,
2929
color_offset: &graphene::Vec4,

gsk4/src/cross_fade_node.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Take a look at the license at the top of the repository in the LICENSE file.
22

3-
use crate::{IsRenderNode, RenderNode, RenderNodeType};
3+
use crate::{RenderNode, RenderNodeType};
44
use glib::translate::*;
55

66
glib::wrapper! {
@@ -23,7 +23,11 @@ define_render_node!(
2323

2424
impl CrossFadeNode {
2525
#[doc(alias = "gsk_cross_fade_node_new")]
26-
pub fn new<P: IsRenderNode, Q: IsRenderNode>(start: &P, end: &Q, progress: f32) -> Self {
26+
pub fn new<P: AsRef<RenderNode>, Q: AsRef<RenderNode>>(
27+
start: &P,
28+
end: &Q,
29+
progress: f32,
30+
) -> Self {
2731
skip_assert_initialized!();
2832
unsafe {
2933
from_glib_full(ffi::gsk_cross_fade_node_new(

gsk4/src/debug_node.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Take a look at the license at the top of the repository in the LICENSE file.
22

3-
use crate::{IsRenderNode, RenderNode, RenderNodeType};
3+
use crate::{RenderNode, RenderNodeType};
44
use glib::translate::*;
55

66
glib::wrapper! {
@@ -23,7 +23,7 @@ define_render_node!(
2323

2424
impl DebugNode {
2525
#[doc(alias = "gsk_debug_node_new")]
26-
pub fn new<P: IsRenderNode>(child: &P, message: &str) -> Self {
26+
pub fn new<P: AsRef<RenderNode>>(child: &P, message: &str) -> Self {
2727
skip_assert_initialized!();
2828
unsafe {
2929
from_glib_full(ffi::gsk_debug_node_new(

gsk4/src/opacity_node.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Take a look at the license at the top of the repository in the LICENSE file.
22

3-
use crate::{IsRenderNode, RenderNode, RenderNodeType};
3+
use crate::{RenderNode, RenderNodeType};
44
use glib::translate::*;
55

66
glib::wrapper! {
@@ -23,7 +23,7 @@ define_render_node!(
2323

2424
impl OpacityNode {
2525
#[doc(alias = "gsk_opacity_node_new")]
26-
pub fn new<P: IsRenderNode>(child: &P, opacity: f32) -> Self {
26+
pub fn new<P: AsRef<RenderNode>>(child: &P, opacity: f32) -> Self {
2727
skip_assert_initialized!();
2828
unsafe {
2929
from_glib_full(ffi::gsk_opacity_node_new(

gsk4/src/render_node.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,13 @@ impl fmt::Display for RenderNode {
156156
}
157157
}
158158

159+
#[doc(hidden)]
160+
impl AsRef<RenderNode> for RenderNode {
161+
fn as_ref(&self) -> &Self {
162+
self
163+
}
164+
}
165+
159166
macro_rules! define_render_node {
160167
($rust_type:ident, $ffi_type:path, $get_type:path, $node_type:path) => {
161168
impl ::glib::StaticType for $rust_type {

gsk4/src/renderer.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
// Take a look at the license at the top of the repository in the LICENSE file.
22

3-
use crate::{IsRenderNode, Renderer};
3+
use crate::{RenderNode, Renderer};
44
use glib::object::IsA;
55
use glib::translate::*;
66

77
pub trait RendererExtManual: 'static {
88
#[doc(alias = "gsk_renderer_render")]
9-
fn render<P: IsRenderNode>(&self, root: &P, region: Option<&cairo::Region>);
9+
fn render<P: AsRef<RenderNode>>(&self, root: &P, region: Option<&cairo::Region>);
1010

1111
#[doc(alias = "gsk_renderer_render_texture")]
12-
fn render_texture<P: IsRenderNode>(
12+
fn render_texture<P: AsRef<RenderNode>>(
1313
&self,
1414
root: &P,
1515
viewport: Option<&graphene::Rect>,
1616
) -> Option<gdk::Texture>;
1717
}
1818

1919
impl<O: IsA<Renderer>> RendererExtManual for O {
20-
fn render<P: IsRenderNode>(&self, root: &P, region: Option<&cairo::Region>) {
20+
fn render<P: AsRef<RenderNode>>(&self, root: &P, region: Option<&cairo::Region>) {
2121
unsafe {
2222
ffi::gsk_renderer_render(
2323
self.as_ref().to_glib_none().0,
@@ -27,7 +27,7 @@ impl<O: IsA<Renderer>> RendererExtManual for O {
2727
}
2828
}
2929

30-
fn render_texture<P: IsRenderNode>(
30+
fn render_texture<P: AsRef<RenderNode>>(
3131
&self,
3232
root: &P,
3333
viewport: Option<&graphene::Rect>,

gsk4/src/repeat_node.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Take a look at the license at the top of the repository in the LICENSE file.
22

3-
use crate::{IsRenderNode, RenderNode, RenderNodeType};
3+
use crate::{RenderNode, RenderNodeType};
44
use glib::translate::*;
55

66
glib::wrapper! {
@@ -23,7 +23,7 @@ define_render_node!(
2323

2424
impl RepeatNode {
2525
#[doc(alias = "gsk_repeat_node_new")]
26-
pub fn new<P: IsRenderNode>(
26+
pub fn new<P: AsRef<RenderNode>>(
2727
bounds: &graphene::Rect,
2828
child: &P,
2929
child_bounds: Option<&graphene::Rect>,

0 commit comments

Comments
 (0)