UNPKG

theta-client-react-native

Version:

This library provides a way to control RICOH THETA using.

163 lines (148 loc) 4.49 kB
import type { ApertureEnum, ExposureCompensationEnum, ExposureDelayEnum, ExposureProgramEnum, GpsInfo, GpsTagRecordingEnum, IsoAutoHighLimitEnum, IsoEnum, Options, PhotoFileFormatEnum, WhiteBalanceEnum, } from '../theta-repository/options'; /** * Capture Builder class */ export abstract class CaptureBuilder<T extends CaptureBuilder<T>> { /** capture options */ options: Options; /** construct capture builder instance */ constructor() { this.options = {}; } /** * Set aperture value. * @param {ApertureEnum} aperture aperture value to set * @return CaptureBuilder */ setAperture(aperture: ApertureEnum): T { this.options.aperture = aperture; return this as unknown as T; } /** * Set color temperature of the camera (Kelvin). * @param {number} kelvin Color temperature to set * @return CaptureBuilder */ setColorTemperature(kelvin: number): T { this.options.colorTemperature = kelvin; return this as unknown as T; } /** * Set exposure compensation (EV). * @param {ExposureCompensationEnum} value Exposure compensation to set * @return CaptureBuilder */ setExposureCompensation(value: ExposureCompensationEnum): T { this.options.exposureCompensation = value; return this as unknown as T; } /** * Set operating time (sec.) of the self-timer. * @param {ExposureDelayEnum} delay Operating time to set * @return CaptureBuilder */ setExposureDelay(delay: ExposureDelayEnum): T { this.options.exposureDelay = delay; return this as unknown as T; } /** * Set exposure program. The exposure settings that take priority can be selected. * @param {ExposureProgramEnum} program Exposure program to set * @return CaptureBuilder */ setExposureProgram(program: ExposureProgramEnum): T { this.options.exposureProgram = program; return this as unknown as T; } /** * Set GPS information. * @param {GpsInfo} gpsInfo GPS information to set * @return CaptureBuilder */ setGpsInfo(gpsInfo: GpsInfo): T { this.options.gpsInfo = gpsInfo; return this as unknown as T; } /** * Set turns position information assigning ON/OFF. * @param {GpsTagRecordingEnum} value Turns position information assigning ON/OFF to set * @return CaptureBuilder */ setGpsTagRecording(value: GpsTagRecordingEnum): T { this.options._gpsTagRecording = value; return this as unknown as T; } /** * Set ISO sensitivity. * @param {IsoEnum} iso ISO sensitivity to set * @return CaptureBuilder */ setIso(iso: IsoEnum): T { this.options.iso = iso; return this as unknown as T; } /** * Set ISO sensitivity upper limit when ISO sensitivity is set to automatic. * @param {IsoAutoHighLimitEnum} iso ISO sensitivity upper limit to set * @return CaptureBuilder */ setIsoAutoHighLimit(iso: IsoAutoHighLimitEnum): T { this.options.isoAutoHighLimit = iso; return this as unknown as T; } /** * Set white balance. * @param {WhiteBalanceEnum} whiteBalance White balance to set * @return CaptureBuilder */ setWhiteBalance(whiteBalance: WhiteBalanceEnum): T { this.options.whiteBalance = whiteBalance; return this as unknown as T; } } /** Capturing status */ export const CapturingStatusEnum = { /** The process is starting */ STARTING: 'STARTING', /** Capture in progress */ CAPTURING: 'CAPTURING', /** Self-timer in progress */ SELF_TIMER_COUNTDOWN: 'SELF_TIMER_COUNTDOWN', /** Performing timeShift shooting */ TIME_SHIFT_SHOOTING: 'TIME_SHIFT_SHOOTING', /** Performing second capture of manual timeShift shooting */ TIME_SHIFT_SHOOTING_SECOND: 'TIME_SHIFT_SHOOTING_SECOND', /** * In the case of time-lag shooting by manual lens, * set while waiting for the second shot to be taken after the first shot is completed. */ TIME_SHIFT_SHOOTING_IDLE: 'TIME_SHIFT_SHOOTING_IDLE', } as const; /** type definition of CapturingStatusEnum */ export type CapturingStatusEnum = (typeof CapturingStatusEnum)[keyof typeof CapturingStatusEnum]; export class PhotoCaptureBuilderBase< T extends PhotoCaptureBuilderBase<T> > extends CaptureBuilder<T> { /** * Set photo file format. * @param {PhotoFileFormatEnum} fileFormat Photo file format to set * @return PhotoCaptureBuilder */ setFileFormat(fileFormat: PhotoFileFormatEnum): T { this.options.fileFormat = fileFormat; return this as unknown as T; } }