Current section

Files

Jump to
weapp src wechat camera.gleam
Raw

src/wechat/camera.gleam

//// camera module provides camera context API bindings
//// details in [wechat document](https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/)
////
import gleam/javascript/promise.{type Promise}
import wechat/object.{type JsObject, type WechatCallback, type WechatResult}
/// CameraContext type
///
pub type CameraContext
/// CameraFrameListener type
///
pub type CameraFrameListener
/// `wx.createCameraContext`
/// Create camera context
///
@external(javascript, "../wechat_media_ffi.mjs", "createCameraContext")
pub fn create_camera_context() -> CameraContext
/// `CameraContext.startRecord`
/// Start recording video
///
@external(javascript, "../wechat_media_ffi.mjs", "cameraContextStartRecord")
pub fn camera_start_record(
ctx cc: CameraContext,
timeout t: Int,
selfie_mirror sm: Bool,
complete cb: WechatCallback,
) -> Promise(WechatResult)
/// `CameraContext.stopRecord`
/// Stop recording video
///
@external(javascript, "../wechat_media_ffi.mjs", "cameraContextStopRecord")
pub fn camera_stop_record(
ctx cc: CameraContext,
complete cb: WechatCallback,
) -> Promise(WechatResult)
/// `CameraContext.takePhoto`
/// Take a photo
///
@external(javascript, "../wechat_media_ffi.mjs", "cameraContextTakePhoto")
pub fn camera_take_photo(
ctx cc: CameraContext,
quality q: String,
complete cb: WechatCallback,
) -> Promise(WechatResult)
/// `CameraContext.setZoom`
/// Set camera zoom level
///
@external(javascript, "../wechat_media_ffi.mjs", "cameraContextSetZoom")
pub fn camera_set_zoom(ctx cc: CameraContext, zoom z: Float) -> Nil
/// `CameraContext.onCameraFrame`
/// Listen for camera frame updates
///
@external(javascript, "../wechat_media_ffi.mjs", "cameraContextOnCameraFrame")
pub fn camera_on_frame(
ctx cc: CameraContext,
callback cb: fn(JsObject) -> CameraFrameListener,
) -> CameraFrameListener
/// `CameraFrameListener.start`
/// Start listening for camera frames
///
@external(javascript, "../wechat_media_ffi.mjs", "cameraFrameListenerStart")
pub fn camera_frame_listener_start(listener: CameraFrameListener) -> Nil
/// `CameraFrameListener.stop`
/// Stop listening for camera frames
///
@external(javascript, "../wechat_media_ffi.mjs", "cameraFrameListenerStop")
pub fn camera_frame_listener_stop(listener: CameraFrameListener) -> Nil