Masterwork From Distant Lands
ActivePublic

Authored by dkazakov on Jul 29 2016, 7:55 AM.
diff --git a/krita/krita.action b/krita/krita.action
index b909c36..29c866a 100644
--- a/krita/krita.action
+++ b/krita/krita.action
@@ -355,6 +355,17 @@
<isCheckable>true</isCheckable>
<statusTip></statusTip>
</Action>
+ <Action name="disable_pressure">
+ <icon>transparency-unlocked</icon>
+ <text>Disable Pressure</text>
+ <whatsThis></whatsThis>
+ <toolTip>Disable Pressure</toolTip>
+ <iconText>Disable Pressure</iconText>
+ <activationFlags>10000</activationFlags>
+ <shortcut></shortcut>
+ <isCheckable>true</isCheckable>
+ <statusTip></statusTip>
+ </Action>
<Action name="hmirror_action">
<icon>symmetry-horizontal</icon>
<text>Horizontal Mirror Tool</text>
diff --git a/libs/ui/kis_canvas_resource_provider.cpp b/libs/ui/kis_canvas_resource_provider.cpp
index 84a4ba7..6eb7a20 100644
--- a/libs/ui/kis_canvas_resource_provider.cpp
+++ b/libs/ui/kis_canvas_resource_provider.cpp
@@ -532,6 +532,16 @@ bool KisCanvasResourceProvider::globalAlphaLock() const
return m_resourceManager->resource(GlobalAlphaLock).toBool();
}
+void KisCanvasResourceProvider::setDisablePressure(bool value)
+{
+ m_resourceManager->setResource(DisablePressure, value);
+}
+
+bool KisCanvasResourceProvider::disablePressure() const
+{
+ return m_resourceManager->resource(DisablePressure).toBool();
+}
+
void KisCanvasResourceProvider::notifyLoadingWorkspace(KisWorkspaceResource* workspace)
{
emit sigLoadingWorkspace(workspace);
diff --git a/libs/ui/kis_canvas_resource_provider.h b/libs/ui/kis_canvas_resource_provider.h
index a219bea..4d1c4a1 100644
--- a/libs/ui/kis_canvas_resource_provider.h
+++ b/libs/ui/kis_canvas_resource_provider.h
@@ -75,6 +75,7 @@ public:
Size,
HdrGamma,
GlobalAlphaLock,
+ DisablePressure,
PreviousPaintOpPreset,
EffectiveZoom, ///<-Used only by painting tools for non-displaying purposes
PresetAllowsLod,
@@ -165,6 +166,8 @@ public:
void setGlobalAlphaLock(bool lock);
bool globalAlphaLock() const;
+ void setDisablePressure(bool value);
+ bool disablePressure() const;
///Notify that the workspace is saved and settings should be saved to it
void notifySavingWorkspace(KisWorkspaceResource* workspace);
diff --git a/libs/ui/kis_paintop_box.cc b/libs/ui/kis_paintop_box.cc
index 05f3f17..78011c9 100644
--- a/libs/ui/kis_paintop_box.cc
+++ b/libs/ui/kis_paintop_box.cc
@@ -156,6 +156,12 @@ KisPaintopBox::KisPaintopBox(KisViewManager *view, QWidget *parent, const char *
m_alphaLockButton->setDefaultAction(alphaLockAction);
+ m_disablePressureButton = new KisHighlightedToolButton(this);
+ m_disablePressureButton->setFixedSize(iconsize, iconsize);
+ m_disablePressureButton->setCheckable(true);
+
+ KisAction* disablePressureAction = m_viewManager->actionManager()->createAction("disable_pressure");
+ m_disablePressureButton->setDefaultAction(disablePressureAction);
// horizontal and vertical mirror toolbar buttons
@@ -321,6 +327,7 @@ KisPaintopBox::KisPaintopBox(KisViewManager *view, QWidget *parent, const char *
compositeLayout->addWidget(m_cmbCompositeOp);
compositeLayout->addWidget(m_eraseModeButton);
compositeLayout->addWidget(m_alphaLockButton);
+ compositeLayout->addWidget(m_disablePressureButton);
compositeLayout->setSpacing(4);
compositeLayout->setContentsMargins(0, 0, 0, 0);
@@ -445,6 +452,7 @@ KisPaintopBox::KisPaintopBox(KisViewManager *view, QWidget *parent, const char *
connect(m_cmbCompositeOp , SIGNAL(currentIndexChanged(int)) , SLOT(slotSetCompositeMode(int)));
connect(m_eraseAction , SIGNAL(toggled(bool)) , SLOT(slotToggleEraseMode(bool)));
connect(alphaLockAction , SIGNAL(toggled(bool)) , SLOT(slotToggleAlphaLockMode(bool)));
+ connect(disablePressureAction , SIGNAL(toggled(bool)) , SLOT(slotDisablePressureMode(bool)));
connect(m_hMirrorAction , SIGNAL(toggled(bool)) , SLOT(slotHorizontalMirrorChanged(bool)));
@@ -782,6 +790,10 @@ void KisPaintopBox::slotCanvasResourceChanged(int key, const QVariant &value)
m_eraseAction->setChecked(value.toBool());
}
+ if (key == KisCanvasResourceProvider::DisablePressure) {
+ // TODO: sync with resource state if different
+ }
+
sender()->blockSignals(false);
}
}
@@ -1076,6 +1088,18 @@ void KisPaintopBox::slotToggleAlphaLockMode(bool checked)
m_resourceProvider->setGlobalAlphaLock(checked);
}
+void KisPaintopBox::slotDisablePressureMode(bool checked)
+{
+ if (checked) {
+ m_disablePressureButton->actions()[0]->setIcon(KisIconUtils::loadIcon("transparency-locked"));
+ } else {
+ m_disablePressureButton->actions()[0]->setIcon(KisIconUtils::loadIcon("transparency-unlocked"));
+ }
+ m_resourceProvider->setDisablePressure(checked);
+
+ ENTER_FUNCTION() << ppVar(m_resourceProvider->disablePressure());
+}
+
void KisPaintopBox::slotReloadPreset()
{
KisSignalsBlocker blocker(m_optionWidget);
diff --git a/libs/ui/kis_paintop_box.h b/libs/ui/kis_paintop_box.h
index aa01ec0..71a1328 100644
--- a/libs/ui/kis_paintop_box.h
+++ b/libs/ui/kis_paintop_box.h
@@ -153,6 +153,7 @@ private Q_SLOTS:
void slotSwitchToPreviousPreset();
void slotUnsetEraseMode();
void slotToggleAlphaLockMode(bool);
+ void slotDisablePressureMode(bool);
void slotReloadPreset();
void slotGuiChangedCurrentPreset();
@@ -182,6 +183,7 @@ private:
KisCompositeOpComboBox* m_cmbCompositeOp;
QToolButton* m_eraseModeButton;
QToolButton* m_alphaLockButton;
+ QToolButton* m_disablePressureButton;
QToolButton* m_hMirrorButton;
QToolButton* m_vMirrorButton;
KisToolOptionsPopup* m_toolOptionsPopup;
diff --git a/libs/ui/tool/kis_painting_information_builder.cpp b/libs/ui/tool/kis_painting_information_builder.cpp
index b2ce828..1c88b15 100644
--- a/libs/ui/tool/kis_painting_information_builder.cpp
+++ b/libs/ui/tool/kis_painting_information_builder.cpp
@@ -26,6 +26,9 @@
#include "kis_cubic_curve.h"
#include "kis_speed_smoother.h"
+#include <KoCanvasResourceManager.h>
+#include "kis_canvas_resource_provider.h"
+
/***********************************************************************/
/* KisPaintingInformationBuilder */
@@ -36,7 +39,8 @@ const int KisPaintingInformationBuilder::LEVEL_OF_PRESSURE_RESOLUTION = 1024;
KisPaintingInformationBuilder::KisPaintingInformationBuilder()
- : m_speedSmoother(new KisSpeedSmoother())
+ : m_speedSmoother(new KisSpeedSmoother()),
+ m_pressureDisabled(false)
{
connect(KisConfigNotifier::instance(), SIGNAL(configChanged()),
SLOT(updateSettings()));
@@ -58,8 +62,11 @@ void KisPaintingInformationBuilder::updateSettings()
}
KisPaintInformation KisPaintingInformationBuilder::startStroke(KoPointerEvent *event,
- int timeElapsed)
+ int timeElapsed,
+ const KoCanvasResourceManager *manager)
{
+ m_pressureDisabled = manager->resource(KisCanvasResourceProvider::DisablePressure).toBool();
+
m_startPoint = event->point;
return createPaintingInformation(event, timeElapsed);
@@ -103,7 +110,7 @@ KisPaintInformation KisPaintingInformationBuilder::createPaintingInformation(KoP
qreal speed = m_speedSmoother->getNextSpeed(imageToView(imagePoint));
return KisPaintInformation(imagePoint,
- pressureToCurve(event->pressure()),
+ !m_pressureDisabled ? pressureToCurve(event->pressure()) : 1.0,
event->xTilt(), event->yTilt(),
event->rotation(),
event->tangentialPressure(),
diff --git a/libs/ui/tool/kis_painting_information_builder.h b/libs/ui/tool/kis_painting_information_builder.h
index bde17d7..979bf92 100644
--- a/libs/ui/tool/kis_painting_information_builder.h
+++ b/libs/ui/tool/kis_painting_information_builder.h
@@ -30,6 +30,7 @@ class KoPointerEvent;
class KisToolFreehand;
class KisCoordinatesConverter;
class KisSpeedSmoother;
+class KoCanvasResourceManager;
class KRITAUI_EXPORT KisPaintingInformationBuilder : public QObject
{
@@ -39,7 +40,7 @@ public:
KisPaintingInformationBuilder();
~KisPaintingInformationBuilder();
- KisPaintInformation startStroke(KoPointerEvent *event, int timeElapsed);
+ KisPaintInformation startStroke(KoPointerEvent *event, int timeElapsed, const KoCanvasResourceManager *manager);
KisPaintInformation continueStroke(KoPointerEvent *event,
int timeElapsed);
@@ -72,6 +73,7 @@ private:
QVector<qreal> m_pressureSamples;
QPointF m_startPoint;
QScopedPointer<KisSpeedSmoother> m_speedSmoother;
+ bool m_pressureDisabled;
};
class KRITAUI_EXPORT KisConverterPaintingInformationBuilder : public KisPaintingInformationBuilder
diff --git a/libs/ui/tool/kis_tool_freehand_helper.cpp b/libs/ui/tool/kis_tool_freehand_helper.cpp
index dde3424..cd7eca0 100644
--- a/libs/ui/tool/kis_tool_freehand_helper.cpp
+++ b/libs/ui/tool/kis_tool_freehand_helper.cpp
@@ -194,7 +194,7 @@ void KisToolFreehandHelper::initPaint(KoPointerEvent *event,
KisDefaultBoundsBaseSP bounds)
{
KisPaintInformation pi =
- m_d->infoBuilder->startStroke(event, elapsedStrokeTime());
+ m_d->infoBuilder->startStroke(event, elapsedStrokeTime(), resourceManager);
initPaintImpl(pi,
resourceManager,
diff --git a/plugins/tools/basictools/kis_tool_line_helper.cpp b/plugins/tools/basictools/kis_tool_line_helper.cpp
index 62cd846..9495bcc 100644
--- a/plugins/tools/basictools/kis_tool_line_helper.cpp
+++ b/plugins/tools/basictools/kis_tool_line_helper.cpp
@@ -86,7 +86,7 @@ void KisToolLineHelper::start(KoPointerEvent *event)
if (!m_d->enabled) return;
KisPaintInformation pi =
- m_d->infoBuilder->startStroke(event, elapsedStrokeTime());
+ m_d->infoBuilder->startStroke(event, elapsedStrokeTime(), 0); // TODO
if (!m_d->useSensors) {
pi = KisPaintInformation(pi.pos());
diff --git a/plugins/tools/tool_transform2/kis_liquify_paint_helper.cpp b/plugins/tools/tool_transform2/kis_liquify_paint_helper.cpp
index e500406..57865c3 100644
--- a/plugins/tools/tool_transform2/kis_liquify_paint_helper.cpp
+++ b/plugins/tools/tool_transform2/kis_liquify_paint_helper.cpp
@@ -85,13 +85,14 @@ void KisLiquifyPaintHelper::configurePaintOp(const KisLiquifyProperties &props,
m_d->paintOp.reset(new KisLiquifyPaintop(props, worker));
}
-void KisLiquifyPaintHelper::startPaint(KoPointerEvent *event)
+void KisLiquifyPaintHelper::startPaint(KoPointerEvent *event,
+ KoCanvasResourceManager *resourceManager)
{
KIS_ASSERT_RECOVER_RETURN(m_d->paintOp);
m_d->strokeTime.start();
KisPaintInformation pi =
- m_d->infoBuilder->startStroke(event, m_d->strokeTime.elapsed());
+ m_d->infoBuilder->startStroke(event, m_d->strokeTime.elapsed(), 0); //TODO
m_d->updatePreviousPaintInfo(pi);
m_d->hasPaintedAtLeastOnce = false;
diff --git a/plugins/tools/tool_transform2/kis_liquify_paint_helper.h b/plugins/tools/tool_transform2/kis_liquify_paint_helper.h
index e063551..afabe7d 100644
--- a/plugins/tools/tool_transform2/kis_liquify_paint_helper.h
+++ b/plugins/tools/tool_transform2/kis_liquify_paint_helper.h
@@ -26,6 +26,7 @@ class KisCoordinatesConverter;
class KoPointerEvent;
class KisLiquifyProperties;
class QPainterPath;
+class KoCanvasResourceManager;
class KisLiquifyPaintHelper
@@ -37,7 +38,7 @@ public:
void configurePaintOp(const KisLiquifyProperties &_props,
KisLiquifyTransformWorker *worker);
- void startPaint(KoPointerEvent *event);
+ void startPaint(KoPointerEvent *event, KoCanvasResourceManager *resourceManager);
void continuePaint(KoPointerEvent *event);
bool endPaint(KoPointerEvent *event);
diff --git a/plugins/tools/tool_transform2/kis_liquify_transform_strategy.cpp b/plugins/tools/tool_transform2/kis_liquify_transform_strategy.cpp
index 28d716d..71a44f5 100644
--- a/plugins/tools/tool_transform2/kis_liquify_transform_strategy.cpp
+++ b/plugins/tools/tool_transform2/kis_liquify_transform_strategy.cpp
@@ -144,7 +144,7 @@ bool KisLiquifyTransformStrategy::acceptsClicks() const
bool KisLiquifyTransformStrategy::beginPrimaryAction(KoPointerEvent *event)
{
m_d->helper.configurePaintOp(*m_d->currentArgs.liquifyProperties(), m_d->currentArgs.liquifyWorker());
- m_d->helper.startPaint(event);
+ m_d->helper.startPaint(event, 0); // FIXME!!!!!!!!!!!!!!
m_d->recalculateTransformations();
dkazakov edited the content of this paste. (Show Details)Jul 29 2016, 7:55 AM
dkazakov changed the title of this paste from untitled to Masterwork From Distant Lands.