Skip to content

Commit 1a23e25

Browse files
committed
Generate bindings for gsk::PorterDuff
1 parent a6d52c6 commit 1a23e25

File tree

5 files changed

+167
-6
lines changed

5 files changed

+167
-6
lines changed

gsk4/Gir.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ generate = [
4242
"Gsk.PathIntersection",
4343
"Gsk.PathMeasure",
4444
"Gsk.PathOperation",
45+
"Gsk.PorterDuff",
4546
"Gsk.RadialGradientNode",
4647
"Gsk.RenderNodeType",
4748
"Gsk.RepeatingLinearGradientNode",

gsk4/src/auto/enums.rs

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1234,6 +1234,160 @@ impl From<PathOperation> for glib::Value {
12341234
}
12351235
}
12361236

1237+
#[cfg(feature = "v4_22")]
1238+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
1239+
#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
1240+
#[non_exhaustive]
1241+
#[doc(alias = "GskPorterDuff")]
1242+
pub enum PorterDuff {
1243+
#[doc(alias = "GSK_PORTER_DUFF_SOURCE")]
1244+
Source,
1245+
#[doc(alias = "GSK_PORTER_DUFF_DEST")]
1246+
Dest,
1247+
#[doc(alias = "GSK_PORTER_DUFF_SOURCE_OVER_DEST")]
1248+
SourceOverDest,
1249+
#[doc(alias = "GSK_PORTER_DUFF_DEST_OVER_SOURCE")]
1250+
DestOverSource,
1251+
#[doc(alias = "GSK_PORTER_DUFF_SOURCE_IN_DEST")]
1252+
SourceInDest,
1253+
#[doc(alias = "GSK_PORTER_DUFF_DEST_IN_SOURCE")]
1254+
DestInSource,
1255+
#[doc(alias = "GSK_PORTER_DUFF_SOURCE_OUT_DEST")]
1256+
SourceOutDest,
1257+
#[doc(alias = "GSK_PORTER_DUFF_DEST_OUT_SOURCE")]
1258+
DestOutSource,
1259+
#[doc(alias = "GSK_PORTER_DUFF_SOURCE_ATOP_DEST")]
1260+
SourceAtopDest,
1261+
#[doc(alias = "GSK_PORTER_DUFF_DEST_ATOP_SOURCE")]
1262+
DestAtopSource,
1263+
#[doc(alias = "GSK_PORTER_DUFF_XOR")]
1264+
Xor,
1265+
#[doc(alias = "GSK_PORTER_DUFF_CLEAR")]
1266+
Clear,
1267+
#[doc(hidden)]
1268+
__Unknown(i32),
1269+
}
1270+
1271+
#[cfg(feature = "v4_22")]
1272+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
1273+
#[doc(hidden)]
1274+
impl IntoGlib for PorterDuff {
1275+
type GlibType = ffi::GskPorterDuff;
1276+
1277+
#[inline]
1278+
fn into_glib(self) -> ffi::GskPorterDuff {
1279+
match self {
1280+
Self::Source => ffi::GSK_PORTER_DUFF_SOURCE,
1281+
Self::Dest => ffi::GSK_PORTER_DUFF_DEST,
1282+
Self::SourceOverDest => ffi::GSK_PORTER_DUFF_SOURCE_OVER_DEST,
1283+
Self::DestOverSource => ffi::GSK_PORTER_DUFF_DEST_OVER_SOURCE,
1284+
Self::SourceInDest => ffi::GSK_PORTER_DUFF_SOURCE_IN_DEST,
1285+
Self::DestInSource => ffi::GSK_PORTER_DUFF_DEST_IN_SOURCE,
1286+
Self::SourceOutDest => ffi::GSK_PORTER_DUFF_SOURCE_OUT_DEST,
1287+
Self::DestOutSource => ffi::GSK_PORTER_DUFF_DEST_OUT_SOURCE,
1288+
Self::SourceAtopDest => ffi::GSK_PORTER_DUFF_SOURCE_ATOP_DEST,
1289+
Self::DestAtopSource => ffi::GSK_PORTER_DUFF_DEST_ATOP_SOURCE,
1290+
Self::Xor => ffi::GSK_PORTER_DUFF_XOR,
1291+
Self::Clear => ffi::GSK_PORTER_DUFF_CLEAR,
1292+
Self::__Unknown(value) => value,
1293+
}
1294+
}
1295+
}
1296+
1297+
#[cfg(feature = "v4_22")]
1298+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
1299+
#[doc(hidden)]
1300+
impl FromGlib<ffi::GskPorterDuff> for PorterDuff {
1301+
#[inline]
1302+
unsafe fn from_glib(value: ffi::GskPorterDuff) -> Self {
1303+
skip_assert_initialized!();
1304+
1305+
match value {
1306+
ffi::GSK_PORTER_DUFF_SOURCE => Self::Source,
1307+
ffi::GSK_PORTER_DUFF_DEST => Self::Dest,
1308+
ffi::GSK_PORTER_DUFF_SOURCE_OVER_DEST => Self::SourceOverDest,
1309+
ffi::GSK_PORTER_DUFF_DEST_OVER_SOURCE => Self::DestOverSource,
1310+
ffi::GSK_PORTER_DUFF_SOURCE_IN_DEST => Self::SourceInDest,
1311+
ffi::GSK_PORTER_DUFF_DEST_IN_SOURCE => Self::DestInSource,
1312+
ffi::GSK_PORTER_DUFF_SOURCE_OUT_DEST => Self::SourceOutDest,
1313+
ffi::GSK_PORTER_DUFF_DEST_OUT_SOURCE => Self::DestOutSource,
1314+
ffi::GSK_PORTER_DUFF_SOURCE_ATOP_DEST => Self::SourceAtopDest,
1315+
ffi::GSK_PORTER_DUFF_DEST_ATOP_SOURCE => Self::DestAtopSource,
1316+
ffi::GSK_PORTER_DUFF_XOR => Self::Xor,
1317+
ffi::GSK_PORTER_DUFF_CLEAR => Self::Clear,
1318+
value => Self::__Unknown(value),
1319+
}
1320+
}
1321+
}
1322+
1323+
#[cfg(feature = "v4_22")]
1324+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
1325+
impl StaticType for PorterDuff {
1326+
#[inline]
1327+
#[doc(alias = "gsk_porter_duff_get_type")]
1328+
fn static_type() -> glib::Type {
1329+
unsafe { from_glib(ffi::gsk_porter_duff_get_type()) }
1330+
}
1331+
}
1332+
1333+
#[cfg(feature = "v4_22")]
1334+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
1335+
impl glib::HasParamSpec for PorterDuff {
1336+
type ParamSpec = glib::ParamSpecEnum;
1337+
type SetValue = Self;
1338+
type BuilderFn = fn(&str, Self) -> glib::ParamSpecEnumBuilder<Self>;
1339+
1340+
fn param_spec_builder() -> Self::BuilderFn {
1341+
Self::ParamSpec::builder_with_default
1342+
}
1343+
}
1344+
1345+
#[cfg(feature = "v4_22")]
1346+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
1347+
impl glib::value::ValueType for PorterDuff {
1348+
type Type = Self;
1349+
}
1350+
1351+
#[cfg(feature = "v4_22")]
1352+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
1353+
unsafe impl<'a> glib::value::FromValue<'a> for PorterDuff {
1354+
type Checker = glib::value::GenericValueTypeChecker<Self>;
1355+
1356+
#[inline]
1357+
unsafe fn from_value(value: &'a glib::Value) -> Self {
1358+
skip_assert_initialized!();
1359+
from_glib(glib::gobject_ffi::g_value_get_enum(value.to_glib_none().0))
1360+
}
1361+
}
1362+
1363+
#[cfg(feature = "v4_22")]
1364+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
1365+
impl ToValue for PorterDuff {
1366+
#[inline]
1367+
fn to_value(&self) -> glib::Value {
1368+
let mut value = glib::Value::for_value_type::<Self>();
1369+
unsafe {
1370+
glib::gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, self.into_glib());
1371+
}
1372+
value
1373+
}
1374+
1375+
#[inline]
1376+
fn value_type(&self) -> glib::Type {
1377+
Self::static_type()
1378+
}
1379+
}
1380+
1381+
#[cfg(feature = "v4_22")]
1382+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
1383+
impl From<PorterDuff> for glib::Value {
1384+
#[inline]
1385+
fn from(v: PorterDuff) -> Self {
1386+
skip_assert_initialized!();
1387+
ToValue::to_value(&v)
1388+
}
1389+
}
1390+
12371391
#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
12381392
#[non_exhaustive]
12391393
#[doc(alias = "GskRenderNodeType")]

