krita

kis_substrate.h

00001 /*
00002  * Copyright (c) 2006 Boudewijn Rempt (boud@valdyas.org)
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00017  */
00018 #ifndef KIS_SUBSTRATE_H
00019 #define KIS_SUBSTRATE_H
00020 
00021 #include <qrect.h>
00022 #include <ksharedptr.h>
00023 
00024 class KisImage;
00025 
00028 struct KisSubstratePixel {
00029     float height;      // absolute height of the current position
00030     float smoothness;  // determines how easily the painting tool "slips" over the surface
00031     float absorbency;  // determines how much wetness the substrate can absorb. XXX: How about speed of absorbing?
00032     float density;     // XXX?
00033     Q_UINT8 r;           //.Red component of reflectivity
00034     Q_UINT8 g;           // Green component of reflectivity
00035     Q_UINT8 b;           // Blue component of reflectivity
00036     Q_UINT8 alpha;     // For composition with the background
00037 };
00038 
00047 class KisSubstrate : public KShared {
00048 
00049 public:
00050 
00051     KisSubstrate(KisImage * /*img*/) : KShared() {};
00052     virtual ~KisSubstrate() {};
00053 
00054 
00059     virtual void getPixels(KisSubstratePixel * substrate, const QRect & rc) const = 0;
00060 
00065     virtual void writePixels(const KisSubstratePixel * substrate, const QRect & rc) = 0;
00069     virtual void getPixel(KisSubstratePixel * ksp, int x, int y) const = 0;
00070 
00074     virtual void writePixel(const KisSubstratePixel & ksp, int x, int y) = 0;
00075     
00076 };
00077 
00078 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys