44 Commits

Author SHA1 Message Date
David Capello
5c07f86a66 Remove DocumentApi::setPixelFormat() member function 2017-05-17 13:57:36 -03:00
David Capello
23272895c4 Move doc::DitheringMethod -> render::DitheringAlgorithm 2017-05-15 16:26:44 -03:00
David Capello
20b726f73b Merge branch 'master' into beta 2016-08-31 19:53:52 -03:00
David Capello
5ecc356a41 Replace GPL license with the new EULA 2016-08-29 13:08:21 -03:00
David Capello
e9871543be Timeline: Add drag & drop of layers as first child in a group 2016-08-26 18:18:25 -03:00
David Capello
f2f1c1008b Add support to move/copy non-adjacent layers/frames
Changes:
* With this patch we finally removed the LayerIndex class and member
  functions to access layers by index (like Sprite::firstLayer/layerLayer
  /layer/indexToLayer/layerToIndex() etc.). As layer groups can be
  expanded/collapsed, it doesn't make sense to use layer index to
  access layers directly from sprite.
* Now we use a layer_t (int) to access a list of browsable layers each
  time we want to iterate visible layers in the timeline.
* Replaced CelsRange() and Sprite::uniqueCels() param with
  SelectedFrames to iterate non-adjacent cels.
* Updated clipboard operations (copy/paste) in timeline to support
  layer groups.
