36 : m_levelOfDetail(rhs.m_levelOfDetail)
37 , m_preserveAlpha(rhs.m_preserveAlpha)
38 , m_pattern(rhs.m_pattern)
39 , m_scale(rhs.m_scale)
40 , m_brightness(rhs.m_brightness)
41 , m_contrast(rhs.m_contrast)
42 , m_neutralPoint(rhs.m_neutralPoint)
43 , m_invert(rhs.m_invert)
44 , m_cutoffLeft(rhs.m_cutoffLeft)
45 , m_cutoffRight(rhs.m_cutoffRight)
46 , m_cutoffPolicy(rhs.m_cutoffPolicy)
157 if ((
mask.format() != QImage::Format_RGB32)
158 || (
mask.format() != QImage::Format_ARGB32)) {
159 mask.convertTo(QImage::Format_ARGB32);
166 tf.scale(scale, scale);
168 mask =
mask.scaled(rc.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
175 const int width =
mask.width();
176 const int height =
mask.height();
180 for (
int row = 0; row < height; ++row) {
181 for (
int col = 0; col < width; ++col) {
182 const QRgb currentPixel = pixel[row * width + col];
184 const int red = qRed(currentPixel);
185 const int green = qGreen(currentPixel);
186 const int blue = qBlue(currentPixel);
187 float alpha = qAlpha(currentPixel) / 255.0;
189 const int grayValue = (red * 11 + green * 16 + blue * 5) / 32;
190 float maskValue = (grayValue / 255.0) * alpha + (1 - alpha);
194 maskValue = ((maskValue - 0.5)*
m_contrast)+0.5;
196 if (maskValue > 1.0) {maskValue = 1;}
197 else if (maskValue < 0) {maskValue = 0;}
200 maskValue = 1 - maskValue;
203 maskValue = qBound(0.0f, maskValue, 1.0f);
205 float neutralAdjustedValue;
219 neutralAdjustedValue = alpha;
224 neutralAdjustedValue = alpha;
229 int finalValue = qRound(neutralAdjustedValue * 255.0);
230 pixel[row * width + col] = QColor(finalValue, finalValue, finalValue, qRound(alpha * 255.0)).rgba();
232 cs->
setOpacity(iter->rawData(), neutralAdjustedValue, 1);
bool operator==(const KisTextureMaskInfo &lhs, const KisTextureMaskInfo &rhs)
KoResourceLoadResult loadLinkedPattern(KisResourcesInterfaceSP resourcesInterface) const
bool fillProperties(const KisPropertiesConfiguration *setting, KisResourcesInterfaceSP resourcesInterface, bool invertAdditionally)
KisTextureMaskInfo & operator=(const KisTextureMaskInfo &rhs)
int levelOfDetail() const
KisTextureMaskInfo(int levelOfDetail, bool preserveAlpha)
QSharedPointer< KisTextureMaskInfo > m_lodInfo
KisTextureMaskInfoSP fetchCachedTextureInfo(KisTextureMaskInfoSP info)
QSharedPointer< KisTextureMaskInfo > m_mainInfo
bool read(const KisPropertiesConfiguration *setting)
KisEmbeddedTextureData textureData