krita
kis_u16_base_colorspace.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef KIS_U16_BASE_COLORSPACE_H_
00019 #define KIS_U16_BASE_COLORSPACE_H_
00020
00021 #include "kis_global.h"
00022 #include "kis_abstract_colorspace.h"
00023 #include "kis_integer_maths.h"
00024
00030 class KisU16BaseColorSpace : public KisAbstractColorSpace {
00031
00032 public:
00033
00034 static const Q_UINT16 U16_OPACITY_OPAQUE = UINT16_MAX;
00035 static const Q_UINT16 U16_OPACITY_TRANSPARENT = UINT16_MIN;
00036
00037 public:
00038
00039 KisU16BaseColorSpace(const KisID & id, DWORD cmType, icColorSpaceSignature colorSpaceSignature,
00040 KisColorSpaceFactoryRegistry * parent,
00041 KisProfile *p)
00042 : KisAbstractColorSpace(id, cmType, colorSpaceSignature,
00043 parent,
00044 p)
00045 {
00046 m_alphaSize = sizeof(Q_UINT16);
00047 };
00048
00049 virtual Q_UINT8 getAlpha(const Q_UINT8 * pixel) const;
00050 virtual void setAlpha(Q_UINT8 * pixels, Q_UINT8 alpha, Q_INT32 nPixels) const;
00051 virtual void multiplyAlpha(Q_UINT8 * pixels, Q_UINT8 alpha, Q_INT32 nPixels);
00052
00053 virtual void applyAlphaU8Mask(Q_UINT8 * pixels, Q_UINT8 * alpha, Q_INT32 nPixels);
00054 virtual void applyInverseAlphaU8Mask(Q_UINT8 * pixels, Q_UINT8 * alpha, Q_INT32 nPixels);
00055
00056 virtual QString channelValueText(const Q_UINT8 *pixel, Q_UINT32 channelIndex) const;
00057 virtual QString normalisedChannelValueText(const Q_UINT8 *pixel, Q_UINT32 channelIndex) const;
00058
00059 virtual Q_UINT8 scaleToU8(const Q_UINT8 * srcPixel, Q_INT32 channelPos);
00060 virtual Q_UINT16 scaleToU16(const Q_UINT8 * srcPixel, Q_INT32 channelPos);
00061
00062 protected:
00063
00064 struct U16Mult {
00065 inline Q_UINT16 operator()(const Q_UINT16& a, const Q_UINT16& b) const {
00066 return UINT16_MULT(a, b);
00067 }
00068 };
00069 struct Uint8ToU16 {
00070 inline Q_UINT16 operator()(const Q_UINT8 src) const {
00071 return UINT8_TO_UINT16(src);
00072 }
00073 };
00074 struct U16OpacityTest {
00075 inline bool operator()(const Q_UINT16& opacity) const {
00076 return opacity != U16_OPACITY_TRANSPARENT;
00077 }
00078 };
00079 };
00080 #endif // KIS_U16_BASE_COLORSPACE_H_
|