1 /*
2  *  Copyright (c) 2006-2007,2010 Cyrille Berger <cberger@cberger.net>
3  *  Copyright (c) 2011 Lukáš Tvrdý <lukast.dev@gmail.com>
4  *
5  *  This library is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU Lesser General Public License as published by
7  *  the Free Software Foundation; version 2 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This library is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Lesser General Public License for more details.
14  *
15  *  You should have received a copy of the GNU Lesser General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  */
19 
20 #ifndef _KIS_DYNAMIC_SENSORS_H_
21 #define _KIS_DYNAMIC_SENSORS_H_
22 
23 #include "../kis_dynamic_sensor.h"
24 
25 
26 #include <brushengine/kis_paint_information.h>
27 
28 class KisDynamicSensorSpeed : public KisDynamicSensor
29 {
30 public:
31     KisDynamicSensorSpeed();
~KisDynamicSensorSpeed()32     ~KisDynamicSensorSpeed() override { }
33     qreal value(const KisPaintInformation& info) override;
34 };
35 
36 class KisDynamicSensorRotation : public KisDynamicSensor
37 {
38 public:
39     KisDynamicSensorRotation();
~KisDynamicSensorRotation()40     ~KisDynamicSensorRotation() override { }
value(const KisPaintInformation & info)41     qreal value(const KisPaintInformation& info) override {
42         return info.rotation() / 360.0;
43     }
44 };
45 
46 class KisDynamicSensorPressure : public KisDynamicSensor
47 {
48 public:
49     KisDynamicSensorPressure();
~KisDynamicSensorPressure()50     ~KisDynamicSensorPressure() override { }
value(const KisPaintInformation & info)51     qreal value(const KisPaintInformation& info) override {
52         return info.pressure();
53     }
54 };
55 
56 class KisDynamicSensorPressureIn : public KisDynamicSensor
57 {
58 public:
59     KisDynamicSensorPressureIn();
~KisDynamicSensorPressureIn()60     ~KisDynamicSensorPressureIn() override { }
value(const KisPaintInformation & info)61     qreal value(const KisPaintInformation& info) override {
62         return !info.isHoveringMode() ? info.maxPressure() : 0.0;
63     }
64 };
65 
66 class KisDynamicSensorXTilt : public KisDynamicSensor
67 {
68 public:
69     KisDynamicSensorXTilt();
~KisDynamicSensorXTilt()70     ~KisDynamicSensorXTilt() override { }
value(const KisPaintInformation & info)71     qreal value(const KisPaintInformation& info) override {
72         return 1.0 - fabs(info.xTilt()) / 60.0;
73     }
74 };
75 
76 class KisDynamicSensorYTilt : public KisDynamicSensor
77 {
78 public:
79     KisDynamicSensorYTilt();
~KisDynamicSensorYTilt()80     ~KisDynamicSensorYTilt() override { }
value(const KisPaintInformation & info)81     qreal value(const KisPaintInformation& info) override {
82         return 1.0 - fabs(info.yTilt()) / 60.0;
83     }
84 };
85 
86 class KisDynamicSensorTiltDirection : public KisDynamicSensor
87 {
88 public:
89     KisDynamicSensorTiltDirection();
~KisDynamicSensorTiltDirection()90     ~KisDynamicSensorTiltDirection() override {}
value(const KisPaintInformation & info)91     qreal value(const KisPaintInformation& info) override {
92         return KisPaintInformation::tiltDirection(info, true);
93     }
94 };
95 
96 class KisDynamicSensorTiltElevation : public KisDynamicSensor
97 {
98 public:
99     KisDynamicSensorTiltElevation();
~KisDynamicSensorTiltElevation()100     ~KisDynamicSensorTiltElevation() override {}
value(const KisPaintInformation & info)101     qreal value(const KisPaintInformation& info) override {
102         return KisPaintInformation::tiltElevation(info, 60.0, 60.0, true);
103     }
104 };
105 
106 class KisDynamicSensorPerspective : public KisDynamicSensor
107 {
108 public:
109     KisDynamicSensorPerspective();
~KisDynamicSensorPerspective()110     ~KisDynamicSensorPerspective() override { }
value(const KisPaintInformation & info)111     qreal value(const KisPaintInformation& info) override {
112         return info.perspective();
113     }
114 };
115 
116 class KisDynamicSensorTangentialPressure : public KisDynamicSensor
117 {
118 public:
119     KisDynamicSensorTangentialPressure();
~KisDynamicSensorTangentialPressure()120     ~KisDynamicSensorTangentialPressure() override { }
value(const KisPaintInformation & info)121     qreal value(const KisPaintInformation& info) override {
122         return info.tangentialPressure();
123     }
124 };
125 
126 #endif
127