35 KisBrushSP brush = resourceSourceAdapter.bestMatch(brushMD5Sum, brushFileName,
"");
41 brush = brush->clone().dynamicCast<
KisBrush>();
65 if (std::holds_alternative<KisBrushModel::BrushData>(data)) {
66 return createBrush(std::get<KisBrushModel::BrushData>(data), resourcesInterface);
67 }
else if (std::holds_alternative<KoResourceSignature>(data)) {
68 return std::get<KoResourceSignature>(data);
88 const QString brushFileName = element.attribute(
"filename",
"");
89 const QString brushMD5Sum = element.attribute(
"md5sum",
"");
90 KisBrushSP brushResource = resourceSourceAdapter.bestMatch(brushMD5Sum, brushFileName,
"");
109 if (element.attribute(
"BrushVersion",
"1") ==
"1") {
115 quint8 adjustmentMidPoint = element.attribute(
"AdjustmentMidPoint",
"127").toInt();
116 qreal brightnessAdjustment = element.attribute(
"BrightnessAdjustment").toDouble();
117 qreal contrastAdjustment = element.attribute(
"ContrastAdjustment").toDouble();
119 const int adjustmentVersion = element.attribute(
"AdjustmentVersion",
"1").toInt();
120 const bool autoAdjustMidPoint = element.attribute(
"AutoAdjustMidPoint",
"0").toInt();
121 const bool hasAutoAdjustMidPoint = element.hasAttribute(
"AutoAdjustMidPoint");
138 if (adjustmentVersion < 2 && !hasAutoAdjustMidPoint) {
139 adjustmentMidPoint = qBound(0, 127 + (
int(adjustmentMidPoint) - 127) * 2, 255);
140 brightnessAdjustment *= 2.0;
141 contrastAdjustment *= 2.0;
147 if (contrastAdjustment < 0) {
148 contrastAdjustment = 1.0 / (1.0 - contrastAdjustment) - 1.0;
159 auto legacyBrushApplication = [] (
KisColorfulBrush *colorfulBrush,
bool forceColorToAlpha) {
170 if (element.hasAttribute(
"preserveLightness")) {
171 const int preserveLightness =
KisDomUtils::toInt(element.attribute(
"preserveLightness",
"0"));
172 const bool useColorAsMask = (bool)element.attribute(
"ColorAsMask",
"1").toInt();
175 else if (element.hasAttribute(
"brushApplication")) {
179 else if (element.hasAttribute(
"ColorAsMask")) {
182 const bool useColorAsMask = (bool)element.attribute(
"ColorAsMask",
"1").toInt();
199 commonData.
spacing = brushResource->spacing();
203 predefinedBrushData.
brushType = brushResource->brushType();
204 predefinedBrushData.
baseSize = { brushResource->width(), brushResource->height() };
207 predefinedBrushData.
subtype =
"gbr_brush";
208 }
else if (brushResource.dynamicCast<
KisAbrBrush>()) {
209 predefinedBrushData.
subtype =
"abr_brush";
210 }
else if (brushResource.dynamicCast<
KisPngBrush>()) {
211 predefinedBrushData.
subtype =
"png_brush";
212 }
else if (brushResource.dynamicCast<
KisSvgBrush>()) {
213 predefinedBrushData.
subtype =
"svg_brush";
219 if (imagepipeBrush) {