Commit graph

67 commits

Author SHA1 Message Date
jdescottes
cc45ede931 Initial commit 2014-05-12 00:50:13 +02:00
jdescottes
a8e0fef416 Merge branch 'master' into feature-dynamic-palette 2014-05-11 23:34:49 +02:00
juliandescottes
cfb846b6de Moved hardcoded values to constants in PaletteListController 2014-05-11 11:55:00 +02:00
jdescottes
94ce3907da Renamed UsedColorsService to CurrentColorsService + exposed getCurrentColors explicitly 2014-05-08 22:11:16 +02:00
jdescottes
453fbcf88e Fix : changed classnames used for primary and secondary color highlight in palette 2014-05-08 22:03:19 +02:00
jdescottes
3969867dfa Fix : bug when setting switching primary and secondary colors 2014-05-08 21:56:36 +02:00
jdescottes
c98d25ab66 Fix : Duplicate Current Frame bug (shift+n)
Events were not raised when using Duplicate current frame on
PublicPiskelController.
2014-05-08 01:36:59 +02:00
jdescottes
637fa05109 Feature : Current colors palette
Created dynamic palette displaying currently used colors.
This palette is now selected by default.

New service UsedColorsService created. Listens to PISKEL_RESET and
TOOL_RELEASED and keeps track of the list of current colors.

Still need to :
- improve sorting of colors
- allow to clone the current color palette as a custom palette
- add proper getter in UsedColorService to get the list of current colors

Also I hardcoded a max-height for the palettes-list as I found no better
way of handling the case of palettes containing many colors.

Maybe should add a limit to the number of colors handled by this automatic
palette.
2014-05-07 00:43:28 +02:00
jdescottes
f4108c7dbf Fix : removing useless label in resize panel 2014-05-06 07:27:12 +02:00
jdescottes
bc23e9cea6 Enhancement : full piskel build deployed to dest
Use grunt [default] to build the application.
Target dest with a webserver to launch the application.
2014-05-05 22:36:34 +02:00
jdescottes
0b1977b47c Fix : Fixed styling for resize content checkbox 2014-05-05 21:58:17 +02:00
juliandescottes
1db937ae01 Enhancement : Possibility to resize canvas content during resize
- new checkbox in resize panel
- content is resized using nearest neighbor
- deactivated by default

2 bug fixes :
- remove focus after closing drawer
- fire resize event after undo/redo if size changed
2014-05-04 22:58:36 +02:00
jdescottes
38f18360b8 Fix : selection : click on non transparent pixel was cancelling selection 2014-04-30 08:30:29 +02:00
jdescottes
a060e32b15 Enhancement : #169 : Use several meta for shortcut
- can now use shift+ctrl+alt in shortcut definition
- paste opaque for selection remapped to ctrl+shift+V
2014-04-24 13:28:21 +02:00
jdescottes
cf2c0e7045 Enhancement : preview copied selection + paste only opaque 2014-04-24 00:38:21 +02:00
jdescottes
af52d9a96a Enhancement : Selection tools various enhancements
- can use BACKSPACE key to delete selection content
  when no selection, backspace retains the default behavior
- cursor for rectangle selection has been changed to crosshair
- fixed a bug where selection seemed to be cropped when released out of
  the visible canvas
2014-04-23 23:47:23 +02:00
jdescottes
5541d030a5 Feature : undo redo including frame/layer actions
- Frame and Layer CRUD actions are now registered and can be cancelled
- Limited performance impact while drawing
- Improved frame cache invalidation
2014-04-22 23:57:30 +02:00
juliandescottes
c2a3ccc8d0 Simplified SAVE STATE events, added wrap method to easily build decorators 2014-04-20 13:15:30 +02:00
juliandescottes
8335c07519 Fix : layer manager was broken 2014-04-19 20:19:24 +02:00
juliandescottes
b8ef570077 Removed cached serializer in Frame.js 2014-04-19 20:04:43 +02:00
juliandescottes
d45ea00ca5 Refactored piskel controller to extract the event creation 2014-04-19 16:01:51 +02:00
jdescottes
b7e4deae00 Fix : frame and layer should be correctly selected when loading a snapshot state 2014-04-18 13:13:42 +02:00
jdescottes
0cecdc74eb Temp commit 2014-04-17 01:27:49 +02:00
jdescottes
b712a497e2 Feature : import sprites from GIF 2014-04-12 18:54:39 +02:00
jdescottes
9e78086ea8 Feature : import sprites from GIF 2014-04-12 18:48:39 +02:00
jdescottes
a59bfcab11 Feature : import sprites from GIF 2014-04-12 18:40:25 +02:00
jdescottes
29fa604d74 Fix : protect LayerRenderer against fake setDisplaySize calls 2014-04-12 15:16:18 +02:00
jdescottes
c5accf978e Fix : Plug PreviewFilmController to USER_SETTING_CHANGED 2014-04-12 14:19:28 +02:00
jdescottes
76044fa6d4 Fix : Plug PreviewFilmController to USER_SETTING_CHANGED 2014-04-12 14:19:13 +02:00
jdescottes
23f1e8908e Enhancement : performance : event delegation for previewfilmcontroller 2014-04-12 14:15:45 +02:00
jdescottes
b217f8f005 Added progress bar for GIF rendering 2014-04-12 12:09:22 +02:00
jdescottes
09319ecc1b Added progress bar for GIF rendering 2014-04-12 12:08:53 +02:00
jdescottes
3abf0897d5 Enhancement : display canvas size next to cursor coords 2014-04-12 10:14:57 +02:00
jdescottes
ee3285089a Enhancement : shape tool + shift : now constrained to minimum 2014-04-12 09:49:29 +02:00
jdescottes
dc729ee80b Feature : display cursor coordinates
- new controller CursorCoordinatesController
- added div in right column (bottom:0)
- 3 new events : CURSOR_MOVED, DRAG_START, DRAG_END
- modified tools to fire events when necessary

