Add ColorspaceType type
This commit is contained in:
75
src/types/colorspace_type.rs
Normal file
75
src/types/colorspace_type.rs
Normal file
@ -0,0 +1,75 @@
|
||||
use crate::bindings;
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
#[repr(u32)]
|
||||
pub enum ColorspaceType {
|
||||
Undefined = bindings::ColorspaceType_UndefinedColorspace,
|
||||
CMY = bindings::ColorspaceType_CMYColorspace,
|
||||
CMYK = bindings::ColorspaceType_CMYKColorspace,
|
||||
GRAY = bindings::ColorspaceType_GRAYColorspace,
|
||||
HCL = bindings::ColorspaceType_HCLColorspace,
|
||||
HCLp = bindings::ColorspaceType_HCLpColorspace,
|
||||
HSB = bindings::ColorspaceType_HSBColorspace,
|
||||
HSI = bindings::ColorspaceType_HSIColorspace,
|
||||
HSL = bindings::ColorspaceType_HSLColorspace,
|
||||
HSV = bindings::ColorspaceType_HSVColorspace,
|
||||
HWB = bindings::ColorspaceType_HWBColorspace,
|
||||
Lab = bindings::ColorspaceType_LabColorspace,
|
||||
LCH = bindings::ColorspaceType_LCHColorspace,
|
||||
LCHab = bindings::ColorspaceType_LCHabColorspace,
|
||||
LCHuv = bindings::ColorspaceType_LCHuvColorspace,
|
||||
Log = bindings::ColorspaceType_LogColorspace,
|
||||
LMS = bindings::ColorspaceType_LMSColorspace,
|
||||
Luv = bindings::ColorspaceType_LuvColorspace,
|
||||
OHTA = bindings::ColorspaceType_OHTAColorspace,
|
||||
Rec601YCbCr = bindings::ColorspaceType_Rec601YCbCrColorspace,
|
||||
Rec709YCbCr = bindings::ColorspaceType_Rec709YCbCrColorspace,
|
||||
RGB = bindings::ColorspaceType_RGBColorspace,
|
||||
scRGB = bindings::ColorspaceType_scRGBColorspace,
|
||||
sRGB = bindings::ColorspaceType_sRGBColorspace,
|
||||
Transparent = bindings::ColorspaceType_TransparentColorspace,
|
||||
xyY = bindings::ColorspaceType_xyYColorspace,
|
||||
XYZ = bindings::ColorspaceType_XYZColorspace,
|
||||
YCbCr = bindings::ColorspaceType_YCbCrColorspace,
|
||||
YCC = bindings::ColorspaceType_YCCColorspace,
|
||||
YDbDr = bindings::ColorspaceType_YDbDrColorspace,
|
||||
YIQ = bindings::ColorspaceType_YIQColorspace,
|
||||
YPbPr = bindings::ColorspaceType_YPbPrColorspace,
|
||||
YUV = bindings::ColorspaceType_YUVColorspace,
|
||||
LinearGRAY = bindings::ColorspaceType_LinearGRAYColorspace,
|
||||
Jzazbz = bindings::ColorspaceType_JzazbzColorspace,
|
||||
DisplayP3 = bindings::ColorspaceType_DisplayP3Colorspace,
|
||||
Adobe98 = bindings::ColorspaceType_Adobe98Colorspace,
|
||||
ProPhoto = bindings::ColorspaceType_ProPhotoColorspace,
|
||||
Oklab = bindings::ColorspaceType_OklabColorspace,
|
||||
Oklch = bindings::ColorspaceType_OklchColorspace,
|
||||
}
|
||||
|
||||
impl Default for ColorspaceType {
|
||||
fn default() -> Self {
|
||||
return ColorspaceType::RGB;
|
||||
}
|
||||
}
|
||||
|
||||
impl From<ColorspaceType> for bindings::ColorspaceType {
|
||||
fn from(value: ColorspaceType) -> Self {
|
||||
return value as bindings::ColorspaceType;
|
||||
}
|
||||
}
|
||||
|
||||
impl From<bindings::ColorspaceType> for ColorspaceType {
|
||||
fn from(value: bindings::ColorspaceType) -> Self {
|
||||
/*
|
||||
* SAFETY:
|
||||
*
|
||||
* `ColorspaceType` has the same repr as `bindings::ColorspaceType` - u32
|
||||
*
|
||||
* If `value` is less than Oklch than it is in the vaild range and can be safely
|
||||
* reinterpreted as `ColorspaceType`
|
||||
*/
|
||||
if value <= bindings::ColorspaceType_OklchColorspace {
|
||||
return unsafe { std::mem::transmute(value) };
|
||||
}
|
||||
return ColorspaceType::default();
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,9 @@
|
||||
mod colorspace_type;
|
||||
mod composite_operator;
|
||||
mod metric_type;
|
||||
mod resource_type;
|
||||
|
||||
pub use self::colorspace_type::ColorspaceType;
|
||||
pub use self::composite_operator::CompositeOperator;
|
||||
pub use self::metric_type::MetricType;
|
||||
pub use self::resource_type::ResourceType;
|
||||
|
||||
@ -3,7 +3,7 @@ use std::convert::TryInto;
|
||||
use crate::bindings;
|
||||
|
||||
/// Resource type to use with [set_resource_limit](crate::MagickWand::set_resource_limit)
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum ResourceType {
|
||||
Undefined = bindings::ResourceType_UndefinedResource as isize,
|
||||
Area = bindings::ResourceType_AreaResource as isize,
|
||||
|
||||
Reference in New Issue
Block a user