Browse Source

CAM renaming/fixing with build problems

pull/107/head
Andrea Ciliberti 2 years ago
parent
commit
7688644fe1
  1. 258
      ctru-rs/src/services/cam.rs

258
ctru-rs/src/services/cam.rs

@ -1,11 +1,10 @@
//! CAM service //! Camera service
//! //!
//! The CAM service provides access to the cameras. Cameras can return 2D images //! The CAM service provides access to the cameras. Cameras can return images
//! in the form of byte vectors which can be used for display or other usages. //! in the form of byte vectors which can be displayed or used in other ways.
use crate::error::{Error, ResultCode}; use crate::error::{Error, ResultCode};
use crate::services::gspgpu::FramebufferFormat; use crate::services::gspgpu::FramebufferFormat;
use bitflags::bitflags;
use ctru_sys::Handle; use ctru_sys::Handle;
use std::time::Duration; use std::time::Duration;
@ -21,177 +20,154 @@ pub struct Cam {
pub both_outer_cams: BothOutwardCam, pub both_outer_cams: BothOutwardCam,
} }
bitflags! { /// Flag to pass to [Camera::flip_image]
/// A set of flags to be passed to [Camera::flip_image] #[derive(Default)]
#[derive(Default)] #[repr(u32)]
pub struct CamFlip: u32 { pub enum FlipMode {
const NONE = ctru_sys::FLIP_NONE; None = ctru_sys::FLIP_NONE,
const HORIZONTAL = ctru_sys::FLIP_HORIZONTAL; Horizontal = ctru_sys::FLIP_HORIZONTAL,
const VERTICAL = ctru_sys::FLIP_VERTICAL; Vertical = ctru_sys::FLIP_VERTICAL,
const REVERSE = ctru_sys::FLIP_REVERSE; Reverse = ctru_sys::FLIP_REVERSE,
}
} }
bitflags! { /// Flag to pass to [Camera::set_view_size]
/// A set of flags to be passed to [Camera::set_view_size] #[repr(u32)]
#[derive(Default)] pub enum PictureSize {
pub struct CamSize: u32 { Vga = ctru_sys::SIZE_VGA,
const VGA = ctru_sys::SIZE_VGA; QVga = ctru_sys::SIZE_QVGA,
const QVGA = ctru_sys::SIZE_QVGA; QQVga = ctru_sys::SIZE_QQVGA,
const QQVGA = ctru_sys::SIZE_QQVGA; Cif = ctru_sys::SIZE_CIF,
const CIF = ctru_sys::SIZE_CIF; QCif = ctru_sys::SIZE_QCIF,
const QCIF = ctru_sys::SIZE_QCIF; DS = ctru_sys::SIZE_DS_LCD,
const DS_LCD = ctru_sys::SIZE_DS_LCD; DSX4 = ctru_sys::SIZE_DS_LCDx4,
const DS_LCD_X4 = ctru_sys::SIZE_DS_LCDx4; TopLCD = ctru_sys::SIZE_CTR_TOP_LCD,
const CTR_TOP_LCD = ctru_sys::SIZE_CTR_TOP_LCD; BottomLCD = ctru_sys::SIZE_CTR_BOTTOM_LCD,
const CTR_BOTTOM_LCD = ctru_sys::SIZE_CTR_BOTTOM_LCD;
}
} }
bitflags! { /// Flag to pass to [Camera::set_frame_rate]
/// A set of flags to be passed to [Camera::set_frame_rate] #[repr(u32)]
#[derive(Default)] pub enum FrameRate {
pub struct CamFrameRate: u32 { Fps15 = ctru_sys::FRAME_RATE_15,
const RATE_15 = ctru_sys::FRAME_RATE_15; Fps15To5 = ctru_sys::FRAME_RATE_15_TO_5,
const RATE_15_TO_5 = ctru_sys::FRAME_RATE_15_TO_5; Fps15To2 = ctru_sys::FRAME_RATE_15_TO_2,
const RATE_15_TO_2 = ctru_sys::FRAME_RATE_15_TO_2; Fps10 = ctru_sys::FRAME_RATE_10,
const RATE_10 = ctru_sys::FRAME_RATE_10; Fps8_5 = ctru_sys::FRAME_RATE_8_5,
const RATE_8_5 = ctru_sys::FRAME_RATE_8_5; Fps5 = ctru_sys::FRAME_RATE_5,
const RATE_5 = ctru_sys::FRAME_RATE_5; Fps20 = ctru_sys::FRAME_RATE_20,
const RATE_20 = ctru_sys::FRAME_RATE_20; Fps20To5 = ctru_sys::FRAME_RATE_20_TO_5,
const RATE_20_TO_5 = ctru_sys::FRAME_RATE_20_TO_5; Fps30 = ctru_sys::FRAME_RATE_30,
const RATE_30 = ctru_sys::FRAME_RATE_30; Fps30To5 = ctru_sys::FRAME_RATE_30_TO_5,
const RATE_30_TO_5 = ctru_sys::FRAME_RATE_30_TO_5; Fps15To10 = ctru_sys::FRAME_RATE_15_TO_10,
const RATE_15_TO_10 = ctru_sys::FRAME_RATE_15_TO_10; Fps20To10 = ctru_sys::FRAME_RATE_20_TO_10,
const RATE_20_TO_10 = ctru_sys::FRAME_RATE_20_TO_10; Fps30To10 = ctru_sys::FRAME_RATE_30_TO_10,
const RATE_30_TO_10 = ctru_sys::FRAME_RATE_30_TO_10;
}
} }
bitflags! { /// Flag to pass to [Camera::set_white_balance] or
/// A set of flags to be passed to [Camera::set_white_balance] or /// [Camera::set_white_balance_without_base_up]
/// [Camera::set_white_balance_without_base_up] #[repr(u32)]
#[derive(Default)] pub enum WhiteBalance {
pub struct CamWhiteBalance: u32 { Auto = ctru_sys::WHITE_BALANCE_AUTO,
const AUTO = ctru_sys::WHITE_BALANCE_AUTO; Type3200K = ctru_sys::WHITE_BALANCE_3200K,
const BALANCE_3200K = ctru_sys::WHITE_BALANCE_3200K; Type4150K = ctru_sys::WHITE_BALANCE_4150K,
const BALANCE_4150K = ctru_sys::WHITE_BALANCE_4150K; Type5200K = ctru_sys::WHITE_BALANCE_5200K,
const BALANCE_5200K = ctru_sys::WHITE_BALANCE_5200K; Type6000K = ctru_sys::WHITE_BALANCE_6000K,
const BALANCE_6000K = ctru_sys::WHITE_BALANCE_6000K; Type7000K = ctru_sys::WHITE_BALANCE_7000K,
const BALANCE_7000K = ctru_sys::WHITE_BALANCE_7000K;
Normal = ctru_sys::WHITE_BALANCE_NORMAL,
const NORMAL = ctru_sys::WHITE_BALANCE_NORMAL; Tungsten = ctru_sys::WHITE_BALANCE_TUNGSTEN,
const TUNGSTEN = ctru_sys::WHITE_BALANCE_TUNGSTEN; FluorescentLight = ctru_sys::WHITE_BALANCE_WHITE_FLUORESCENT_LIGHT,
const WHITE_FLUORESCENT_LIGHT = ctru_sys::WHITE_BALANCE_WHITE_FLUORESCENT_LIGHT; Daylight = ctru_sys::WHITE_BALANCE_DAYLIGHT,
const DAYLIGHT = ctru_sys::WHITE_BALANCE_DAYLIGHT; Cloudy = ctru_sys::WHITE_BALANCE_CLOUDY,
const CLOUDY = ctru_sys::WHITE_BALANCE_CLOUDY; Horizon = ctru_sys::WHITE_BALANCE_HORIZON,
const HORIZON = ctru_sys::WHITE_BALANCE_HORIZON; Shade = ctru_sys::WHITE_BALANCE_SHADE,
const SHADE = ctru_sys::WHITE_BALANCE_SHADE;
}
} }
bitflags! { /// Flag to pass to [Camera::set_photo_mode]
/// A set of flags to be passed to [Camera::set_photo_mode] #[repr(u32)]
#[derive(Default)] pub enum PhotoMode {
pub struct CamPhotoMode: u32 { Normal = ctru_sys::PHOTO_MODE_NORMAL,
const NORMAL = ctru_sys::PHOTO_MODE_NORMAL; Portrait = ctru_sys::PHOTO_MODE_PORTRAIT,
const PORTRAIT = ctru_sys::PHOTO_MODE_PORTRAIT; Landscape = ctru_sys::PHOTO_MODE_LANDSCAPE,
const LANDSCAPE = ctru_sys::PHOTO_MODE_LANDSCAPE; Nightview = ctru_sys::PHOTO_MODE_NIGHTVIEW,
const NIGHTVIEW = ctru_sys::PHOTO_MODE_NIGHTVIEW; Letter = ctru_sys::PHOTO_MODE_LETTER,
const LETTER = ctru_sys::PHOTO_MODE_LETTER;
}
} }
bitflags! { /// Flag to pass to [Camera::set_effect]
/// A set of flags to be passed to [Camera::set_effect] #[repr(u32)]
#[derive(Default)] pub enum Effect {
pub struct CamEffect: u32 { None = ctru_sys::EFFECT_NONE,
const NONE = ctru_sys::EFFECT_NONE; Mono = ctru_sys::EFFECT_MONO,
const MONO = ctru_sys::EFFECT_MONO; Sepia = ctru_sys::EFFECT_SEPIA,
const SEPIA = ctru_sys::EFFECT_SEPIA; Negative = ctru_sys::EFFECT_NEGATIVE,
const NEGATIVE = ctru_sys::EFFECT_NEGATIVE; Negafilm = ctru_sys::EFFECT_NEGAFILM,
const NEGAFILM = ctru_sys::EFFECT_NEGAFILM; Sepia01 = ctru_sys::EFFECT_SEPIA01,
const SEPIA01 = ctru_sys::EFFECT_SEPIA01;
}
} }
bitflags! { /// Flag to pass to [Camera::set_contrast]
/// A set of flags to be passed to [Camera::set_contrast] #[repr(u32)]
#[derive(Default)] pub enum Contrast {
pub struct CamContrast: u32 { Pattern01 = ctru_sys::CONTRAST_PATTERN_01,
const PATTERN_01 = ctru_sys::CONTRAST_PATTERN_01; Pattern02 = ctru_sys::CONTRAST_PATTERN_02,
const PATTERN_02 = ctru_sys::CONTRAST_PATTERN_02; Pattern03 = ctru_sys::CONTRAST_PATTERN_03,
const PATTERN_03 = ctru_sys::CONTRAST_PATTERN_03; Pattern04 = ctru_sys::CONTRAST_PATTERN_04,
const PATTERN_04 = ctru_sys::CONTRAST_PATTERN_04; Pattern05 = ctru_sys::CONTRAST_PATTERN_05,
const PATTERN_05 = ctru_sys::CONTRAST_PATTERN_05; Pattern06 = ctru_sys::CONTRAST_PATTERN_06,
const PATTERN_06 = ctru_sys::CONTRAST_PATTERN_06; Pattern07 = ctru_sys::CONTRAST_PATTERN_07,
const PATTERN_07 = ctru_sys::CONTRAST_PATTERN_07; Pattern08 = ctru_sys::CONTRAST_PATTERN_08,
const PATTERN_08 = ctru_sys::CONTRAST_PATTERN_08; Pattern09 = ctru_sys::CONTRAST_PATTERN_09,
const PATTERN_09 = ctru_sys::CONTRAST_PATTERN_09; Pattern10 = ctru_sys::CONTRAST_PATTERN_10,
const PATTERN_10 = ctru_sys::CONTRAST_PATTERN_10; Pattern11 = ctru_sys::CONTRAST_PATTERN_11,
const PATTERN_11 = ctru_sys::CONTRAST_PATTERN_11;
Low = ctru_sys::CONTRAST_LOW,
const LOW = ctru_sys::CONTRAST_LOW; Normal = ctru_sys::CONTRAST_NORMAL,
const NORMAL = ctru_sys::CONTRAST_NORMAL; High = ctru_sys::CONTRAST_HIGH,
const HIGH = ctru_sys::CONTRAST_HIGH;
}
} }
bitflags! { /// Flag to pass to [Camera::set_lens_correction]
/// A set of flags to be passed to [Camera::set_lens_correction] #[repr(u32)]
#[derive(Default)] pub enum LensCorrection {
pub struct CamLensCorrection: u32 { Off = ctru_sys::LENS_CORRECTION_DARK,
const OFF = ctru_sys::LENS_CORRECTION_OFF; Normal = ctru_sys::LENS_CORRECTION_NORMAL,
const ON_70 = ctru_sys::LENS_CORRECTION_ON_70; Bright = ctru_sys::LENS_CORRECTION_BRIGHT,
const ON_90 = ctru_sys::LENS_CORRECTION_ON_90; }
const DARK = ctru_sys::LENS_CORRECTION_DARK; /// Flag to pass to [Camera::set_output_format]
const NORMAL = ctru_sys::LENS_CORRECTION_NORMAL; #[repr(u32)]
const BRIGHT = ctru_sys::LENS_CORRECTION_BRIGHT; pub enum OutputFormat {
} Yuv422 = ctru_sys::OUTPUT_YUV_422,
Rgb565 = ctru_sys::OUTPUT_RGB_565,
} }
bitflags! { /// Flag to pass to [Cam::play_shutter_sound]
/// A set of flags to be passed to [Camera::set_output_format] #[repr(u32)]
#[derive(Default)] pub enum ShutterSound {
pub struct CamOutputFormat: u32 { Normal = ctru_sys::SHUTTER_SOUND_TYPE_NORMAL,
const YUV_422 = ctru_sys::OUTPUT_YUV_422; Movie = ctru_sys::SHUTTER_SOUND_TYPE_MOVIE,
const RGB_565 = ctru_sys::OUTPUT_RGB_565; MovieEnd = ctru_sys::SHUTTER_SOUND_TYPE_MOVIE_END,
}
} }
impl TryFrom<FramebufferFormat> for CamOutputFormat { impl TryFrom<FramebufferFormat> for OutputFormat {
type Error = (); type Error = ();
fn try_from(value: FramebufferFormat) -> Result<Self, Self::Error> { fn try_from(value: FramebufferFormat) -> Result<Self, Self::Error> {
match value { match value {
FramebufferFormat::Rgb565 => Ok(CamOutputFormat::RGB_565), FramebufferFormat::Rgb565 => Ok(OutputFormat::RGB_565),
_ => Err(()), _ => Err(()),
} }
} }
} }
impl TryFrom<CamOutputFormat> for FramebufferFormat { impl TryFrom<OutputFormat> for FramebufferFormat {
type Error = (); type Error = ();
fn try_from(value: CamOutputFormat) -> Result<Self, Self::Error> { fn try_from(value: OutputFormat) -> Result<Self, Self::Error> {
match value { match value {
CamOutputFormat::RGB_565 => Ok(FramebufferFormat::Rgb565), OutputFormat::Rgb565 => Ok(FramebufferFormat::Rgb565),
_ => Err(()), _ => Err(()),
} }
} }
} }
bitflags! {
/// A set of flags to be passed to [Cam::play_shutter_sound]
#[derive(Default)]
pub struct CamShutterSoundType: u32 {
const NORMAL = ctru_sys::SHUTTER_SOUND_TYPE_NORMAL;
const MOVIE = ctru_sys::SHUTTER_SOUND_TYPE_MOVIE;
const MOVIE_END = ctru_sys::SHUTTER_SOUND_TYPE_MOVIE_END;
}
}
/// Struct containing coordinates passed to [Camera::set_trimming_params]. /// Struct containing coordinates passed to [Camera::set_trimming_params].
pub struct CamTrimmingParams { pub struct CamTrimmingParams {
x_start: i16, x_start: i16,
@ -806,8 +782,8 @@ impl Cam {
} }
} }
/// Plays the specified sound based on the [CamShutterSoundType] argument /// Plays the specified sound based on the [ShutterSound] argument
pub fn play_shutter_sound(&self, sound: CamShutterSoundType) -> crate::Result<()> { pub fn play_shutter_sound(&self, sound: ShutterSound) -> crate::Result<()> {
unsafe { unsafe {
ResultCode(ctru_sys::CAMU_PlayShutterSound(sound.bits()))?; ResultCode(ctru_sys::CAMU_PlayShutterSound(sound.bits()))?;
Ok(()) Ok(())

Loading…
Cancel
Save