* Updated Timeline control to support selecting multiple layer/frame
  ranges with Ctrl+ or Alt+click (fix #1157)
* Added more test units for DocumentRange operations (mainly for
  non-adjacent ranges).
2016-08-25 12:31:00 -03:00
David Capello
64c1ecf555 Add support to create layers inside groups 2016-06-08 15:55:44 -03:00
David Capello
f6fa39ba52 Merge NewGroup command into NewLayer command 2016-06-08 15:43:13 -03:00
David Capello
2f91122c26 Rename layer folder/set -> layer group 2016-06-07 19:38:56 -03:00
David Capello
214f886a0e Fix bug showing invalid layer name in Layer Props dialog after "New Layer" command 2015-08-21 14:55:34 -03:00
David Capello
73c725827e Add "Duplicate Cels" command (fix #746) 2015-08-19 15:59:30 -03:00
David Capello
d31f83e098 Add option to load/save default palette preset (fix #626)
Now the default palette is saved in the user configuration
directory, so we can set any palette as the default (it doesn't
matter if it's related or not to a file, it will be copied into
the user directory anyway).
2015-05-08 16:08:55 -03:00
David Capello
5a95c6a48b Adjust frame tags when we move/copy frames 2015-03-12 16:44:42 -03:00
David Capello
2c6067f7e4 Update license of app/ module to GPLv2 2015-02-12 12:16:25 -03:00
David Capello
dc3a0a941a Fix DocumentApi::cropSprite() for layers with linked cels
Remove DocumentApi::displaceLayers/cropCel/cropLayer member functions.
2015-01-21 01:44:01 -03:00
David Capello
03a87b8d24 Remove unused DocumentApi::clearImage() member function 2015-01-20 09:34:23 -03:00
David Capello
e55865843e Replace undo impl: replace undoers with cmds
Undoers were little objects to swap/revert an action. They didn't
execute the action itself, they just revert its previous state. Now
undoers were replaced with cmds: A cmd is an object that
executes/undoes/redoes just one action.

Changes:
* Remove old undo library and app/objects_container_impl.cpp
  (now we use the doc::ObjectId directly to store undo info)
* Remove all Undoers from app/undoers/
* Replace DocumentApi impl with little Cmds in app/cmd/, these
  cmds handle execute/undo/redo of each action at the logic layer
* Remove doc::Dirty object
* Remove doc::Settings: all undo configuration is in the app side
* Move undo options from app:ISettings to app::Preferences
* Rename UndoTransaction to Transaction
* Create a CmdSequence to store a sequence of Cmds (as now the new
  undo library doesn't support open/close groups)
* Add doc::get<T>(ObjectId) function to get any kind of object
  from the doc library by its ID
* Add Cel::document() and Sprite::document() members
* Add Sprite::cels(frame_t) to get all cels in the given frame
* Add Layer::displaceFrames() member function
* Move the "allow non-linear history" flag from undo2::UndoHistory
  to app::DocumentUndo
2015-01-18 22:05:33 -03:00
David Capello
f1f24cbcdd Replace doc::Stock with doc::ImageRef shared pointer
Changes:
* Add doc::ImageRef to count references to the same image between Cels
  (at this moment we cannot generate linked cels anyway)
* Remove doc:Stock class and doc::Sprite::m_stock member variable
* Remove app::undoers::Add/RemoveImage
* Add doc::SubObjectsIO and app::undoers::ObjectIO to
  replace doc::LayerSubObjectsSerializer
2015-01-04 10:58:14 -03:00
David Capello
06d18f1e8a Replace doc::FrameNumber with doc::frame_t 2014-12-28 20:39:11 -03:00
David Capello
da1358c5dc Unify all render code in one library
Changes:
* Create render library (move util/render.cpp to render/render.cpp)
* Move app::Zoom class to render::Zoom
* Remove doc::Image::merge() member function
* Add gfx::Clip helper class (to clip dst/src rectangles before a blit)
* Move doc::composite_image() to render::composite_image()
* Remove doc::Sprite::render()
* Replace Sprite::getPixel() with render::get_sprite_pixel()
* Remove doc::layer_render() function
* Convert DitheringMethod to a enum class
* Add AppRender to configure a render::Render with the app configuration
* Move checked background preferences as document-specific configuration
* Add doc::Sprite::layer() and palette() member functions
* Add doc::Layer::cel() member function
* Add doc::Palette::entry() member function()
* Add doc::frame_t type
* Move create_palette_from_rgb/convert_pixel_format to render library
* ExportSpriteSheet doesn't need a temporary image now that we can specify
  the source rectangle in the render routine
2014-12-28 11:06:11 -03:00
David Capello
66d88ffe5d Merge branch '1.0' 2014-10-24 18:51:16 -03:00
David Capello
4188fa1408 Add ReverseFramesCommand (fix #503) 2014-10-24 11:37:52 -03:00
David Capello
63995c6f0a Merge "raster" namespace into "doc" library 2014-10-20 22:21:31 -03:00
David Capello
546d3af5e8 Fix problems clearing background cels
- The background color to clear is calculated in one place: DocumentApi
- Rename RemoveCel command to ClearCel
2014-09-17 09:53:25 -03:00
David Capello
77a66c1b87 Simplify DocumentApi::clearMask(): we just need the "cel" param 2014-09-12 02:05:32 -03:00
David Capello
4e6e50194e Remove bgcolor param from DocumentApi::backgroundFromLayer() 2014-09-12 01:58:33 -03:00
David Capello
55bfbf5f8b Add DocumentApi::bgColor() member functions 2014-09-12 01:54:21 -03:00
David Capello
ace67b5eee Fix DocumentApi::move/copyCel() now that we can drop cels at a frame > total sprite frames 2014-09-10 23:38:07 -03:00
David Capello
8acfa688cc Add DocumentApi::clearImage() member function 2014-09-10 00:59:14 -03:00
David Capello
da1b7097c6 Clear background layer too in "New Empty Frame" 2014-08-24 20:18:32 -03:00
David Capello
6c571adbd4 Add Alt+B shortcut to create new empty frames 2014-08-24 18:01:52 -03:00
David Capello
71d11e60a7 Complete copy-and-paste operations of frames and cels between documents 2014-08-18 00:21:03 -03:00
David Capello
9fd60f1119 Move Timeline logic to drag-and-drop ranges to app::DocumentRange/move_range/copy_range
This fixes issue 433.
2014-08-07 20:19:31 -03:00
David Capello
91b0c2d071 Refactor: Remove "get" part for member functions that act like a simple getter
Additional change:
- Added Cel::image() to get the related image of the cel directly
2014-07-30 01:28:15 -03:00
David Capello
3e70c5316d Add undo information when the sprite transparent color is modified 2014-05-02 20:00:26 -03:00
David Capello
d76f6f6716 Add DocumentApi::setCelOpacity() 2014-05-02 11:28:21 -03:00
David Capello
942dba36fd Timeline: add support to move/copy ranges (multiple cels/frames/layers)
- Merge Timeline::STATE_MOVING_LAYER/CEL/FRAME to STATE_MOVING_RANGE.
- Remove celmove.h/cpp and move_cel/copy_cel functions. Now they are
  in the Timeline as dropRange/Cels/Frames/Layers member functions.
- Add DocumentApi::copyFrame/moveCel/copyCel member functions.
- Add timeline_drop_layer_deco and timeline_drop_frame_deco skin parts.
- Move code from DuplicateLayerCommand::onExecute() to new member
  function DocumentApi::duplicateLayer().
- Fix a bug changing Cel's frame number: we weren't updating the Cel
  position properly inside the LayerImage::m_cels collection. Now we use
  LayerImage::moveCel() to change the Cel frame number.
- Other fixes to DocumentApi: Change bgcolor from int to color_t.
2014-04-09 21:56:06 -03:00
David Capello
f4b2b47a2c Add #pragma once 2014-03-29 19:40:17 -03:00
David Capello
076be1f22f Timeline: fix problem setting the duration of a frame range 2013-12-22 16:30:04 -03:00
David Capello
85523ba63a Add ability to change the properties of several frames (a range of frames) at once 2013-12-22 12:19:03 -03:00
David Capello
d77efb602e Add DocumentApi::undoEnabled()
Now we can disable the undo information in DocumentApi() passing
a NULL undoers collection on its ctor.
2013-12-08 20:07:02 -03:00
David Capello
ddf4a13490 Add the Palette menu with Load/Save commands 2013-11-15 16:56:50 -03:00
David Capello
cde54f3682 Change BSD license to MIT in sublibraries and fix headers 2013-08-08 21:01:20 -03:00
David Capello
c88f9b172b Refactor: Move app files to src/app subdirectory inside app namespace
- Add HAVE_CONFIG_H wrapper to #include "config.h"
- Removed widgets namespace (it's in app now)
- Move some functions from src/file/file.h to src/base/cfile.h
- Move Vector2d to base library
- Rename MenuItem2 to AppMenuItem
2013-08-05 21:20:19 -03:00