Casper Boemann cbr at
Mon Jul 26 15:34:34 CEST 2004

> KisPixelRepresentationMyColorStrategy : public  KisPixelRepresentation
> {
> KisChannelDouble channel1() { return  KisChannelDouble( (double*)
data ); };
> KisChannelDouble channel2() { return  KisChannelDouble( (double*) ( data +
> sizeof(double) ) ); };
> KisChannelDouble channel3() { return  KisChannelDouble( (double*) ( data +
> 2*sizeof(double) ) ); };
> KisChannelUChar channel4() { return  KisChannelUChar ( data + 3
> *sizeof(double) ); };
> private:
>  uchar* data;
> }

On the other hand - it is more or less exactly like the class I would use as
a helper class INSIDE the colorstrategy.

..If I could not convince you that *data  would require extra copies of

a typical life of a pixelrep:
-the pixelrep is created. Call of constructor and copy of pointer into
- the pixelrep is returned from the iterator requireing a copy
constructor(possible optimized away by the compiler but don't count on it)
- the pixelrep is used. a double indirect access to the data:

With my proposal:
-the pointer to the pixel is returned from the iterator requireing a copy
- the pixelrep is used. a single indirect access to the data:

with my proposal the class would be like:

KisPixelRepresentationMyColorStrategy : public  KisPixelRepresentation
 KisChannelDouble channel1;
KisChannelDouble channel2;
KisChannelDouble channel3;
KisChannelUChar channel4;

no need to make them private as only MyColorStrategy would be allowed to use
this class (could be defined in MyColorStrategy.cpp).

In fact, it is nothing more than a struct.

best regards

More information about the kimageshop mailing list