summaryrefslogtreecommitdiffstats
path: root/chalk/core/kis_iterators_pixel.h
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-06-26 00:41:16 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-06-26 00:41:16 +0000
commit698569f8428ca088f764d704034a1330517b98c0 (patch)
treebf45be6946ebbbee9cce5a5bcf838f4c952d87e6 /chalk/core/kis_iterators_pixel.h
parent2785103a6bd4de55bd26d79e34d0fdd4b329a73a (diff)
downloadkoffice-698569f8428ca088f764d704034a1330517b98c0.tar.gz
koffice-698569f8428ca088f764d704034a1330517b98c0.zip
Finish rebranding of Krita as Chalk
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1238363 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'chalk/core/kis_iterators_pixel.h')
-rw-r--r--chalk/core/kis_iterators_pixel.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/chalk/core/kis_iterators_pixel.h b/chalk/core/kis_iterators_pixel.h
new file mode 100644
index 00000000..bd82f856
--- /dev/null
+++ b/chalk/core/kis_iterators_pixel.h
@@ -0,0 +1,154 @@
+/* This file is part of the KDE project
+ * Copyright (c) 2004 Cyrille Berger <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#ifndef KIS_ITERATORS_PIXEL_H_
+#define KIS_ITERATORS_PIXEL_H_
+
+#include "kis_iterator.h"
+#include "kis_iteratorpixeltrait.h"
+
+/**
+ * The pixel iterators are high level iterarators. The lower level iterators merely return a pointer to some memory
+ * where a pixel begins; these iterators return KisPixels -- high-level representations of a pixel together with
+ * color model, profile and selectedness. You can access individual channels using the KisPixel [] operator, and .
+ */
+
+
+class KisHLineIteratorPixel : public KisHLineIterator, public KisIteratorPixelTrait <KisHLineIterator>
+{
+
+public:
+
+ KisHLineIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm,
+ TQ_INT32 x , TQ_INT32 y , TQ_INT32 w, TQ_INT32 offsetx, TQ_INT32 offsety,
+ bool writable);
+
+ KisHLineIteratorPixel(const KisHLineIteratorPixel& rhs) : KisHLineIterator(rhs), KisIteratorPixelTrait<KisHLineIterator>(rhs)
+ { m_offsetx = rhs.m_offsetx; m_offsety = rhs.m_offsety; }
+
+ KisHLineIteratorPixel& operator=(const KisHLineIteratorPixel& rhs)
+ {
+ KisHLineIterator::operator=(rhs);
+ KisIteratorPixelTrait<KisHLineIterator>::operator=(rhs);
+ m_offsetx = rhs.m_offsetx; m_offsety = rhs.m_offsety;
+ return *this;
+ }
+
+ inline KisHLineIteratorPixel & operator ++() { KisHLineIterator::operator++(); advance(1); return *this;}
+ inline KisHLineIteratorPixel & operator --() { KisHLineIterator::operator--(); retreat(); return *this;}
+
+ inline void nextRow() {
+ KisHLineIterator::nextRow();
+ if (m_selectionIterator) m_selectionIterator->nextRow();
+ }
+
+ /// Advances a number of pixels until it reaches the end of the line
+ KisHLineIteratorPixel & operator+=(int n) { KisHLineIterator::operator+=(n); advance(n); return *this; };
+
+ TQ_INT32 x() const { return KisHLineIterator::x() + m_offsetx; }
+
+ TQ_INT32 y() const { return KisHLineIterator::y() + m_offsety; }
+
+ TQ_INT32 nConseqHPixels() const {
+ if (m_selectionIterator) {
+ TQ_INT32 tqparent = KisHLineIteratorPixel::nConseqHPixels();
+ TQ_INT32 selection = m_selectionIterator->nConseqHPixels();
+ if (tqparent < selection)
+ return tqparent;
+ return selection;
+ }
+ return KisHLineIteratorPixel::nConseqHPixels();
+ }
+protected:
+
+ TQ_INT32 m_offsetx, m_offsety;
+};
+
+class KisVLineIteratorPixel : public KisVLineIterator, public KisIteratorPixelTrait <KisVLineIterator>
+{
+public:
+ KisVLineIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm,
+ TQ_INT32 xpos , TQ_INT32 ypos , TQ_INT32 height, TQ_INT32 offsetx, TQ_INT32 offsety,
+ bool writable);
+
+ KisVLineIteratorPixel(const KisVLineIteratorPixel& rhs) : KisVLineIterator(rhs), KisIteratorPixelTrait<KisVLineIterator>(rhs)
+ { m_offsetx = rhs.m_offsetx; m_offsety = rhs.m_offsety; }
+
+ KisVLineIteratorPixel& operator=(const KisVLineIteratorPixel& rhs)
+ {
+ KisVLineIterator::operator=(rhs);
+ KisIteratorPixelTrait<KisVLineIterator>::operator=(rhs);
+ m_offsetx = rhs.m_offsetx; m_offsety = rhs.m_offsety;
+ return *this; }
+
+ inline KisVLineIteratorPixel & operator ++() { KisVLineIterator::operator++(); advance(1); return *this;}
+
+ inline void nextRow() {
+ KisVLineIterator::nextCol();
+ if (m_selectionIterator) m_selectionIterator->nextCol();
+ }
+
+ TQ_INT32 x() const { return KisVLineIterator::x() + m_offsetx; }
+
+ TQ_INT32 y() const { return KisVLineIterator::y() + m_offsety; }
+
+protected:
+
+ TQ_INT32 m_offsetx, m_offsety;
+};
+
+class KisRectIteratorPixel : public KisRectIterator, public KisIteratorPixelTrait <KisRectIterator>
+{
+public:
+ KisRectIteratorPixel( KisPaintDevice *ndevice, KisDataManager *dm, KisDataManager *sel_dm,
+ TQ_INT32 x, TQ_INT32 y, TQ_INT32 w, TQ_INT32 h, TQ_INT32 offsetx, TQ_INT32 offsety,
+ bool writable);
+
+ KisRectIteratorPixel(const KisRectIteratorPixel& rhs) : KisRectIterator(rhs), KisIteratorPixelTrait<KisRectIterator>(rhs)
+ { m_offsetx = rhs.m_offsetx; m_offsety = rhs.m_offsety; }
+
+ KisRectIteratorPixel& operator=(const KisRectIteratorPixel& rhs)
+ {
+ KisRectIterator::operator=(rhs);
+ KisIteratorPixelTrait<KisRectIterator>::operator=(rhs);
+ m_offsetx = rhs.m_offsetx; m_offsety = rhs.m_offsety;
+ return *this; }
+
+ inline KisRectIteratorPixel & operator ++() { KisRectIterator::operator++(); advance(1); return *this;}
+
+ TQ_INT32 x() const { return KisRectIterator::x() + m_offsetx; }
+
+ TQ_INT32 y() const { return KisRectIterator::y() + m_offsety; }
+
+ TQ_INT32 nConseqPixels() const {
+ if (m_selectionIterator) {
+ TQ_INT32 tqparent = KisRectIterator::nConseqPixels();
+ TQ_INT32 selection = m_selectionIterator->nConseqPixels();
+ if (tqparent < selection)
+ return tqparent;
+ return selection;
+ }
+ return KisRectIterator::nConseqPixels();
+ }
+
+protected:
+
+ TQ_INT32 m_offsetx, m_offsety;
+};
+
+#endif