From 32bf3314e6a9dbba902adeb90ea34517cdfabfd5 Mon Sep 17 00:00:00 2001 From: David Capello Date: Thu, 13 Aug 2015 13:26:52 -0300 Subject: [PATCH] Add a new simple/default ink This ink behaves as alpha compositing but doesn't use the opacity slider (opacity is used from current color's alpha channel). Also, in case that we pick the mask color, it behaves as the eraser tool. --- data/skins/default/sheet.png | Bin 13627 -> 13655 bytes data/skins/default/skin.xml | 7 ++++--- src/app/tools/ink_type.h | 12 +++++++++--- src/app/ui/context_bar.cpp | 13 +++++++++---- src/app/ui/editor/editor.cpp | 12 ++++++++++++ src/app/ui/editor/tool_loop_impl.cpp | 4 ++++ 6 files changed, 38 insertions(+), 10 deletions(-) diff --git a/data/skins/default/sheet.png b/data/skins/default/sheet.png index 70df31167928d5c60ded531f5cc0e1cf2122a532..50bcfa39a67e6dfdff08457f9c4412a27bed0ef3 100644 GIT binary patch literal 13655 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 G1^*vu_VUL7 literal 13627 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 diff --git a/data/skins/default/skin.xml b/data/skins/default/skin.xml index 73a7d210e..ce62b35e2 100644 --- a/data/skins/default/skin.xml +++ b/data/skins/default/skin.xml @@ -375,9 +375,10 @@ - - - + + + + diff --git a/src/app/tools/ink_type.h b/src/app/tools/ink_type.h index 3a338ff3a..984359000 100644 --- a/src/app/tools/ink_type.h +++ b/src/app/tools/ink_type.h @@ -14,11 +14,17 @@ namespace tools { enum class InkType { DEFAULT = 0, - ALPHA_COMPOSITING = 0, - COPY_COLOR = 1, - LOCK_ALPHA = 2, + SIMPLE = 0, + ALPHA_COMPOSITING = 1, + COPY_COLOR = 2, + LOCK_ALPHA = 3, }; + inline bool inkHasOpacity(InkType inkType) { + return (inkType == InkType::ALPHA_COMPOSITING || + inkType == InkType::LOCK_ALPHA); + } + } // namespace tools } // namespace app diff --git a/src/app/ui/context_bar.cpp b/src/app/ui/context_bar.cpp index a14f720db..b811b2524 100644 --- a/src/app/ui/context_bar.cpp +++ b/src/app/ui/context_bar.cpp @@ -325,15 +325,16 @@ public: InkTypeField(ContextBar* owner) : ButtonSet(1) , m_owner(owner) { SkinTheme* theme = SkinTheme::instance(); - addItem(theme->parts.inkDefault()); + addItem(theme->parts.inkSimple()); } void setInkType(InkType inkType) { SkinTheme* theme = SkinTheme::instance(); - SkinPartPtr part = theme->parts.inkDefault(); + SkinPartPtr part = theme->parts.inkSimple(); switch (inkType) { - case InkType::ALPHA_COMPOSITING: part = theme->parts.inkDefault(); break; + case InkType::SIMPLE: part = theme->parts.inkSimple(); break; + case InkType::ALPHA_COMPOSITING: part = theme->parts.inkAlphaCompositing(); break; case InkType::COPY_COLOR: part = theme->parts.inkCopyColor(); break; case InkType::LOCK_ALPHA: part = theme->parts.inkLockAlpha(); break; } @@ -349,10 +350,12 @@ protected: Menu menu; MenuItem + simple("Simple Ink"), alphacompo("Alpha Compositing"), copycolor("Copy Color+Alpha"), lockalpha("Lock Alpha"), alltools("Same in all Tools"); + menu.addChild(&simple); menu.addChild(&alphacompo); menu.addChild(©color); menu.addChild(&lockalpha); @@ -361,12 +364,14 @@ protected: Tool* tool = App::instance()->activeTool(); switch (Preferences::instance().tool(tool).ink()) { + case tools::InkType::SIMPLE: simple.setSelected(true); break; case tools::InkType::ALPHA_COMPOSITING: alphacompo.setSelected(true); break; case tools::InkType::COPY_COLOR: copycolor.setSelected(true); break; case tools::InkType::LOCK_ALPHA: lockalpha.setSelected(true); break; } alltools.setSelected(Preferences::instance().shared.shareInk()); + simple.Click.connect(Bind(&InkTypeField::selectInk, this, InkType::SIMPLE)); alphacompo.Click.connect(Bind(&InkTypeField::selectInk, this, InkType::ALPHA_COMPOSITING)); copycolor.Click.connect(Bind(&InkTypeField::selectInk, this, InkType::COPY_COLOR)); lockalpha.Click.connect(Bind(&InkTypeField::selectInk, this, InkType::LOCK_ALPHA)); @@ -1184,7 +1189,7 @@ void ContextBar::updateForTool(tools::Tool* tool) m_inkOpacity->setTextf("%d", toolPref->opacity()); hasInkWithOpacity = - ((isPaint && toolPref->ink() != tools::InkType::COPY_COLOR) || + ((isPaint && tools::inkHasOpacity(toolPref->ink())) || (isEffect)); m_freehandAlgo->setFreehandAlgorithm(toolPref->freehandAlgorithm()); diff --git a/src/app/ui/editor/editor.cpp b/src/app/ui/editor/editor.cpp index 4f324a3b5..c242a5ccb 100644 --- a/src/app/ui/editor/editor.cpp +++ b/src/app/ui/editor/editor.cpp @@ -928,6 +928,18 @@ tools::Ink* Editor::getCurrentEditorInk() const char* id = NULL; switch (inkType) { + + case tools::InkType::SIMPLE: { + id = tools::WellKnownInks::Paint; + + ColorBar* colorbar = ColorBar::instance(); + app::Color color = (m_secondaryButton ? colorbar->getBgColor(): + colorbar->getFgColor()); + if (color.getAlpha() == 0) + id = tools::WellKnownInks::PaintCopy; + break; + } + case tools::InkType::ALPHA_COMPOSITING: id = tools::WellKnownInks::Paint; break; diff --git a/src/app/ui/editor/tool_loop_impl.cpp b/src/app/ui/editor/tool_loop_impl.cpp index e54c8c2d6..ea40904cb 100644 --- a/src/app/ui/editor/tool_loop_impl.cpp +++ b/src/app/ui/editor/tool_loop_impl.cpp @@ -134,6 +134,10 @@ public: break; } } + + // Ignore opacity for these inks + if (!tools::inkHasOpacity(m_toolPref.ink())) + m_opacity = 255; } // IToolLoop interface