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