skia_safe/codec/
encoded_origin.rs1use crate::{prelude::*, ISize, Matrix};
2use skia_bindings::{self as sb, SkEncodedOrigin};
3
4#[repr(i32)]
10#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, Default)]
11pub enum EncodedOrigin {
12 #[default]
14 TopLeft = SkEncodedOrigin::TopLeft as _,
15 TopRight = SkEncodedOrigin::TopRight as _,
17 BottomRight = SkEncodedOrigin::BottomRight as _,
19 BottomLeft = SkEncodedOrigin::BottomLeft as _,
21 LeftTop = SkEncodedOrigin::LeftTop as _,
23 RightTop = SkEncodedOrigin::RightTop as _,
25 RightBottom = SkEncodedOrigin::RightBottom as _,
27 LeftBottom = SkEncodedOrigin::LeftBottom as _,
29}
30
31native_transmutable!(SkEncodedOrigin, EncodedOrigin, encoded_origin_layout);
32
33impl EncodedOrigin {
34 pub const LAST: Self = EncodedOrigin::LeftBottom;
35 pub const DEFAULT: Self = EncodedOrigin::TopLeft;
36
37 pub fn to_matrix(self, size: impl Into<ISize>) -> Matrix {
41 let size = size.into();
42 let mut m = Matrix::default();
43 unsafe {
44 sb::C_SkEncodedOriginToMatrix(
45 self.into_native(),
46 size.width,
47 size.height,
48 m.native_mut(),
49 )
50 };
51 m
52 }
53
54 pub fn swaps_width_height(self) -> bool {
57 (self as i32) >= EncodedOrigin::LeftTop as i32
58 }
59}