Skip to main content

visionkit/
recognized_text.rs

1use core::ffi::c_char;
2use core::ptr;
3
4use crate::error::VisionKitError;
5use crate::ffi;
6use crate::private::{error_from_status, parse_area_support_info_ptr};
7use crate::support::AreaSupportInfo;
8
9/// Wraps the VisionKit recognized text area.
10pub struct RecognizedText;
11
12impl RecognizedText {
13    /// Returns VisionKit availability metadata for this area.
14    pub fn support_info() -> Result<AreaSupportInfo, VisionKitError> {
15        let mut support_json: *mut c_char = ptr::null_mut();
16        let mut err_msg: *mut c_char = ptr::null_mut();
17        let status = unsafe {
18            ffi::recognized_text::vk_recognized_text_support_json(&mut support_json, &mut err_msg)
19        };
20        if status == ffi::status::OK {
21            unsafe { parse_area_support_info_ptr(support_json, "RecognizedText support info") }
22        } else {
23            Err(unsafe { error_from_status(status, err_msg) })
24        }
25    }
26
27    /// Returns whether this VisionKit area is available on the current platform.
28    pub fn is_available_on_current_platform() -> Result<bool, VisionKitError> {
29        Ok(Self::support_info()?.available_on_current_platform)
30    }
31}