gsk4/src/auto/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,9 @@ pub use self::enums::PathIntersection;
221221
#[cfg(feature = "v4_14")]
222222
#[cfg_attr(docsrs, doc(cfg(feature = "v4_14")))]
223223
pub use self::enums::PathOperation;
224+
#[cfg(feature = "v4_22")]
225+
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]
226+
pub use self::enums::PorterDuff;
224227
pub use self::enums::RenderNodeType;
225228
pub use self::enums::ScalingFilter;
226229
pub use self::enums::SerializationError;

gtk4/Gir.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ manual = [
374374
"Gsk.MaskMode",
375375
"Gsk.MaskNode",
376376
"Gsk.Path",
377+
"Gsk.PorterDuff",
377378
"Gsk.Renderer",
378379
"Gsk.RenderNode",
379380
"Gsk.RoundedRect",

gtk4/src/auto/snapshot.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -405,12 +405,14 @@ pub trait SnapshotExt: IsA<Snapshot> + 'static {
405405
}
406406
}
407407

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: /*Ignored*/gsk::PorterDuff) {
412-
// unsafe { TODO: call ffi:gtk_snapshot_push_composite() }
413-
//}
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+
}
414416

415417
#[cfg(feature = "v4_22")]
416418
#[cfg_attr(docsrs, doc(cfg(feature = "v4_22")))]

0 commit comments

Comments
 (0)