Touch input device #27

Open
rafaelcaricio wants to merge 15 commits from indev into master
Showing only changes of commit 30c5d87bb3 - Show all commits

View file

@ -1,14 +1,15 @@
use core::cell::Cell;
use cstr_core::CString;
use embedded_graphics::pixelcolor::Rgb565;
use embedded_graphics::prelude::*;
use embedded_graphics_simulator::{
OutputSettingsBuilder, SimulatorDisplay, SimulatorEvent, Window,
};
use lvgl::input_device::{BufferStatus, InputData, Pointer};
use lvgl::style::Style;
use lvgl::widgets::{Btn, Label};
use lvgl::{self, Align, Color, LvError, Part, State, Widget, UI};
use std::thread::sleep;
use std::time::{Duration, Instant};
@ -25,11 +26,10 @@ fn main() -> Result<(), LvError> {
ui.disp_drv_register(display)?;
// Define the initial state of your input
let latest_touch_status: Cell<BufferStatus> =
Cell::new(InputData::Touch(Point::new(0, 0)).released().once());
let mut latest_touch_status = InputData::Touch(Point::new(0, 0)).released().once();
// Register a new input device that's capable of reading the current state of the input
let mut touch_screen = Pointer::new(|| latest_touch_status.get());
let mut touch_screen = Pointer::new(|| latest_touch_status);
ui.indev_drv_register(&mut touch_screen)?;
// Create screen and widgets
@ -71,11 +71,9 @@ fn main() -> Result<(), LvError> {
let mut events = window.events().peekable();
if events.peek().is_none() {
latest_touch_status.replace(
InputData::Touch(latest_touch_point.clone())
.released()
.once(),
);
latest_touch_status = InputData::Touch(latest_touch_point.clone())
.released()
.once();
}
for event in events {
@ -87,7 +85,7 @@ fn main() -> Result<(), LvError> {
println!("Clicked on: {:?}", point);
// Send a event to the button directly
latest_touch_point = point.clone();
latest_touch_status.replace(InputData::Touch(point).pressed().once());
latest_touch_status = InputData::Touch(point).pressed().once();
}
SimulatorEvent::Quit => break 'running,
_ => {}