Commit Graph

17 Commits

Author SHA1 Message Date
Henry Sloan
ce889e3472 Move blend mode declaration and implementation (#308) 2021-07-25 16:01:50 -04:00
George Atkinson
d5c9821a02 Blend modes (#252)
* Add backend for selecting layer blend mode

* Change dropdown input to support callback on change

* Add debug messages

* Fix canvas update for blend-modes

* Finish up and polish blend modes implementations

* Add changes from code review

Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2021-07-23 18:21:07 +01:00
TrueDoctor
16722c69cd Add thumbnails for layers (#286)
Fixes: #285
2021-07-21 11:30:49 +02:00
TrueDoctor
55a2448764 Apply clippy lints (#278) 2021-07-17 11:12:37 +02:00
Simon Desloges
8e09c10899 Add support for folder bounding boxes (#276) 2021-07-16 10:34:04 -04:00
Simon Desloges
3a14b38dfa Add a document method that returns a layer's bounding box (#273)
* Add a document method that returns a layer's bounding box

* Moved `use` to the top of the file

* Add layer local bounding box method
2021-07-15 23:18:32 -04:00
Henry Sloan
363b9c7ffa Implement fill tool (#254)
* Implement fill tool

* Add fill tool shortcut

* Add getters and setters to styles

* Make fill tool act on the topmost layer clicked

* Refactor fill operation

* Refactor and unify selection tolerance

* Add mark_as_dirty function

* Fix getter names
2021-07-14 03:49:12 -04:00
Paul Kupper
751fabb417 Implement viewport selection (#178)
* Begin implementing viewport selection

* Implement viewport click and drag selection for ellipse and rectangle

* Begin implementing line selection

* Remove debug prints

* Run cargo format

* Use DVec2 instead of kurbo::Point

* Line and polyline intersection

* Run cargo format

* Add fix for missing layer panel update

* Replace point selection with box selection

* Formatting

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-07-05 01:05:12 +02:00
Till Arnold
94c42ff5d7 Copy and paste layers MVP (#220)
* Initial implementation of copy and paste for layers

* Sort layers on copy and add tests

* Fix logger init for test

* Fix `copy_paste_deleted_layers` test

* Readd erroneously removed svg

* Make Layer serializable and cleanup

* Add test for copy and pasting folders

* Cleanup

* Rename left_mouseup

* Cleanup

* Add length check to test

* Fix typo

* Make mouseup, mousedown more consistent
2021-07-05 00:34:47 +02:00
0HyperCube
1d2bb6fb2b Re-add PartialEq removed in #230 (#232) 2021-07-04 22:27:09 +01:00
0HyperCube
ece23e7c5f Remove partialeq for layers (#230)
# Conflicts:
#	Cargo.lock
#	core/document/Cargo.toml
2021-06-29 21:06:37 +01:00
0HyperCube
bb3293af43 Add a movable canvas with matricies (#175)
* Convert polygon and rectangle tool to kurbo::BezPath

* Add glam

* Add affine transform to elipse and remove circle

* Format

* Add svg group and add matrix for group

* Convert all operations to use matricies

* Work uses same transform as root

* Format

* Frontend fixed to render changes to working colors when changed from backend (#180)

* Backend and Frontend modification to show working color mods

* Remove comments & change precedence for tool and doc actions

* Add keybind for resetting work colors

* Minor Frontend changes

* Remove early sample "greet" code

* Add a contributing section to the project README

* Add moving document around

* Add document transform for tools

* Update to GraphiteEditor's fork

* Use write in foreach for rendering group / folder

* Add missing TranslateDown action

* Use points for line operation

* Format

* Add todo to change to shape's aspect ratio

* Remove empty if

* Initial pass at refactor

* Fix polyline test

* Use document message to modify document transform

* Messages -> Operations

* Transform layer

* Format

* Use DAffine2::IDENTITY

* Clean up kurbo generation for line and rect

* Use .into for rectangle points

* Rename cols to transform

* Rename other cols to transform

* Add todo for into_iter

* Remove unnecessary clone

Co-authored-by: akshay1992kalbhor <akshay1992kalbhor@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2021-06-26 21:44:48 +01:00
T0mstone
3431128e66 Another round of polishing (#101)
* Implement basic refactorings

* Simplify some match statements

* Rename `ix` to `index`

If we're not going with a single letter name,
then a full word makes more sense.

* Rename `as_hex` to `to_hex`

`as_` implies lossless reinterpretation
while the function does a conversion that loses information

* Replace `for_each` with for loops

for loops are a lot easier to read and maintain.

* factor out x and y coords in Line::render

this is arguably more ergonomic

* Remove redundant `format!(format_args!())`
2021-05-04 15:08:24 +02:00
Paul Kupper
0ff9e5ff49 Improve Ellipse Tool (#98) 2021-05-04 10:53:00 +02:00
TrueDoctor
fc10575dfa Improve rendering efficiency and add caching (#95)
Fixes #84

*Reduce heap allocations
* Add caching for rendering svgs
* Deduplicate UpdateCanvas Responses
2021-05-02 21:21:39 +02:00
Edwin Cheng
e40727e914 Implement Pen Tool (#79) 2021-04-23 00:12:24 +08:00
0HyperCube
46c9ef02ca Add colors in Rust (#78)
* 🎨 Add colors in Rust

* 🌿 Use an option for the properties and #[repr(C)]

*  Remove WASM dependency on document.

* 😎 Wrap Fill and stroke in a style struct.

* 📦 Use crate::Color

* Merge Add transactions for temporary modifications to the document

* Run cargo fmt

* Color without a 'U'
2021-04-21 22:25:06 +01:00