• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • krita API Reference
  • KDE Home
  • Contact Us
 

plugins/paintops/libpaintop

  • sources
  • kfour-appscomplete
  • krita
  • plugins
  • paintops
  • libpaintop
kis_pressure_flow_opacity_option.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2011 Silvio Heinrich <[email protected]>
3  *
4  * SPDX-License-Identifier: LGPL-2.0-or-later
5  */
6 
7 #include "kis_pressure_flow_opacity_option.h"
8 #include "kis_paint_action_type_option.h"
9 
10 #include <klocalizedstring.h>
11 
12 #include <kis_painter.h>
13 #include <brushengine/kis_paint_information.h>
14 #include <kis_indirect_painting_support.h>
15 #include <kis_node.h>
16 #include <widgets/kis_curve_widget.h>
17 
18 KisFlowOpacityOption::KisFlowOpacityOption(KisNodeSP currentNode)
19  : KisCurveOption("Opacity", KisPaintOpOption::GENERAL, true, 1.0, 0.0, 1.0)
20  , m_flow(1.0)
21 {
22  setCurveUsed(true);
23  setSeparateCurveValue(true);
24 
25  m_checkable = false;
26 
27  m_nodeHasIndirectPaintingSupport =
28  currentNode &&
29  dynamic_cast<KisIndirectPaintingSupport*>(currentNode.data());
30 }
31 
32 void KisFlowOpacityOption::writeOptionSetting(KisPropertiesConfigurationSP setting) const
33 {
34  KisCurveOption::writeOptionSetting(setting);
35  setting->setProperty("FlowValue", m_flow);
36 }
37 
38 void KisFlowOpacityOption::readOptionSetting(const KisPropertiesConfigurationSP setting)
39 {
40  KisCurveOption::readOptionSetting(setting);
41  setFlow(setting->getDouble("FlowValue", 1.0));
42  m_paintActionType = setting->getInt("PaintOpAction", BUILDUP);
43 }
44 
45 qreal KisFlowOpacityOption::getFlow() const
46 {
47  return m_flow;
48 }
49 
50 qreal KisFlowOpacityOption::getStaticOpacity() const
51 {
52  return value();
53 }
54 
55 qreal KisFlowOpacityOption::getDynamicOpacity(const KisPaintInformation& info) const
56 {
57  return computeSizeLikeValue(info);
58 }
59 
60 void KisFlowOpacityOption::setFlow(qreal flow)
61 {
62  m_flow = qBound(qreal(0), flow, qreal(1));
63 }
64 
65 void KisFlowOpacityOption::setOpacity(qreal opacity)
66 {
67  setValue(opacity);
68 }
69 
70 void KisFlowOpacityOption::apply(KisPainter* painter, const KisPaintInformation& info)
71 {
72  quint8 opacity = OPACITY_OPAQUE_U8;
73  quint8 flow = OPACITY_OPAQUE_U8;
74 
75  apply(info, &opacity, &flow);
76 
77  painter->setOpacityUpdateAverage(opacity);
78  painter->setFlow(flow);
79 }
80 
81 void KisFlowOpacityOption::apply(const KisPaintInformation &info, quint8 *opacity, quint8 *flow)
82 {
83  if (m_paintActionType == WASH && m_nodeHasIndirectPaintingSupport) {
84  *opacity = quint8(getDynamicOpacity(info) * 255.0);
85  } else {
86  *opacity = quint8(getStaticOpacity() * getDynamicOpacity(info) * 255.0);
87  }
88 
89  *flow = quint8(getFlow() * 255.0);
90 }
KisCurveOption::value
qreal value() const
Definition: kis_curve_option.cpp:99
KisCurveOption
KisCurveOption is the base class for paintop options that are defined through one or more curves.
Definition: kis_curve_option.h:34
KisCurveOption::writeOptionSetting
virtual void writeOptionSetting(KisPropertiesConfigurationSP setting) const
Definition: kis_curve_option.cpp:113
KisCurveOption::setSeparateCurveValue
void setSeparateCurveValue(bool separateCurveValue)
Definition: kis_curve_option.cpp:309
KisFlowOpacityOption::m_flow
qreal m_flow
Definition: kis_pressure_flow_opacity_option.h:37
KisFlowOpacityOption::getDynamicOpacity
qreal getDynamicOpacity(const KisPaintInformation &info) const
Definition: kis_pressure_flow_opacity_option.cpp:55
KisFlowOpacityOption::apply
void apply(KisPainter *painter, const KisPaintInformation &info)
Definition: kis_pressure_flow_opacity_option.cpp:70
KisFlowOpacityOption::readOptionSetting
void readOptionSetting(const KisPropertiesConfigurationSP setting) override
Definition: kis_pressure_flow_opacity_option.cpp:38
KisFlowOpacityOption::getFlow
qreal getFlow() const
Definition: kis_pressure_flow_opacity_option.cpp:45
KisCurveOption::setValue
void setValue(qreal value)
Definition: kis_curve_option.cpp:390
BUILDUP
Definition: kis_paint_action_type_option.h:16
KisCurveOption::m_checkable
bool m_checkable
Definition: kis_curve_option.h:176
KisCurveOption::computeSizeLikeValue
qreal computeSizeLikeValue(const KisPaintInformation &info) const
Definition: kis_curve_option.cpp:461
kis_pressure_flow_opacity_option.h
kis_paint_action_type_option.h
KisFlowOpacityOption::getStaticOpacity
qreal getStaticOpacity() const
Definition: kis_pressure_flow_opacity_option.cpp:50
WASH
Definition: kis_paint_action_type_option.h:17
KisCurveOption::readOptionSetting
virtual void readOptionSetting(KisPropertiesConfigurationSP setting)
Definition: kis_curve_option.cpp:143
KisFlowOpacityOption::writeOptionSetting
void writeOptionSetting(KisPropertiesConfigurationSP setting) const override
Definition: kis_pressure_flow_opacity_option.cpp:32
KisCurveOption::setCurveUsed
void setCurveUsed(bool useCurve)
Definition: kis_curve_option.cpp:329
KisFlowOpacityOption::m_nodeHasIndirectPaintingSupport
bool m_nodeHasIndirectPaintingSupport
Definition: kis_pressure_flow_opacity_option.h:39
KisFlowOpacityOption::setFlow
void setFlow(qreal flow)
Definition: kis_pressure_flow_opacity_option.cpp:60
KisPaintOpOption
KisFlowOpacityOption::m_paintActionType
int m_paintActionType
Definition: kis_pressure_flow_opacity_option.h:38
KisFlowOpacityOption::KisFlowOpacityOption
KisFlowOpacityOption(KisNodeSP currentNode)
Definition: kis_pressure_flow_opacity_option.cpp:18
KisFlowOpacityOption::setOpacity
void setOpacity(qreal opacity)
Definition: kis_pressure_flow_opacity_option.cpp:65
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Sat Apr 17 2021 23:38:22 by doxygen 1.8.16 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

plugins/paintops/libpaintop

Skip menu "plugins/paintops/libpaintop"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

krita API Reference

Skip menu "krita API Reference"
  • libs
  •   KritaBasicFlakes
  •   brush
  •   KritaUndo2
  •   KritaFlake
  •   image
  •   KritaPlugin
  •   Krita
  •   KritaPigment
  •   KritaResources
  •   KritaStore
  •   ui
  •   KritaWidgets
  •   KritaWidgetUtils
  • plugins
  •   Assitants
  •   Extensions
  •   Filters
  •   Generators
  •   Formats
  •           src
  •   PaintOps
  •     libpaintop

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal