20#ifndef KIS_ITERATORPIXELTRAIT_H_
21#define KIS_ITERATORPIXELTRAIT_H_
23#include "kis_iterator.h"
24#include <kis_paint_device.h>
26template<
typename _iTp>
27class KisIteratorPixelTrait
30 KisIteratorPixelTrait(
KisPaintDevice * ndevice, _iTp *underlyingIterator)
32 m_underlyingIterator(underlyingIterator)
34 m_selectionIterator = NULL;
37 ~KisIteratorPixelTrait()
39 delete m_selectionIterator;
42 KisIteratorPixelTrait(
const KisIteratorPixelTrait& rhs)
46 m_device = rhs.m_device;
47 m_underlyingIterator = rhs.m_underlyingIterator;
49 if (rhs.m_selectionIterator) {
50 m_selectionIterator =
new _iTp(*rhs.m_selectionIterator);
52 m_selectionIterator = 0;
56 KisIteratorPixelTrait& operator=(
const KisIteratorPixelTrait& rhs)
60 m_device = rhs.m_device;
61 m_underlyingIterator = rhs.m_underlyingIterator;
63 delete m_selectionIterator;
64 if (rhs.m_selectionIterator) {
65 m_selectionIterator =
new _iTp(*rhs.m_selectionIterator);
67 m_selectionIterator = 0;
79 inline TQ_UINT8 operator[](
int index)
const
80 {
return m_underlyingIterator->rawData()[index]; };
85 inline bool isSelected()
const
87 if (m_selectionIterator)
88 return *(m_selectionIterator->rawData()) > SELECTION_THRESHOLD;
96 inline TQ_UINT8 selectedness()
const
98 if (m_selectionIterator)
99 return *(m_selectionIterator->rawData());
110 inline TQ_UINT8 * selectionMask()
const
112 if ( m_selectionIterator )
113 return m_selectionIterator->rawData();
122 inline void advance(
int n){
if (m_selectionIterator)
for(
int i=0; i< n; i++) ++(*m_selectionIterator);};
123 inline void retreat(){
if (m_selectionIterator) --(*m_selectionIterator);};
125 void setSelectionIterator(_iTp *si){m_selectionIterator = si;};
127 _iTp *m_underlyingIterator;
128 _iTp *m_selectionIterator;
A paint device contains the actual pixel data and offers methods to read and write pixels.