krita
kis_paintop.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef KIS_PAINTOP_H_
00024 #define KIS_PAINTOP_H_
00025
00026 #include <qstring.h>
00027
00028 #include <ksharedptr.h>
00029 #include <klocale.h>
00030
00031 #include "kis_global.h"
00032 #include "kis_types.h"
00033 #include "kis_id.h"
00034 #include "kis_vec.h"
00035 #include "kis_colorspace.h"
00036
00037 #include <koffice_export.h>
00038
00039 class KisPoint;
00040 class KisAlphaMask;
00041 class KisPainter;
00042 class KisColorSpace;
00043 class KisInputDevice;
00044 class QWidget;
00045
00050 class KRITACORE_EXPORT KisPaintInformation {
00051 public:
00052 KisPaintInformation(double pressure = PRESSURE_DEFAULT,
00053 double xTilt = 0.0, double yTilt = 0.0,
00054 KisVector2D movement = KisVector2D())
00055 : pressure(pressure), xTilt(xTilt), yTilt(yTilt), movement(movement) {}
00056 double pressure;
00057 double xTilt;
00058 double yTilt;
00059 KisVector2D movement;
00060 };
00061
00062 class KRITACORE_EXPORT KisPaintOp : public KShared
00063 {
00064
00065 public:
00066
00067 KisPaintOp(KisPainter * painter);
00068 virtual ~KisPaintOp();
00069
00070 virtual void paintAt(const KisPoint &pos, const KisPaintInformation& info) = 0;
00071 void setSource(KisPaintDeviceSP p);
00072
00077 virtual bool incremental() { return false; }
00078
00079
00080 protected:
00081
00082 virtual KisPaintDeviceSP computeDab(KisAlphaMaskSP mask);
00083 virtual KisPaintDeviceSP computeDab(KisAlphaMaskSP mask, KisColorSpace *cs);
00084
00085
00089 virtual void splitCoordinate(double coordinate, Q_INT32 *whole, double *fraction);
00090
00091 KisPainter * m_painter;
00092 KisPaintDeviceSP m_source;
00093 };
00094
00095 class KisPaintOpSettings {
00096 public:
00097 KisPaintOpSettings(QWidget *parent) { Q_UNUSED(parent); }
00098 virtual ~KisPaintOpSettings() {}
00099
00100 virtual QWidget *widget() const { return 0; }
00101 };
00102
00108 class KisPaintOpFactory : public KShared
00109 {
00110
00111 public:
00112 KisPaintOpFactory() {}
00113 virtual ~KisPaintOpFactory() {}
00114
00115 virtual KisPaintOp * createOp(const KisPaintOpSettings *settings, KisPainter * painter) = 0;
00116 virtual KisID id() { return KisID("abstractpaintop", i18n("Abstract PaintOp")); }
00117
00121 virtual QString pixmap() { return ""; }
00122
00128 virtual bool userVisible(KisColorSpace * cs = 0) { return cs->id() != KisID("WET", ""); }
00129
00135 virtual KisPaintOpSettings* settings(QWidget* parent, const KisInputDevice& inputDevice);
00136
00137 };
00138 #endif // KIS_PAINTOP_H_
|