RabiscoPad
A bare-bones SVG sketchpad - Licensed under GPL v3.0
Developed by Alexandre B A Villares and Foad S. Farimani
How to run this?
- You will need to install Processing Python Mode— we might provide self-contained "builds" for Linux, MacOS & Windows one day (you could volunteer to mantain them!);
- Clone this repository or just hit download;
- Use the Processing IDE to open the
rabiscopad.pyde
file, mind it must be kept on its folder named rabiscopad
with its .py
modules.
How to contribute?
[TODO: We need better instructions]
- Start by opening a conversation in an issue, after some talk, we will probably love to have your PRs too!
Some documentation
Keyboard shortcuts:
- CONTROL+s save SVG
- c draw circle mode
- l draw line mode
- r draw quad/rectangle mode
- s free drawing 'sketch' mode
- x selection mode
- backspace or delete erase last element or selected element
- e erase all
- + and - change stroke weight
Mouse Wheel
- Use the mouse wheel to rotate selected elements (when in selection mode)
- Hold SHIFT to scale instead
- Hold CONTROL to make the mouse the center of rotation/scaling
Change log
- v2020_12_19 exporting SVG now!
- v2020_12_20 line mode & circle mode
- v2020_12_21 first attempt at GUI Buttons
- v2020_12_22 pe/stroke color buttons
- v2020_12_24 first crude attempt at selection mode
- v2020_12_27 mode buttons, multiple key detection (to get SHIFT)
multiple selection (with SHIFT), moving selected objects with mouse drag
- v2021_01_02 Rotate selected objects with mouse wheel SHIFT will scale,
CONTROL to change center of rotation/scaling
- v2021_01_03 Better selection (for rect, line, circle), highlights are now
translucent over drawing. Added fill selection buttons.
Experimental window resize. Changed some shortcuts!
- v2021_01_10 Let's try Named tuples!!!
Ctrl+s to save, and with timestamp on filename
- v2021_01_23 First Undo attempt
TODO IDEAS:
-
[X] GUI buttons (can be improved a lot)
- [X] stroke/pen colors
- [ ] stroke weight
- [X] drawing modes
- [ ] changing background color
-
[X] save SVG with timestamp on name
- [X] saving SVG on sketch folder with timestamp name!
- [X] save SVG to user selected location
-
[ ] load & save drawing
- HARDER: load SVG and parse elements to allow editing saved file
- EASIER: save/load session data in a serialized file (I should look at: JSON and YAML)
- REALLY EASY: pickle (dump and load of
drawing_elements
list is a nobrainer)
-
[WIP] modes & elements
- [X] line
- [X] circle
- [X] "quad"/rectangle
- [ ] triangle / regular polygon ?
- [ ] polygon ?
- [X] select/edit mode
- erase selected element
- drag mouse to move them
- transform (with the scroll wheel!)
-
[ ] snapping
- to grid / ruler
- to objects (possibly very hard)
-
[ ] other features:
- import image - maybe cumbersome (and involved decisons)
- export raster image (PNG) - easy peasy
- import / open SVG (hard if you want to edit things, easy otherwise)
- layers (maybe hard, hard UI)
- zoom and pan (maybe hard... maybe we don't want to tackle this)
- [ ] change background
- [X] resize the window (done! check for nasty consequences!)
-
[WIP] two-key keyboard shortcuts
- [X] cmd/ctrl + s --> save
- [ ] cmd/ctrl + d --> duplicate selected / last drawn
- [X] Experimental! cmd/ctrl + z --> undo
- [X] Experimental! cmd/ctrl + r --> redo (see above)