-
Notifications
You must be signed in to change notification settings - Fork 0
Annotation Editor
The Annotation Editor is a full-featured image editor that opens after each capture (configurable) or can be launched independently. It provides 17 drawing tools, text formatting, color management, undo/redo, and multiple export formats.
The editor is a borderless window with custom chrome, hosting a canvas control with a left-side toolbar and bottom status bar.
Opening the editor:
- Automatically after capture (configurable)
- Via hotkey (configurable)
- From the Gallery (double-click any capture)
- From the Capture Preview (click Edit)
- Command line:
CyberSnap.exe --editor
Only one editor window can be open at a time. Opening a new capture in the editor prompts to save changes before replacing the content.
| Tool | Description |
|---|---|
| Pan | Drag to pan the canvas |
| Move (Pick) | Select, move, and resize annotations |
| Eraser | Click annotations to delete them |
| Tool | Description | Constraints |
|---|---|---|
| Draw | Freehand stroke | β |
| Rectangle | Draw rectangles and squares | Shift = square |
| Circle | Draw ellipses and circles | Shift = circle |
| Line | Draw straight lines | Shift = 45Β° snap |
| Arrow | Draw arrows with head | Shift = 45Β° snap |
| Curved Arrow | Draw Bezier-curve arrows | β |
| Text | Add text annotations with formatting | β |
| Highlight | Semi-transparent highlight overlay | β |
| Blur | Pixelate/blur regions for privacy | β |
| Step Number | Auto-incrementing numbered badges | β |
| Magnifier | Loupe lens showing 3Γ zoom | β |
| Emoji | Place emoji glyphs from picker | Scroll to resize |
| Tool | Description |
|---|---|
| Cut Out | Remove horizontal or vertical strips |
| Crop | Crop to a rectangular region |
| Rotate 90Β° CW | Rotate canvas clockwise |
| Rotate 90Β° CCW | Rotate canvas counter-clockwise |
| Flip Vertical | Flip canvas vertically |
| Flip Horizontal | Flip canvas horizontally |
| Modifier | Effect |
|---|---|
| Shift (hold) | Constrain proportions (square/circle), snap angles (45Β°) |
| Space (hold) | Temporary Pan from any tool |
| Enter | Confirm Crop/Cut Out operation |
| Escape | Cancel current operation, deselect tool |
| Mouse wheel | Adjust size (Emoji) or zoom |
11 preset colors:
- Cyan, Blue, Purple, Red, Orange, Yellow, Green, White, Pink, Gray, Black
- 12th button opens the Color Picker Flyout
- Persists custom color to settings
- Click without custom color β opens picker
- Click with custom color β applies it directly
A floating chip near the cursor shows the current tool color and stroke width. Visible for: Draw, Arrow, Curved Arrow, Line, Rectangle, Circle, Highlight.
5 stroke widths: 2, 3, 4, 6, 10 points
Annotations scale proportionally with canvas size relative to a 1280px standard width. Larger images automatically use thicker strokes for visual consistency.
A toolbar appears above the text being edited with:
| Button | Function |
|---|---|
| B | Bold toggle |
| I | Italic toggle |
| Stroke | Text outline toggle |
| Shadow | Drop shadow toggle |
| Background | Background chip toggle |
| Font | Font family dropdown |
| β | Decrease font size |
| + | Increase font size |
| Grip | Drag to move text box |
| Align L | Left alignment |
| Align C | Center alignment |
| Align R | Right alignment |
- System fonts + favorites + recents
- 12 visible items, scrollable
- Star column to toggle favorites
- Persists recent and favorite fonts to settings
- Multiline text box with
AcceptsReturn - Enter commits text; Shift+Enter inserts newline
- Escape cancels editing
- Double-click word selection
- Corner handles resize font size while dragging
- Mouse wheel adjusts font size when editing
Text style settings persist between annotations:
- Bold (default: true), Italic (default: false)
- Stroke (default: true), Shadow (default: true)
- Background (default: false)
- Font size (default: 24), Font family (default: Segoe UI)
- Font size range: 10β120
- Click an annotation to select it (surface-scoped, not hollow interior)
- Drag to move selected annotation
- 8 resize handles: 4 corners + 4 edges
- Center knob for move-only items
Click-drag on empty space for rubber-band rectangle selection.
- Ctrl+Click to toggle items in multi-selection
- Group drag moves all selected items
- Sticky banner shows count: "{N} objects selected"
- Ctrl+A selects all annotations
- Double-click in Pick mode selects all
Pixelation-based blur for obscuring sensitive information:
- Downscales region to blocks (10px), then upscales with bilinear interpolation
- Renders against clean base bitmap (ignores other annotations)
- Uses scratch buffer for performance
Auto-incrementing numbered badges:
- Next number = max existing number + 1
- Circular badge with shadow, inner edge, and contrast text
- Ghost preview (60% opacity) follows cursor before placement
Loupe lens showing magnified detail:
- 3Γ zoom factor
- 50px source region sampled
- Circular lens with nearest-neighbor interpolation (crisp pixels)
- Crosshair at center
- Auto-positioning: flips to opposite side if near image edge
- 65% opacity ghost preview during hover
- Search box filters emoji catalog by name
- Owner-drawn grid (8 columns Γ N rows, 40px cells)
- Scrollable with mouse wheel
- Keyboard: Escape closes, Space initiates pan
- 360Γ384px popup, positioned near tool button
- Mouse wheel adjusts size (16β128px range)
- Ghost preview at 60% opacity follows cursor
- Placed at click position with scaled bitmap size
- 8 crop handles: 4 corners (L-shaped) + 4 edge midpoints (pill-shaped)
- Dark overlay outside crop region
- Dashed cyan border around crop area
- Drag from empty space to create new crop rect
- Enter key confirms crop
- Double-click inside crop confirms
- Leaving Crop tool confirms
- Escape or right-click cancels
Removes horizontal or vertical strips from the image:
- Auto-axis detection based on drag direction
- Shift locks axis
- Dark overlay on strip to remove
- Cyan border and size badge
- Confirmed/abandoned like Crop
8 amber handles floating outside image edge:
- Default: extend/trim canvas (anchor opposite edge)
-
ResizeHandlesScaleContent: scale content instead - Shift at corner: toggle aspect ratio keep/break
- Confirmation dialog before applying
- Live size badge shows dimensions during drag
| Limit | Value |
|---|---|
| Minimum | 16 Γ 16 px |
| Maximum | 32768 Γ 32768 px |
| Operation | Description |
|---|---|
| Rotate 90Β° CW | Rotate canvas clockwise |
| Rotate 90Β° CCW | Rotate canvas counter-clockwise |
| Rotate 180Β° | Flip both axes |
| Operation | Description |
|---|---|
| Flip Horizontal | Mirror left-right |
| Flip Vertical | Mirror top-bottom |
β οΈ Transforms flatten annotations into the bitmap (with confirmation dialog).
| Control | Action |
|---|---|
| Zoom in | Increase zoom by 1.15Γ per click |
| Zoom out | Decrease zoom by 1.15Γ per click |
| Fit to window | Auto-scale to fit viewport |
| Actual size | 1:1 pixel mapping (100%) |
| Zoom percentage | Click to cycle presets |
- Minimum: 20%
- Maximum: 800%
- Step: 1.15Γ per click or mouse wheel notch
| Shortcut | Action |
|---|---|
| Ctrl + Plus | Zoom in |
| Ctrl + Minus | Zoom out |
| Ctrl + 0 | Fit to window |
| Ctrl + 1 | Actual size |
| Mouse wheel | Zoom in/out |
| Space + drag | Temporary pan |
- Click and drag with Pan tool to move the canvas
- Scroll bars appear when content exceeds viewport
- Command pattern with
IEditCommand(Apply()/Revert()) - Two stacks: undo and redo
- Configurable history limit (1β200 steps, default 100)
- Maximum 200 annotations per canvas
| Command | Description |
|---|---|
AddAnnotationCommand |
Add new annotation |
DeleteAnnotationCommand |
Remove annotation |
ReplaceAnnotationCommand |
Replace annotation |
TransformAnnotationCommand |
Move/resize annotation |
TransformMultipleAnnotationsCommand |
Move/resize multiple |
DeleteMultipleAnnotationsCommand |
Delete multiple |
AddMultipleAnnotationsCommand |
Add multiple |
CropCommand |
Crop canvas |
CutOutCommand |
Cut out strips |
ResizeCanvasCommand |
Resize canvas |
TransformCanvasCommand |
Rotate/flip canvas |
PasteImageCommand |
Paste image |
EraseCommand |
Eraser tool |
| Shortcut | Action |
|---|---|
| Ctrl + Z | Undo |
| Ctrl + Y | Redo |
| Ctrl + Shift + Z | Redo (alternative) |
Saves the complete editable project:
- Base bitmap + all annotations + guides
- Preserves editability of all vector elements
- Open and continue editing later
| Format | Extension | Description |
|---|---|---|
| PNG | .png |
Lossless compression, best quality |
| JPEG | .jpg |
Adjustable quality, smaller files |
.pdf |
Document export with page options |
| Option | Choices |
|---|---|
| Page size | Fit, A4, Legal, A3, Letter |
| Orientation | Portrait, Landscape |
| Margins | Configurable (cm) |
| Image layout | Fit to page, 1:1 draw |
| Span mode | Tall images sliced across pages |
| Metadata | Title, Author, Tags |
Renders the final bitmap and copies to clipboard, including saved file path reference.
| Menu Item | Action |
|---|---|
| Open image... | Open an image file |
| Paste | Paste from clipboard |
| Save project... | Save .csnp project |
| Resize canvas... | Open resize dialog |
| Transform β Rotate 90Β° CW/CCW, 180Β°, Flip H/V | Canvas transforms |
| Fit to window | Zoom to fit |
| Reset zoom | Return to 100% |
| Undo / Redo | History operations |
| Exit | Close editor |
Right-click on canvas deselects the current tool back to Move and shows "Tool deselected" banner.
- Hint area with lightbulb icon
- Dynamic text based on current tool/state
- Hidden when window width < 950px
- Coordinates display β X, Y in image space
- Zoom controls β Slider (20β800%), percentage label, reset, fit
- Toggle switches β Auto-fit on load, pan mode lock
- Brand area: Editor icon + "CyberSnap" title
- Filename display with LED status indicator:
- Amber β Unsaved changes
- Blue β New canvas (untitled)
- Green β Saved
- Window controls: Close, Maximize/Restore, Minimize
- Menu (burger), Donate (heart)
- Undo / Redo
- Gallery β Open history window
- Capture β Take new screenshot
- New / Open / Save
- Copy / Paste
- Export split-button β Main + chevron menu (PNG/JPEG/PDF)
- Share split-button β Main + chevron (providers)
When the editor opens with a blank canvas:
- Centered card with multi-layered drop shadow
- Icon: Picture frame with mountain artwork, spark badge
- Title: "Drop an image or project"
- Hint: "Double-click Β· drag and drop"
- 4 action chips: New canvas, Open, Paste, Capture
- Drag-over state with highlighted border
- Horizontal and vertical dashed cyan lines with shadow
- Hover highlight (brighter, thicker)
- Drag from rulers to create
- Remove by dragging off-canvas
- Controlled by
EditorShowRulerssetting
| Shortcut | Action |
|---|---|
| Ctrl + N | New canvas |
| Ctrl + O | Open file |
| Ctrl + S | Save project |
| Ctrl + Shift + S | Save as... |
| Ctrl + Shift + U | Share/upload |
| Ctrl + W | Close document |
| Shortcut | Action |
|---|---|
| Ctrl + C | Copy to clipboard |
| Ctrl + V | Paste image |
| Ctrl + A | Select all |
| Ctrl + D | Duplicate selection |
| Delete | Delete selected |
| Escape | Deselect tool / cancel |
| Shortcut | Action |
|---|---|
| Ctrl + Plus | Zoom in |
| Ctrl + Minus | Zoom out |
| Ctrl + 0 | Fit to window |
| Ctrl + 1 | Actual size |
| Mouse wheel | Zoom in/out |
| Shortcut | Action |
|---|---|
| Ctrl + Z | Undo |
| Ctrl + Y | Redo |
| Ctrl + Shift + Z | Redo (alternative) |
Drag image files onto any part of the editor to open them. Supports the same formats as the Open dialog.
| Setting | Location | Description |
|---|---|---|
| Auto-open after capture | Settings β Capture | Launch editor automatically |
| Fit to window on open | Settings β Editor | Auto-zoom to fit canvas |
| Show rulers | Settings β Editor | Display canvas rulers |
| Show coordinates | Settings β Editor | Display cursor position |
| Show hints | Settings β Editor | Show contextual tooltips |
| Show banners | Settings β Editor | Show notification banners |
| Auto-crop controls | Settings β Editor | Auto-crop UI controls |
| Show resize handles | Settings β Editor | Display canvas resize handles |
| Resize handles scale content | Settings β Editor | Scale vs. extend on resize |
| Pan mode lock objects | Settings β Editor | Lock objects in pan mode |
| Undo limit | Settings β Editor | History depth (1β200) |
| Show scrollbars | Settings β Editor | Custom scrollbar overlays |
| Tool color | Settings β Editor | Default annotation color |
| Stroke width | Settings β Editor | Default stroke width |
| Text font size | Settings β Editor | Default text size |