This is an automated email from the git hooks/post-receive script. thansen pushed a commit to branch master in repository aseprite.
commit 9face9458e408418d4aaa42dac471a7301d838d6 Author: David Capello <[email protected]> Date: Thu Mar 24 14:29:15 2016 -0300 Add an option to change the "brush preview" style (related to #792) --- data/pref.xml | 6 ++ data/widgets/options.xml | 27 +++++-- src/app/commands/cmd_options.cpp | 151 ++++++++++++++++++++++-------------- src/app/ui/editor/brush_preview.cpp | 18 ++++- 4 files changed, 134 insertions(+), 68 deletions(-) diff --git a/data/pref.xml b/data/pref.xml index d283514..b99f9e3 100644 --- a/data/pref.xml +++ b/data/pref.xml @@ -20,6 +20,11 @@ <value id="SQUARE" value="1" /> <value id="LINE" value="2" /> </enum> + <enum id="BrushPreview"> + <value id="NONE" value="0" /> + <value id="EDGES" value="1" /> + <value id="FULL" value="2" /> + </enum> <enum id="BgType"> <value id="CHECKED_16x16" value="0" /> <value id="CHECKED_8x8" value="1" /> @@ -89,6 +94,7 @@ <option id="right_click_mode" type="RightClickMode" default="RightClickMode::PAINT_BGCOLOR" migrate="Options.RightClickMode" /> <option id="auto_select_layer" type="bool" default="false" migrate="Options.AutoSelectLayer" /> <option id="cursor_color" type="app::Color" default="app::Color::fromMask()" migrate="Tools.CursorColor" /> + <option id="brush_preview" type="BrushPreview" default="BrushPreview::FULL" /> <option id="play_once" type="bool" default="false" /> </section> <section id="preview" text="Preview"> diff --git a/data/widgets/options.xml b/data/widgets/options.xml index c64ac82..0773a10 100644 --- a/data/widgets/options.xml +++ b/data/widgets/options.xml @@ -1,5 +1,5 @@ <!-- Aseprite --> -<!-- Copyright (C) 2001-2015 by David Capello --> +<!-- Copyright (C) 2001-2016 by David Capello --> <gui> <window id="options" text="Preferences"> <vbox> @@ -9,6 +9,7 @@ <listitem text="General" value="section_general" /> <listitem text="Editor" value="section_editor" /> <listitem text="Timeline" value="section_timeline" /> + <listitem text="Cursors" value="section_cursors" /> <listitem text="Grid && Background" value="section_grid" /> <listitem text="Undo" value="section_undo" /> <listitem text="Theme" value="section_theme" /> @@ -65,10 +66,6 @@ <label text="Right-click:" /> <combobox id="right_click_behavior" expansive="true" /> </hbox> - <hbox> - <label text="Cursor Color:" /> - <box id="cursor_color_box" /><!-- custom widget --> - </hbox> <separator text="Selection" horizontal="true" /> <check text="Adjust opaque/transparent mode automatically" id="auto_opaque" tooltip="Depending on the layer (background/transparent), the pasted selection will be adjusted automatically (opaque/transparent)" /> @@ -82,6 +79,26 @@ <check text="Rewind on Stop" id="rewind_on_stop" tooltip="The 'Stop' button should rewind the animation where it was started." /> </vbox> + <!-- Cursors --> + <vbox id="section_cursors"> + <separator text="Painting Cursors" horizontal="true" /> + <label text="Precise Cursor Color:" /> + <hbox> + <combobox group="1" id="cursor_color_type"> + <listitem text="Negative Black and White" value="0" /> + <listitem text="Specific Color" value="1" /> + </combobox> + <box id="cursor_color_placeholder" /><!-- custom widget --> + </hbox> + + <label text="Brush Preview:" /> + <combobox id="brush_preview"> + <listitem text="None" value="0" /> + <listitem text="Brush Edges" value="1" /> + <listitem text="Full Real-time Brush Preview" value="2" /> + </combobox> + </vbox> + <!-- Grid & background --> <vbox id="section_grid"> <combobox id="grid_scope" /> diff --git a/src/app/commands/cmd_options.cpp b/src/app/commands/cmd_options.cpp index 1164b2b..c0fd221 100644 --- a/src/app/commands/cmd_options.cpp +++ b/src/app/commands/cmd_options.cpp @@ -1,5 +1,5 @@ // Aseprite -// Copyright (C) 2001-2015 David Capello +// Copyright (C) 2001-2016 David Capello // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -39,19 +39,35 @@ using namespace ui; class OptionsWindow : public app::gen::Options { public: OptionsWindow(Context* context, int& curSection) - : m_preferences(Preferences::instance()) - , m_globPref(m_preferences.document(nullptr)) - , m_docPref(m_preferences.document(context->activeDocument())) + : m_pref(Preferences::instance()) + , m_globPref(m_pref.document(nullptr)) + , m_docPref(m_pref.document(context->activeDocument())) , m_curPref(&m_docPref) , m_checked_bg_color1(new ColorButton(app::Color::fromMask(), IMAGE_RGB)) , m_checked_bg_color2(new ColorButton(app::Color::fromMask(), IMAGE_RGB)) , m_pixelGridColor(new ColorButton(app::Color::fromMask(), IMAGE_RGB)) , m_gridColor(new ColorButton(app::Color::fromMask(), IMAGE_RGB)) - , m_cursorColor(new ColorButton(m_preferences.editor.cursorColor(), IMAGE_RGB)) + , m_cursorColor(new ColorButton(m_pref.editor.cursorColor(), IMAGE_RGB)) , m_curSection(curSection) { sectionListbox()->Change.connect(base::Bind<void>(&OptionsWindow::onChangeSection, this)); - cursorColorBox()->addChild(m_cursorColor); + + // Cursor + cursorColorPlaceholder()->addChild(m_cursorColor); + + if (m_cursorColor->getColor().getType() == app::Color::MaskType) { + cursorColorType()->setSelectedItemIndex(0); + m_cursorColor->setVisible(false); + } + else { + cursorColorType()->setSelectedItemIndex(1); + m_cursorColor->setVisible(true); + } + cursorColorType()->Change.connect(base::Bind<void>(&OptionsWindow::onCursorColorType, this)); + + // Brush preview + brushPreview()->setSelectedItemIndex( + (int)m_pref.editor.brushPreview()); // Grid color m_gridColor->setId("grid_color"); @@ -62,44 +78,44 @@ public: pixelGridColorPlaceholder()->addChild(m_pixelGridColor); // Others - if (m_preferences.general.autoshowTimeline()) + if (m_pref.general.autoshowTimeline()) autotimeline()->setSelected(true); - if (m_preferences.general.rewindOnStop()) + if (m_pref.general.rewindOnStop()) rewindOnStop()->setSelected(true); - if (m_preferences.general.expandMenubarOnMouseover()) + if (m_pref.general.expandMenubarOnMouseover()) expandMenubarOnMouseover()->setSelected(true); - if (m_preferences.general.dataRecovery()) + if (m_pref.general.dataRecovery()) enableDataRecovery()->setSelected(true); dataRecoveryPeriod()->setSelectedItemIndex( dataRecoveryPeriod()->findItemIndexByValue( - base::convert_to<std::string>(m_preferences.general.dataRecoveryPeriod()))); + base::convert_to<std::string>(m_pref.general.dataRecoveryPeriod()))); - if (m_preferences.editor.zoomFromCenterWithWheel()) + if (m_pref.editor.zoomFromCenterWithWheel()) zoomFromCenterWithWheel()->setSelected(true); - if (m_preferences.editor.zoomFromCenterWithKeys()) + if (m_pref.editor.zoomFromCenterWithKeys()) zoomFromCenterWithKeys()->setSelected(true); - if (m_preferences.selection.autoOpaque()) + if (m_pref.selection.autoOpaque()) autoOpaque()->setSelected(true); - if (m_preferences.selection.keepSelectionAfterClear()) + if (m_pref.selection.keepSelectionAfterClear()) keepSelectionAfterClear()->setSelected(true); - if (m_preferences.experimental.useNativeCursor()) + if (m_pref.experimental.useNativeCursor()) nativeCursor()->setSelected(true); - if (m_preferences.experimental.useNativeFileDialog()) + if (m_pref.experimental.useNativeFileDialog()) nativeFileDialog()->setSelected(true); - if (m_preferences.experimental.flashLayer()) + if (m_pref.experimental.flashLayer()) flashLayer()->setSelected(true); - if (m_preferences.editor.showScrollbars()) + if (m_pref.editor.showScrollbars()) showScrollbars()->setSelected(true); // Scope @@ -113,15 +129,15 @@ public: // Screen/UI Scale screenScale()->setSelectedItemIndex( screenScale()->findItemIndexByValue( - base::convert_to<std::string>(m_preferences.general.screenScale()))); + base::convert_to<std::string>(m_pref.general.screenScale()))); uiScale()->setSelectedItemIndex( uiScale()->findItemIndexByValue( - base::convert_to<std::string>(m_preferences.experimental.uiScale()))); + base::convert_to<std::string>(m_pref.experimental.uiScale()))); if ((int(she::instance()->capabilities()) & int(she::Capabilities::GpuAccelerationSwitch)) == int(she::Capabilities::GpuAccelerationSwitch)) { - gpuAcceleration()->setSelected(m_preferences.general.gpuAcceleration()); + gpuAcceleration()->setSelected(m_pref.general.gpuAcceleration()); } else { gpuAcceleration()->setVisible(false); @@ -132,10 +148,10 @@ public: rightClickBehavior()->addItem("Pick foreground color"); rightClickBehavior()->addItem("Erase"); rightClickBehavior()->addItem("Scroll"); - rightClickBehavior()->setSelectedItemIndex((int)m_preferences.editor.rightClickMode()); + rightClickBehavior()->setSelectedItemIndex((int)m_pref.editor.rightClickMode()); // Zoom with Scroll Wheel - wheelZoom()->setSelected(m_preferences.editor.zoomWithWheel()); + wheelZoom()->setSelected(m_pref.editor.zoomWithWheel()); // Checked background size checkedBgSize()->addItem("16x16"); @@ -159,9 +175,9 @@ public: #endif // Undo preferences - undoSizeLimit()->setTextf("%d", m_preferences.undo.sizeLimit()); - undoGotoModified()->setSelected(m_preferences.undo.gotoModified()); - undoAllowNonlinearHistory()->setSelected(m_preferences.undo.allowNonlinearHistory()); + undoSizeLimit()->setTextf("%d", m_pref.undo.sizeLimit()); + undoGotoModified()->setSelected(m_pref.undo.gotoModified()); + undoAllowNonlinearHistory()->setSelected(m_pref.undo.allowNonlinearHistory()); // Theme buttons selectTheme()->Click.connect(base::Bind<void>(&OptionsWindow::onSelectTheme, this)); @@ -176,32 +192,33 @@ public: } void saveConfig() { - m_preferences.general.autoshowTimeline(autotimeline()->isSelected()); - m_preferences.general.rewindOnStop(rewindOnStop()->isSelected()); + m_pref.general.autoshowTimeline(autotimeline()->isSelected()); + m_pref.general.rewindOnStop(rewindOnStop()->isSelected()); bool expandOnMouseover = expandMenubarOnMouseover()->isSelected(); - m_preferences.general.expandMenubarOnMouseover(expandOnMouseover); + m_pref.general.expandMenubarOnMouseover(expandOnMouseover); ui::MenuBar::setExpandOnMouseover(expandOnMouseover); std::string warnings; int newPeriod = base::convert_to<int>(dataRecoveryPeriod()->getValue()); - if (enableDataRecovery()->isSelected() != m_preferences.general.dataRecovery() || - newPeriod != m_preferences.general.dataRecoveryPeriod()) { - m_preferences.general.dataRecovery(enableDataRecovery()->isSelected()); - m_preferences.general.dataRecoveryPeriod(newPeriod); + if (enableDataRecovery()->isSelected() != m_pref.general.dataRecovery() || + newPeriod != m_pref.general.dataRecoveryPeriod()) { + m_pref.general.dataRecovery(enableDataRecovery()->isSelected()); + m_pref.general.dataRecoveryPeriod(newPeriod); warnings += "<<- Automatically save recovery data every"; } - m_preferences.editor.zoomFromCenterWithWheel(zoomFromCenterWithWheel()->isSelected()); - m_preferences.editor.zoomFromCenterWithKeys(zoomFromCenterWithKeys()->isSelected()); - m_preferences.editor.showScrollbars(showScrollbars()->isSelected()); - m_preferences.editor.zoomWithWheel(wheelZoom()->isSelected()); - m_preferences.editor.rightClickMode(static_cast<app::gen::RightClickMode>(rightClickBehavior()->getSelectedItemIndex())); - m_preferences.editor.cursorColor(m_cursorColor->getColor()); - m_preferences.selection.autoOpaque(autoOpaque()->isSelected()); - m_preferences.selection.keepSelectionAfterClear(keepSelectionAfterClear()->isSelected()); + m_pref.editor.zoomFromCenterWithWheel(zoomFromCenterWithWheel()->isSelected()); + m_pref.editor.zoomFromCenterWithKeys(zoomFromCenterWithKeys()->isSelected()); + m_pref.editor.showScrollbars(showScrollbars()->isSelected()); + m_pref.editor.zoomWithWheel(wheelZoom()->isSelected()); + m_pref.editor.rightClickMode(static_cast<app::gen::RightClickMode>(rightClickBehavior()->getSelectedItemIndex())); + m_pref.editor.cursorColor(m_cursorColor->getColor()); + m_pref.editor.brushPreview(static_cast<app::gen::BrushPreview>(brushPreview()->getSelectedItemIndex())); + m_pref.selection.autoOpaque(autoOpaque()->isSelected()); + m_pref.selection.keepSelectionAfterClear(keepSelectionAfterClear()->isSelected()); m_curPref->grid.color(m_gridColor->getColor()); m_curPref->grid.opacity(gridOpacity()->getValue()); @@ -218,37 +235,37 @@ public: undo_size_limit_value = undoSizeLimit()->textInt(); undo_size_limit_value = MID(1, undo_size_limit_value, 9999); - m_preferences.undo.sizeLimit(undo_size_limit_value); - m_preferences.undo.gotoModified(undoGotoModified()->isSelected()); - m_preferences.undo.allowNonlinearHistory(undoAllowNonlinearHistory()->isSelected()); + m_pref.undo.sizeLimit(undo_size_limit_value); + m_pref.undo.gotoModified(undoGotoModified()->isSelected()); + m_pref.undo.allowNonlinearHistory(undoAllowNonlinearHistory()->isSelected()); // Experimental features - m_preferences.experimental.useNativeCursor(nativeCursor()->isSelected()); - m_preferences.experimental.useNativeFileDialog(nativeFileDialog()->isSelected()); - m_preferences.experimental.flashLayer(flashLayer()->isSelected()); + m_pref.experimental.useNativeCursor(nativeCursor()->isSelected()); + m_pref.experimental.useNativeFileDialog(nativeFileDialog()->isSelected()); + m_pref.experimental.flashLayer(flashLayer()->isSelected()); ui::set_use_native_cursors( - m_preferences.experimental.useNativeCursor()); + m_pref.experimental.useNativeCursor()); bool reset_screen = false; int newScreenScale = base::convert_to<int>(screenScale()->getValue()); - if (newScreenScale != m_preferences.general.screenScale()) { - m_preferences.general.screenScale(newScreenScale); + if (newScreenScale != m_pref.general.screenScale()) { + m_pref.general.screenScale(newScreenScale); reset_screen = true; } int newUIScale = base::convert_to<int>(uiScale()->getValue()); - if (newUIScale != m_preferences.experimental.uiScale()) { - m_preferences.experimental.uiScale(newUIScale); + if (newUIScale != m_pref.experimental.uiScale()) { + m_pref.experimental.uiScale(newUIScale); warnings += "<<- UI Elements Scale"; } bool newGpuAccel = gpuAcceleration()->isSelected(); - if (newGpuAccel != m_preferences.general.gpuAcceleration()) { - m_preferences.general.gpuAcceleration(newGpuAccel); + if (newGpuAccel != m_pref.general.gpuAcceleration()) { + m_pref.general.gpuAcceleration(newGpuAccel); reset_screen = true; } - m_preferences.save(); + m_pref.save(); if (!warnings.empty()) { ui::Alert::show(PACKAGE @@ -361,7 +378,7 @@ private: themeList()->addChild(item); // Selected theme - if (fn == m_preferences.theme.selected()) + if (fn == m_pref.theme.selected()) themeList()->selectChild(item); } @@ -372,8 +389,8 @@ private: void onSelectTheme() { ListItem* item = dynamic_cast<ListItem*>(themeList()->getSelectedChild()); if (item && - item->getValue() != m_preferences.theme.selected()) { - m_preferences.theme.selected(item->getValue()); + item->getValue() != m_pref.theme.selected()) { + m_pref.theme.selected(item->getValue()); ui::Alert::show(PACKAGE "<<You must restart the program to see the selected theme" @@ -385,13 +402,27 @@ private: launcher::open_folder(themeFolder()); } + void onCursorColorType() { + switch (cursorColorType()->getSelectedItemIndex()) { + case 0: + m_cursorColor->setColor(app::Color::fromMask()); + m_cursorColor->setVisible(false); + break; + case 1: + m_cursorColor->setColor(app::Color::fromRgb(0, 0, 0, 255)); + m_cursorColor->setVisible(true); + break; + } + layout(); + } + static std::string themeFolder() { ResourceFinder rf; rf.includeDataDir("skins"); return rf.defaultFilename(); } - Preferences& m_preferences; + Preferences& m_pref; DocumentPreferences& m_globPref; DocumentPreferences& m_docPref; DocumentPreferences* m_curPref; diff --git a/src/app/ui/editor/brush_preview.cpp b/src/app/ui/editor/brush_preview.cpp index e5adacb..d669ab1 100644 --- a/src/app/ui/editor/brush_preview.cpp +++ b/src/app/ui/editor/brush_preview.cpp @@ -1,5 +1,5 @@ // Aseprite -// Copyright (C) 2001-2015 David Capello +// Copyright (C) 2001-2016 David Capello // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -137,13 +137,25 @@ void BrushPreview::show(const gfx::Point& screenPos) m_type = CROSS; } + bool usePreview = false; + switch (Preferences::instance().editor.brushPreview()) { + case app::gen::BrushPreview::NONE: + m_type = CROSS; + break; + case app::gen::BrushPreview::EDGES: + m_type = BRUSH_BOUNDARIES; + break; + case app::gen::BrushPreview::FULL: + usePreview = m_editor->getState()->requireBrushPreview(); + break; + } + // For cursor type 'bounds' we have to generate cursor boundaries if (m_type & BRUSH_BOUNDARIES) generateBoundaries(); // Draw pixel/brush preview - if ((m_type & CROSS) && - m_editor->getState()->requireBrushPreview()) { + if ((m_type & CROSS) && usePreview) { gfx::Rect origBrushBounds = (isFloodfill ? gfx::Rect(0, 0, 1, 1): brush->bounds()); gfx::Rect brushBounds = origBrushBounds; brushBounds.offset(spritePos); -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