The cursor coordinates are displayed when the mouse is hovering the
drawing area. When the mouse leaves the area, the indication disappears.
If the user is using a tool that involves dragging (selection, rectangle,
circle), the indicator displays the original coordinates (captured during
drag start) and the current coordinates.
2014-04-11 23:32:28 +02:00
jdescottes
abd5ac5959 Feature : export to ZIP 2014-04-11 01:12:01 +02:00
jdescottes
dd4a544d7a Bug : current layer index was a string 2014-04-09 23:38:35 +02:00
jdescottes
39d7d4d8c8 Enhancement : Rename layers
- added rename icon in layers list
- mutualized CSS for edit icon between palette manager and layers list
- new CSS file icons.css for actions/links/buttons using icons
- layers are no longer retrieved by name, but by index
2014-04-09 23:24:25 +02:00
jdescottes
644b72cc6e Bug : New palette name was set to object MouseEvent ! :) 2014-04-02 22:53:58 +02:00
jdescottes
1ce633bd06 Fix : Tools event listeners are now on window
Smoother user experience. Drawing shapes, selecting etc... is no longer
blocked by either the drawing canvas or the document.
2014-04-02 22:37:01 +02:00
jdescottes
c9251229fc Feature : Hold shift to preserve shape ratio
- mutualized shape tools common code in a ShapeTool class
- when holding shift and drawing a frame, the ratio is preserved
- selection and shape tools now support the mouse to leave the drawing
  area
- shape tools can go 'outside' the drawing canvas
- Frame set/getPixel now check the pixel is in range instead of crashing
2014-04-02 22:21:32 +02:00
jdescottes
7357614d9a Fix : Window resize is erasing the canvas
Issue was coming from the cached frame renderer.
During the window resize, we update the displaySize of the frame renderer,
regardless of the fact that the dimensions changed or not.

The setDisplaySize triggers a destruction of the canvas. But the
CachedFrameRenderer will render the frame only if it detects a change. In
this case, setDisplaySize has been overrided in CachedFrameRenderer to
skip any processing if the dimensions didn't change.

This behavior could be actually done in the FrameRenderer itself, but
since this is crucial to the CachedFrameRenderer behavior, I prefer to
keep it in this class.

Alternatively, could implement a way to discard caches of
CachedFrameRenderers from the outside.
2014-03-30 23:28:18 +02:00
jdescottes
090443c318 Feature : Color palette : fix spectrum issue
The palette manager UI is redrawn almost everytime the model changes.
This way, UI is always in sync with the model.

However, spectrum instances are spawning everytime a redraw is performed.
They cannot be cleaned before the redraw is performed, because if a
spectrum picker is opened, it should remain like this. This allows the
cuser to keep modifying a color without having to reopen the picker each
time he/she stops on a color.

As a workaround, I keep a reference on all the spectrum containers and
destroy them all when the manager is disposed.

Ideally I'd prefer to have a single spectrum instance that I could move
around depending on which color the user wants to edit. I.e. I want to
mutualize all the picker instances ...  But this will require a bit more
work.

Also added a notification when the user saves a palette.
Updated z-index of user-message container so that it is always above the
rest of the application.
2014-03-30 22:42:28 +02:00
jdescottes
3be4c78883 Fix : resize application on startup to adapt correctly to narrow screens 2014-03-30 21:55:29 +02:00
jdescottes
3765ce3d5e Issue #158 : updated zindex of minimap zoom square 2014-03-30 21:29:44 +02:00
jdescottes
4410aa5420 minor fix : remove console.log in PalettesListController 2014-03-30 21:01:14 +02:00
jdescottes
6d62d11872 Fix : drawing with the right mouse button (FF, IE)
Mousemove events do not have the correct button information
Need to keep the state of which button is clicked at which moment

This was actually the initial implementation ...
But I removed it because I couldn't remember why we did this in the
beginning.

Added lots of 'warnings' in comments, but won't be safe until we get good
integration tests.

References :
- FF : https://bugzilla.mozilla.org/show_bug.cgi?id=297919
"What if multiple buttons are pressed during mouse move?  And how does the
integer field (button) indicate that no button is pressed?  I think this
should be wontfix -- if people need button information during mouse move events
we need a new way of getting it (buttonSet), not the same way it works for click,
etc."
- IE : couldn't find any reference ...
2014-03-30 20:39:00 +02:00
jdescottes
b734db28dc Css fix + bug fix : double palette created when empty local storage 2014-03-30 16:54:26 +02:00
jdescottes
5b7e07e11e Fixed : spectrum pickers where no destroyed properly 2014-03-30 16:20:58 +02:00
jdescottes
7f17e17cff Minor css fix : adding 5px margin to palettes-list-colors 2014-03-30 15:38:13 +02:00