made book mark for infinite canvas with position zoom and page #1466
h-990
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Feature Proposal: Native Document Bookmarking System & Apple Silicon Optimization 🚀
Hi everyone! I've been working on a massive quality-of-life improvement for navigating large and complex files in OpenBoard. I've successfully implemented a Native C++ Bookmarking System, allowing users to save, rename, and instantly teleport to specific spatial coordinates and pages across infinite whiteboards.
Simultaneously, I resolved some lingering legacy build constraints and upgraded the compilation pipeline to natively support Apple Silicon (M-Series) via
C++20.Here is a breakdown of the architectural additions and features implemented in this branch:
🌟 Key UI/UX Features
UBBookmarksWidget): Integrated a new interactive widget into the left-side Dock Palette.Ctrl+Bshortcut.QInputDialogfor personalized organization (e.g., "Math Graph" or "Lecture End").setActiveDocumentScene(targetPage)before navigating, teleporting the user perfectly over to the correct whiteboard layout.🛠️ Core Architecture Integration
mapToScene()) which tend to drift due to scrollbars. Instead, the logic calculates symmetric sub-pixel bounds heavily relying on the rawQTransformgraphic matrix inversion (x = -transform.m31() / m11()) ensuring pixel-perfectcenterOn()restorations.metadata.rdfPersistence: Tightly wove the bookmark state intoUBMetadataDcSubsetAdaptor. Bookmarks are serialized viaQJsonDocumentinto the standard.ubz/.rdfarchitecture so endpoints persist permanently across computing sessions and file transfers without creating isolated local databases.QStringparsing over standardtoInt()bounds for Bookmark IDs (which rely on millisecond Epoch time generation) resolving edge-case integer overflows during deletion cycles.🍏 Compilation & Apple Silicon (M4) Portability
CONFIG += c++20withinOpenBoard.proto finally stabilize compilation warnings and natively support Apple Silicon Poppler APIs (which recently removed raw pointer bridging in favor of legacy-dropping reference tracking likestd::span).macdeployqtpackaging parameters securely toQMAKE_APPLE_DEVICE_ARCHS = arm64.📂 Modified Core Files
src/board/UBBoardController.cpp&.h(Coordinate Mapping & Scene Flips)src/gui/UBBookmarksWidget.cpp&.h(GUI Components & QListWidget Setup)src/board/UBBoardPaletteManager.cpp(Left Dock Registration)src/adaptors/UBMetadataDcSubsetAdaptor.cpp(RDF Serialization)src/core/UBSettings.cpp(Metadata Key Registration)OpenBoard.pro(C++20 Flag & ABI Locks)I have heavily tested the build bounds locally on an M4 Mac environments, and it natively supports all Homebrew architectures securely. I'd love to hear the team's thoughts on this addition or answer any structural questions regarding the implementation approach before submitting the PR diffs!
Thanks!
Beta Was this translation helpful? Give feedback.
All reactions