- src/viewer.rs: full-size decode (turbojpeg DCT shrink, 2x-screen cap bounded by GPU max texture, EXIF orientation applied) + transform model (fit/clamp/zoom_at) + single-finger pan & double-tap state machine. 18 unit tests. - Pinch: Slint 1.18's ScaleRotateGestureHandler. Key finding: the CORE (TouchState in internal/core/input.rs), not the backend, synthesizes PinchGesture from raw two-finger touches on every backend including Android — the second finger never reaches a TouchArea, so manual two-finger math is dead code (the earlier draft was removed). - main.slint: Viewer overlay (image + status + close button + full- surface TouchArea + ScaleRotateGestureHandler). The close button must be declared AFTER the full-surface TouchArea: 1.18 TouchArea grabs every press (GrabMouse) and aborts the front-to-back sibling traversal. - lib.rs: open/close/pinch/pointer wiring; Android back key (via the vendor CloseRequested patch) closes the viewer first. - vendor: androidwindowadapter back-key -> CloseRequested patch (Slint 1.18 has no back-key close handling). - gputex.rs: max_texture_size() for the decode cap. - HANDOFF: M4 done; new gotchas 6.14-16; emulator two-finger sendevent (MT-B) injection recipe. Verified on emulator (pad_avd): real two-finger pinch zoom, double-tap zoom/reset, pan, button + back close, grid scroll unaffected. Phone (Pixel 9 Pro, release aarch64): grid, viewer open, 4080x3072 decode, double-tap, back. Pinch not injectable on the user build (SELinux blocks /dev/input writes) — covered by unit tests + emulator. |
||
|---|---|---|
| .. | ||
| java | ||
| LICENSES | ||
| .cargo_vcs_info.json | ||
| .cargo-ok | ||
| androidwindowadapter.rs | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Cargo.toml.orig | ||
| javahelper.rs | ||
| lib.rs | ||
| README.md | ||
| stg.rs | ||
| vsync.rs | ||
NOTE: This library is an internal crate of the Slint project.
WARNING: This crate does not follow the semver convention for versioning and can
only be used with version = "=x.y.z" in Cargo.toml.
Slint Android Activity Backend
This crate implements the Android backend/platform for Slint.
It uses the android-activity crate to initialize the app and provide events handling.
It can be used by using functions from the slint::android module