05_live_text_interaction/
05_live_text_interaction.rs1use std::path::PathBuf;
2
3use visionkit::prelude::*;
4
5fn asset_path() -> PathBuf {
6 PathBuf::from(env!("CARGO_MANIFEST_DIR"))
7 .join("examples")
8 .join("assets")
9 .join("live_text.png")
10}
11
12fn main() -> Result<(), Box<dyn std::error::Error>> {
13 if !ImageAnalyzer::is_supported() {
14 println!("ImageAnalyzer is not supported on this Mac");
15 return Ok(());
16 }
17
18 let asset_path = asset_path();
19 let analyzer = ImageAnalyzer::new()?;
20 let analysis = analyzer.analyze_image_at_path(
21 &asset_path,
22 ImageOrientation::Up,
23 &ImageAnalyzerConfiguration::new(ImageAnalysisTypes::TEXT),
24 )?;
25
26 let interaction = LiveTextInteraction::new()?;
27 interaction.track_image_at_path(&asset_path)?;
28 interaction.set_analysis(&analysis)?;
29 interaction.set_preferred_interaction_types(LiveTextInteractionTypes::AUTOMATIC_TEXT_ONLY)?;
30 interaction.set_selectable_items_highlighted(true)?;
31 let rect = interaction.contents_rect()?;
32 println!("contents rect: {rect:?}");
33 let overlay_text = interaction.text();
34 println!("overlay text: {overlay_text:?}");
35 println!(
36 "live text button visible: {}",
37 interaction.live_text_button_visible()?
38 );
39 println!(
40 "supplementary hidden: {}",
41 interaction.is_supplementary_interface_hidden()?
42 );
43 Ok(())
44}