• 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_dynamic_sensor.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006 Cyrille Berger <[email protected]>
3  * SPDX-FileCopyrightText: 2011 Lukáš Tvrdý <[email protected]>
4  *
5  * SPDX-License-Identifier: LGPL-2.0-or-later
6  */
7 
8 #ifndef _KIS_DYNAMIC_SENSOR_H_
9 #define _KIS_DYNAMIC_SENSOR_H_
10 
11 #include <kritapaintop_export.h>
12 
13 #include <QObject>
14 
15 #include <KoID.h>
16 
17 #include <klocalizedstring.h>
18 
19 #include "kis_serializable_configuration.h"
20 #include "kis_curve_label.h"
21 #include <kis_cubic_curve.h>
22 #include <kis_shared_ptr.h>
23 #include <kis_shared.h>
24 
25 
26 class QWidget;
27 class KisPaintInformation;
28 
29 const KoID FuzzyPerDabId("fuzzy", ki18nc("Context: dynamic sensors", "Fuzzy Dab"));
30 const KoID FuzzyPerStrokeId("fuzzystroke", ki18nc("Context: dynamic sensors", "Fuzzy Stroke"));
31 const KoID SpeedId("speed", ki18nc("Context: dynamic sensors", "Speed"));
32 const KoID FadeId("fade", ki18nc("Context: dynamic sensors", "Fade"));
33 const KoID DistanceId("distance", ki18nc("Context: dynamic sensors", "Distance"));
34 const KoID TimeId("time", ki18nc("Context: dynamic sensors", "Time"));
35 const KoID DrawingAngleId("drawingangle", ki18nc("Context: dynamic sensors", "Drawing angle"));
36 const KoID RotationId("rotation", ki18nc("Context: dynamic sensors", "Rotation"));
37 const KoID PressureId("pressure", ki18nc("Context: dynamic sensors", "Pressure"));
38 const KoID PressureInId("pressurein", ki18nc("Context: dynamic sensors", "PressureIn"));
39 const KoID XTiltId("xtilt", ki18nc("Context: dynamic sensors", "X-Tilt"));
40 const KoID YTiltId("ytilt", ki18nc("Context: dynamic sensors", "Y-Tilt"));
41 
48 const KoID TiltDirectionId("ascension", ki18nc("Context: dynamic sensors", "Tilt direction"));
49 const KoID TiltElevationId("declination", ki18nc("Context: dynamic sensors", "Tilt elevation"));
50 
51 const KoID PerspectiveId("perspective", ki18nc("Context: dynamic sensors", "Perspective"));
52 const KoID TangentialPressureId("tangentialpressure", ki18nc("Context: dynamic sensors", "Tangential pressure"));
53 const KoID SensorsListId("sensorslist", "SHOULD NOT APPEAR IN THE UI !");
54 
55 class KisDynamicSensor;
56 typedef KisSharedPtr<KisDynamicSensor> KisDynamicSensorSP;
57 
58 enum DynamicSensorType {
59  FUZZY_PER_DAB,
60  FUZZY_PER_STROKE,
61  SPEED,
62  FADE,
63  DISTANCE,
64  TIME,
65  ANGLE,
66  ROTATION,
67  PRESSURE,
68  XTILT,
69  YTILT,
70  TILT_DIRECTION,
71  TILT_ELEVATATION,
72  PERSPECTIVE,
73  TANGENTIAL_PRESSURE,
74  SENSORS_LIST,
75  PRESSURE_IN,
76 
77  MYPAINT_PRESSURE,
78  MYPAINT_FINE_SPEED,
79  MYPAINT_GROSS_SPEED,
80  MYPAINT_RANDOM,
81  MYPAINT_STROKE,
82  MYPAINT_DIRECTION,
83  MYPAINT_DECLINATION,
84  MYPAINT_ASCENSION,
85  MYPAINT_CUSTOM,
86 
87  UNKNOWN = 255
88 };
89 
95 class PAINTOP_EXPORT KisDynamicSensor : public KisSerializableConfiguration
96 {
97 
98 public:
99  enum ParameterSign {
100  NegativeParameter = -1,
101  UnSignedParameter = 0,
102  PositiveParameter = 1
103  };
104 
105 protected:
106  KisDynamicSensor(DynamicSensorType type);
107 
108 public:
109 
110  ~KisDynamicSensor() override;
111 
115  qreal parameter(const KisPaintInformation& info);
122  qreal parameter(const KisPaintInformation& info, const KisCubicCurve curve, const bool customCurve);
123 
128  virtual void reset();
129 
134  virtual QWidget* createConfigurationWidget(QWidget* parent, QWidget* selector);
135 
139  static KisDynamicSensorSP id2Sensor(const KoID& id, const QString &parentOptionName);
140  static KisDynamicSensorSP id2Sensor(const QString& s, const QString &parentOptionName) {
141  return id2Sensor(KoID(s), parentOptionName);
142  }
143 
144  virtual QString minimumLabel(DynamicSensorType sensorType);
145  virtual QString maximumLabel(DynamicSensorType sensorType, int max = -1);
146  virtual int minimumValue(DynamicSensorType sensorType);
147  virtual int maximumValue(DynamicSensorType sensorType, int max = -1);
148  virtual QString valueSuffix(DynamicSensorType sensorType);
149 
150  static KisDynamicSensorSP createFromXML(const QString&, const QString &parentOptionName);
151  static KisDynamicSensorSP createFromXML(const QDomElement&, const QString &parentOptionName);
152 
153 
157  static QString id(DynamicSensorType sensorType);
158 
159  using KisSerializableConfiguration::fromXML;
160  using KisSerializableConfiguration::toXML;
161 
162  void toXML(QDomDocument&, QDomElement&) const override;
163  void fromXML(const QDomElement&) override;
164 
165  void setCurve(const KisCubicCurve& curve);
166  const KisCubicCurve& curve() const;
167  void removeCurve();
168  bool hasCustomCurve() const;
169 
170  void setActive(bool active);
171  bool isActive() const;
172 
173  virtual bool dependsOnCanvasRotation() const;
174 
175  virtual bool isAdditive() const;
176  virtual bool isAbsoluteRotation() const;
177 
178  inline DynamicSensorType sensorType() const { return m_type; }
179 
180 
184  int length() { return m_length; }
185  QString identifier();
186 
187 
188 public:
189  static inline qreal scalingToAdditive(qreal x) {
190  return -1.0 + 2.0 * x;
191  }
192 
193  static inline qreal additiveToScaling(qreal x) {
194  return 0.5 * (1.0 + x);
195  }
196 
197 protected:
198 
199  virtual qreal value(const KisPaintInformation& info) = 0;
200 
201  DynamicSensorType m_type;
202  QString m_id;
203 
204  int m_length {-1};
205  bool m_customCurve {false};
206  KisCubicCurve m_curve;
207  bool m_active {false};
208 
209 private:
210  Q_DISABLE_COPY(KisDynamicSensor)
211 
212 };
213 
214 #endif
ROTATION
Definition: kis_dynamic_sensor.h:66
YTiltId
const KoID YTiltId("ytilt", ki18nc("Context: dynamic sensors", "Y-Tilt"))
number depending on Y-tilt
TIME
Definition: kis_dynamic_sensor.h:64
KisDynamicSensor
Sensors are used to extract from KisPaintInformation a single double value which can be used to contr...
Definition: kis_dynamic_sensor.h:95
MYPAINT_CUSTOM
Definition: kis_dynamic_sensor.h:85
FuzzyPerDabId
const KoID FuzzyPerDabId("fuzzy", ki18nc("Context: dynamic sensors", "Fuzzy Dab"))
generate a random number
KisDynamicSensor::m_id
QString m_id
Definition: kis_dynamic_sensor.h:202
DistanceId
const KoID DistanceId("distance", ki18nc("Context: dynamic sensors", "Distance"))
generate a number that increase with distance
QWidget
RotationId
const KoID RotationId("rotation", ki18nc("Context: dynamic sensors", "Rotation"))
rotation coming from the device
DynamicSensorType
DynamicSensorType
Definition: kis_dynamic_sensor.h:58
PRESSURE
Definition: kis_dynamic_sensor.h:67
ANGLE
Definition: kis_dynamic_sensor.h:65
MYPAINT_PRESSURE
Definition: kis_dynamic_sensor.h:77
PERSPECTIVE
Definition: kis_dynamic_sensor.h:72
FuzzyPerStrokeId
const KoID FuzzyPerStrokeId("fuzzystroke", ki18nc("Context: dynamic sensors", "Fuzzy Stroke"))
generate a random number
MYPAINT_FINE_SPEED
Definition: kis_dynamic_sensor.h:78
TILT_DIRECTION
Definition: kis_dynamic_sensor.h:70
PressureInId
const KoID PressureInId("pressurein", ki18nc("Context: dynamic sensors", "PressureIn"))
number depending on the pressure
PerspectiveId
const KoID PerspectiveId("perspective", ki18nc("Context: dynamic sensors", "Perspective"))
< tilt elevation is 90 when stylus is perpendicular to tablet and 0 when it's parallel to tablet
FADE
Definition: kis_dynamic_sensor.h:62
QString
FUZZY_PER_STROKE
Definition: kis_dynamic_sensor.h:60
KisDynamicSensor::length
int length()
Definition: kis_dynamic_sensor.h:184
TILT_ELEVATATION
Definition: kis_dynamic_sensor.h:71
KisDynamicSensor::m_type
DynamicSensorType m_type
Definition: kis_dynamic_sensor.h:201
kis_curve_label.h
SpeedId
const KoID SpeedId("speed", ki18nc("Context: dynamic sensors", "Speed"))
generate a number depending on the speed of the cursor
UNKNOWN
Definition: kis_dynamic_sensor.h:87
TiltElevationId
const KoID TiltElevationId("declination", ki18nc("Context: dynamic sensors", "Tilt elevation"))
< number depending on the X and Y tilt, tilt direction is 0 when stylus nib points to you and changes...
TiltDirectionId
const KoID TiltDirectionId("ascension", ki18nc("Context: dynamic sensors", "Tilt direction"))
"TiltDirection" and "TiltElevation" parameters are written to preset files as "ascension" and "declin...
KisDynamicSensor::id2Sensor
static KisDynamicSensorSP id2Sensor(const QString &s, const QString &parentOptionName)
Definition: kis_dynamic_sensor.h:140
KisDynamicSensorSP
KisSharedPtr< KisDynamicSensor > KisDynamicSensorSP
Definition: kis_dynamic_sensor.h:55
MYPAINT_ASCENSION
Definition: kis_dynamic_sensor.h:84
DISTANCE
Definition: kis_dynamic_sensor.h:63
XTILT
Definition: kis_dynamic_sensor.h:68
PRESSURE_IN
Definition: kis_dynamic_sensor.h:75
KisDynamicSensor::ParameterSign
ParameterSign
Definition: kis_dynamic_sensor.h:99
SPEED
Definition: kis_dynamic_sensor.h:61
QDomElement
MYPAINT_GROSS_SPEED
Definition: kis_dynamic_sensor.h:79
MYPAINT_STROKE
Definition: kis_dynamic_sensor.h:81
MYPAINT_DIRECTION
Definition: kis_dynamic_sensor.h:82
PressureId
const KoID PressureId("pressure", ki18nc("Context: dynamic sensors", "Pressure"))
number depending on the pressure
KisSerializableConfiguration
FUZZY_PER_DAB
Definition: kis_dynamic_sensor.h:59
MYPAINT_RANDOM
Definition: kis_dynamic_sensor.h:80
DrawingAngleId
const KoID DrawingAngleId("drawingangle", ki18nc("Context: dynamic sensors", "Drawing angle"))
number depending on the angle
KisDynamicSensor::additiveToScaling
static qreal additiveToScaling(qreal x)
Definition: kis_dynamic_sensor.h:193
TimeId
const KoID TimeId("time", ki18nc("Context: dynamic sensors", "Time"))
generate a number that increase with time
SensorsListId
const KoID SensorsListId("sensorslist", "SHOULD NOT APPEAR IN THE UI !")
this a non user-visible sensor that can store a list of other sensors, and multiply their output
QDomDocument
TangentialPressureId
const KoID TangentialPressureId("tangentialpressure", ki18nc("Context: dynamic sensors", "Tangential pressure"))
the wheel on an airbrush device
TANGENTIAL_PRESSURE
Definition: kis_dynamic_sensor.h:73
MYPAINT_DECLINATION
Definition: kis_dynamic_sensor.h:83
KisDynamicSensor::sensorType
DynamicSensorType sensorType() const
Definition: kis_dynamic_sensor.h:178
XTiltId
const KoID XTiltId("xtilt", ki18nc("Context: dynamic sensors", "X-Tilt"))
number depending on X-tilt
SENSORS_LIST
Definition: kis_dynamic_sensor.h:74
YTILT
Definition: kis_dynamic_sensor.h:69
FadeId
const KoID FadeId("fade", ki18nc("Context: dynamic sensors", "Fade"))
generate a number that increase every time you call it (e.g. per dab)
KisDynamicSensor::m_curve
KisCubicCurve m_curve
Definition: kis_dynamic_sensor.h:206
KisDynamicSensor::scalingToAdditive
static qreal scalingToAdditive(qreal x)
Definition: kis_dynamic_sensor.h:189
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Sat Apr 10 2021 23:38:28 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