+ decentralized shortcut declaration
+ each service/controller is now responsible for declaring its shorcuts
- documentation (cheatsheet) is still to be maintained manually
- init order matters (shortcutService has to be instanciated before
everyone else) => should have a standalone KeyboardService singleton
which is ready as soon as it is loaded
+ cleanup of color management
+ colors are now stored in palette controller
+ drawing controller has a dependency on palette controller
+ UPDATE COLOR events have been removed (they were used only for
synchronizing palette and drawing controller)
+ added shortcuts for all tools in ToolController
+ modified structure of tools in Controller to Array of descriptors to
allow to declare shortcuts directly when setting up the tool controller
+ added explanatory comment for CanvasUtils.disableImageSmoothing
+ detect browser for chosing wheel/mousewheel event in DrawingController
+ create ABSTRACT_FUNCTION constant to be reused forabstract methods
- Minimap usability : mouseup and mousemove events are now plugged on
document.body instead of the minimap's controller. This way the user can
move his mouse outside the container to keep moving the map's frame.
Also the mouseup information is no longer lost if it occurs outside for
the minimap.
- When imported 1 picture and then importing another one, the picture
preview was not cleaned and was displaying the two images side by side.
Fixed in ImportController.js
- Switched all double-quoted strings in ImportController to single-quoted
strings. Should enforce this using jshint
- Aligned all inputs in the import picture panel
- Renamed 'Preview :' import section to 'Info :'. Mostly it's to make it
shorter, but also I'd like to display additional information to the
right of the preview in the future.
- Added MinimapController that displays a frame on the animated preview
when zoomed in
- Added bounds for the offset to make sure it doesn't go crazy
- Added new utility Math.js with a minmax function
- TODO : the minimap controller has a lot of dependencies, see if could be
cleaned up
- TODO : DrawingController knows the size of the picture it has to render
only indirectly, which makes it hard in some cases (such as boundary
checking performed during setOffset)
- Extracted layers rendering logic from DrawingController to dedicated
class
- Turned RendererManager into Composite renderer (extends
AbstractRenderer)
- AbstractRenderer no longer contains a render(frame) method, implementing
the render differs too much between my current renderers to impose a
single signature, but I should improve this later if too much time on ma
hands
- simplified Renderer(s) architecture (removed decorator,
CachedFrameRenderer simply inherits from FrameRenderer now)
- keeping AbstractRenderer to act as interface
- fixed issue with layers : forgot to clone the first frame while merging
and therefore was modifying the original frame when I just wanted to
create a tmp frame (FrameUtils.js)
- extracted the mousemove throttling delay used in DrawingController to
Constants.js and reduced it from 40ms to 10ms
- Created AbstractRenderer in rendering package
- Created CachedRenderer and CachedFrameRenderer to extract basic frame
caching logic from DrawingController
- Created RendererManager to synchronize updates made to several Renderer
settings
- Moved FrameRenderer from pskl.rendering to pskl.rendering.frame
- Fixed the resize of the drawing area when the window is resized
- added pskl.controller.settings.ImportController (empty atm)
- moved SettingsController under settings namespace
- move settings templates in a dedicated folder
- created import icon (svg is in the resources folder)
- added import button in right-layer
M CanvasRenderer : can set the color used to represent transparency
M app.js : modified code responsible for saving when in website mode
M PiskelController.js : just some argument renaming
!! NOT STABLE !!
Initial implementation. No UI update yet.
Check js/model/Piskel.js and js/model/Layer.js for an overview of the new
API.
Piskels can be saved on the existing service.
Previous piskels cannot be loaded. This should be fixed soon.