Commit Graph

161 Commits

Author SHA1 Message Date
David Capello 9f39f4384c Add a menu option to lock/unlock each brush
This is an alternative to lock brushes using its keyboard shortcut.
2015-05-06 17:39:40 -03:00
David Capello eeb6d6e1b5 Fix problem resetting fonts after F5 for widgets with "mini font" (after theme is reloaded)
There are some widgets (e.g. fg/bg color buttons in the ColorBar, and
ContextBar's check-boxes) that use a "mini font". We could setup the mini
font in onInitTheme(), but the whole program is not ready to do something
like that (there are too much child_spacing/borders values that are set
outside onInitTheme).

A better way is to ask to the theme itself (Theme::getWidgetFont())
about what font to use for each specific widget. And the Widget::m_font
field can act as a cache of this requested font. So now the "mini font"
is specified in a SkinProperty's flag.
2015-05-05 19:14:33 -03:00
David Capello f1d522f548 Replace brush slots until the user presses the shortcut
We replace brush slots until the user presses its keyboard shortcut, which
means he is interested in reusing the brush. In this way, if we want to
keep a brush, we can press Ctrl+B, select the brush area, and then Alt+1
to keep the first brush, then the next brush slot will be used/replaced
until Alt+2 is pressed, etc.
2015-04-30 11:59:47 -03:00
David Capello 03faee9ce4 Add option to delete all brushes 2015-04-29 17:26:25 -03:00
David Capello f5b7fd84dc Connect to BrushPopup::BrushChange just one time 2015-04-29 16:34:21 -03:00
David Capello edbff42dc8 We can delete brushes right-clicking them and selecting "Delete" 2015-04-29 15:00:05 -03:00
David Capello 1b25c4e9e9 Add slots in the ContextBar to select brushes with Alt+1, Alt+2, etc.
Now the ContextBar contains a set of brushes. The ChangeBrushCommand
supports a new "slot" parameter and "change" = "custom" to select a
specific custom brush from the ContextBar. Alt+1, Alt+2, etc. are mapped
to this ChangeBrushCommand (see changes in gui.xml).

Also, as the ButtonSet that represent different brushes in the ContextBar
uses icons generated from the brush, we don't need the skin parts that
represent each brush type (we can generate those icons from some standard
brushes). Those skin parts were removed.
2015-04-29 12:32:44 -03:00
David Capello b08b226aef Move active brush information to ContextBar 2015-04-28 18:21:33 -03:00
David Capello 303bd120dc Keep one instance of BrushPopup in memory 2015-04-28 12:53:02 -03:00
David Capello f09db4d9aa Add new BrushPopup (now the image brush is previewed)
This is the first step to create a bigger BrushPopup to select brushes
from an history of brushes. The general idea is to use Alt+1, Alt+2, etc.
to select different brushes from a stock.

Also the "discard brush" was removed. As the brush can be discarded
changing the brush type.
2015-04-28 12:38:15 -03:00
David Capello 51b6def023 Remove the "New Brush" button from the ContextBar 2015-04-27 12:07:23 -03:00
David Capello 96769d061e Rename BrushPattern::ALIGNED_FROM_SRC to ALIGNED_TO_SRC 2015-04-27 11:45:00 -03:00
David Capello dfeff22b2f Add possibility to create brushes from selection
Changes:
* Add doc::kImageBrushType
* Add doc::BrushPattern enum
* Add pattern and pattern origin properties to doc::Brush
* Add NewBrush and DiscardBrush commands (new Ctrl+B shortcut to create
  brushes)
* Add BrushInkProcessing
2015-04-27 00:08:04 -03:00
David Capello e725bf93a0 Fix tooltips in ContextBar about selection modifiers 2015-04-10 10:35:45 -03:00
David Capello 881667f01b Replaced app::skin::ThemeColor with app::gen::SkinTheme::Colors
Generate app::gen::SkinFile class from skin.xml to automate creation
of ID references.
2015-02-15 15:29:16 -03:00
David Capello 2c6067f7e4 Update license of app/ module to GPLv2 2015-02-12 12:16:25 -03:00
David Capello 06d18f1e8a Replace doc::FrameNumber with doc::frame_t 2014-12-28 20:39:11 -03:00
David Capello 07c7756638 Add Brush::kMax/MinBrushSize constants 2014-12-07 20:50:26 -03:00
David Capello ca9df1a05e Rename ui::jguiscale() to ui::guiscale()
* Change Theme::guiscale member to Theme::m_guiscale
2014-11-25 22:33:45 -03:00
David Capello acfe155b24 Merge branch '1.0'
Conflicts:
	src/app/color_picker.cpp
	src/raster/sprite.h
2014-11-16 18:59:30 -03:00
David Capello c64ee5729b Add "Auto Select Layer" check box to Move Tool (close #527) 2014-11-16 18:33:31 -03:00
David Capello 736f08099b Merge branch '1.0' 2014-10-25 16:20:33 -03:00
David Capello 0e7f424406 Fix #472 - Undo and redo change the size of spray tool 2014-10-25 12:10:52 -03:00
David Capello 63995c6f0a Merge "raster" namespace into "doc" library 2014-10-20 22:21:31 -03:00
David Capello d14a0fe075 Add "Size" options in CanvasSizeCommand to specify width/height
- Added canvas icons to change the expansion direction in CanvasSizeCommand
- Added Widget::at() and Widget::offerCapture() member functions
- Improved ButtonSet widget
2014-09-08 02:27:41 -03:00
David Capello 522e9a0337 Add Shift/Alt modifiers to selection tools to change Union/Subtract modes (fix #217) 2014-08-24 19:19:38 -03:00
David Capello 6824570c4b Remove base/override.h (use override keyword directly) 2014-08-14 23:07:47 -03:00
David Capello 2c675bfc4f Fix crash in PreviewCommand
We cannot use the ui::Graphics internal surface directly when we use
raster::convert_image_to_surface() (it expects an Rgba surface).
2014-08-09 21:33:38 -03:00
David Capello 7db6ea53c3 Add "Contiguous" option/checkbox for the paint bucket tool (true by default) 2014-08-07 00:07:24 -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 81ffb0c5bd Refactor: Create doc::Context and move some logic from app::Document to doc::Document
The objective of these changes is to create a more testable doc/logic API.

Included changes:
- Added doc::Context, doc::Documents (the old app::Documents),
  and doc::Sprites (and observers for each)
- Added raster::Sprite::createBasicSprite()
- Added doc::ColorMode (equal to raster::PixelFormat)
- Added some methods to doc::Document: context(), sprites(), sprite()
  (to replace app::Document::getSprite()), width/height(), colorMode(),
  name(), and close()
- Moved app::DocumentObserver/Event to doc::DocumentObserver/Event
- Replaced app::ContextObserver with doc::DocumentsObserver and a couple
  of signals.
- Renamed app::Context::getActiveDocument() with
  doc::Context::activeDocument()
- Renamed app::Context::getActiveLocation() with
  app::Context::activeLocation()
- Removed app::ContextObserverList
- Removed app::DocumentId (now we can use doc::ObjectId)
- Removed app::Context::getSettings()
2014-07-29 00:53:24 -03:00
David Capello b9a1fa8e17 Put batck the "Pixel perfect" checkbox in the contextbar
The new UI will be available in v1.1, and it's better if we don't modify
the v1.0 interface too much at this moment.
2014-07-17 09:54:04 -03:00
David Capello 4b7bf5b835 Merge she::Color and ui::Color types in gfx::Color 2014-06-28 16:10:39 -03:00
David Capello 5bbff161b9 Now ui::Graphics uses she::Surface instead of Allegro BITMAP 2014-06-26 22:14:39 -03:00
David Capello dbad153698 Add she::Font class (wrapper of Allegro FONT)
This is an huge refactor to avoid handling Allegro FONT directly. Some
changes:
* Add she::System::defaultDisplay/Font, createRgbaSurface, loadSurface,
  and loadRgbaSurface.
* Rename she::CreateSystem/Instance to she::create_system/instance.
* Remove ui/font.cpp and move ui/fontbmp.cpp to she library.
* ui::IButtonIcon uses she::Surface instead of BITMAP.
* Rename she::LockedSurface::drawAlphaSurface -> drawRgbaSurface
* Rename ui::SetDisplay -> set_display
* Rename _ji_font_text_len -> ui::Graphics::measureUIStringLength
2014-06-22 18:53:14 -03:00
David Capello c639b4dba3 Add "dots" freehand algorithm (change to ButtonSet the selection of FreehandAlgorithm) 2014-06-15 04:14:53 -03:00
David Capello 9ac51fd0be Rename raster::Pen -> raster::Brush 2014-06-14 15:09:43 -03:00
David Capello 153071f082 Fix issue 406: persist ISelectionSettings 2014-06-14 01:35:04 -03:00
David Capello dc5a019c13 ContextBar: Add buttons to drop the selection or cancel the whole operation
- Add ContextBarObserver (and MovingPixelsState implements this interface)
- PixelMovements::discardImage() receives a "commit" flag to do a rollback
  of the operation if the user needs it.
2014-05-26 00:20:16 -03:00
David Capello cd4e3aa122 Rename "Put Alpha" to "Set Alpha" 2014-05-04 22:20:33 -03:00
David Capello ce7bb1b9dc Add "Lock Alpha" ink (issue #155) 2014-05-04 22:16:30 -03:00
David Capello 6634c12ad2 Fix problem selecting Default Ink each time we want to show other ink type 2014-04-21 22:23:22 -03:00
David Capello a34d181530 Add Widget::is/setTransparent property to paint a widget merged with its background
This fixes problems with tooltips, toolbar popups and context bar popups.
It fixes issue #297 (undo notifications rendering problems).
2014-04-19 18:51:42 -03:00
David Capello 312aca755e Fix issue 333: Tool Selection Icons Flicker
- Add PopupWindow::ClickBehavior
2014-04-13 19:25:06 -03:00
David Capello 30e26e2a3a Select correct ink type in InkTypeField 2014-03-08 21:00:14 -03:00
David Capello d780e90784 Fix issue 367: Put alpha drawing mode isn't working 2014-03-08 20:37:43 -03:00
David Capello f107dd3cbc Fix issue 352: Context Bar Eats Hotkey Input
Avoid capturing keyboard focus in context bar widgets.
2014-03-08 20:31:55 -03:00
David Capello 1d7b51d8f9 Disable inks as they are confusing and shading mode is not done yet 2014-02-24 08:53:46 -03:00
David Capello 44c6a9d91a Fix bug where ContextBar was completely hidden 2014-02-02 21:07:12 -03:00
David Capello c8c099864c Added "Grab Alpha" option to eye dropper (issue 134) 2014-01-28 23:56:44 -03:00
David Capello 5ccae8c0bb Remove some labels from ContextBar, modify tooltips look, and use mini font 2014-01-26 08:40:16 -03:00
David Capello 9423b967ab Change selection behavior: left-click replace the selection
With this patch we replace the "unique/odd" behavior of Aseprite where
you add selection regions with left-click and remove with right-click.
Now by default you replace the selection with left-click (as in regular
gfx programs). Also you can change the selection tool behavior with
buttons/icons at the context bar (to select between replace/add/subtract).
2014-01-25 17:58:29 -03:00
David Capello 2d7db879a3 ContextBar: Move m_freehandBox to the last position to improve context bar for selection tools 2014-01-25 16:37:38 -03:00
David Capello 1554875618 Add pixel-perfect drawing mode for freehand tools (issue 315)
* Added new app::tools::IntertwineAsPixelPerfect intertwiner
* Added app::tools::FreehandAlgorithm enum
* Added app::tools::WellKnownIntertwiners constants
2014-01-25 16:26:49 -03:00
David Capello 02597dcdec Add RotSprite algorithm for PixelsMovement (issue 121)
* Added app::RotationAlgorithm enum.
* Added app::ISelectionSettings::get/setRotationAlgorithm.
* Added app::SelectionSettingsObserver::onSetRotationAlgorithm.
* Added raster::image_rotsprite() function.
* Added ContextBar::RotAlgorithmField class to select the rotation algorithm.
* Now the mask isn't updated constantly on PixelsMovement::moveImage8),
  in this way when the user release the mouse button is when we recalculate
  the mask (to get better performance when the user is scaling/rotating
  the image).
2013-12-29 17:11:56 -03:00
Joel Madigan 3ce805f63d Moved Transparent Color button to ContextBar
Implemented SelectionSettings class

Transparent Color button for moving pixels moved from status bar to
context bar.  Current Transparent Color stored by new SelectionSettings
class, retrievable from ISettings.

Also implemented Observer classes for existing Settings interfaces for
future use.

StatusBarObserver interface and supporting code removed from StatusBar.
2013-12-10 12:44:00 -05:00
David Capello 033aad9d28 Fix Unicode characters encoding (we've to use utf-8) in Color::toHumanReadableString() and BrushAngleField() 2013-11-23 18:01:42 -03:00
David Capello e5ba8e0922 Encapsulate Image implementation (private members, accessors, iterators, etc.)
- Rename _rgba/_graya to raster::rgba()/graya()
- Add raster::color_t type (alias for uint32_t)
- Rename raster::GfxObj to Object. And GfxObj::getType() to Object::type()
- Move conversion from raster::Image/Palette to Allegro BITMAP/RGB
  to raster/conversion_alleg.h file
- Add raster/color_scales.h
- Rename image_* functions to raster/primitives.h
- Reimplement ink processing with templates instead of macros
2013-11-09 19:59:05 -03:00
David Capello 5b252c30f5 Add support for Unicode file names on Windows
- Fixed issue #46: open .png files with Unicode chars
- Fixed issue #150: ability to uncompress program in folders w/Unicode chars
- Added base::utf8_iterator
- Added base::FileHandle
- Added base::get_app_path()
- Modified ui::KeyMessage::ascii() -> unicodeChar()
- Removed JI_NOTEXT flag
- Added app::XmlDocumentRef class and app::open_xml() function
- Added support for Unicode text exchange with Win32 clipboard
2013-10-14 19:58:11 -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