Browse Source

CAM renaming/fixing with build problems

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

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

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

Loading…
Cancel
Save