File indexing completed on 2024-05-12 15:56:09

0001 /*
0002  *  SPDX-FileCopyrightText: 2008 Boudewijn Rempt <boud@valdyas.org>
0003  *  SPDX-FileCopyrightText: 2010-2011 Lukáš Tvrdý <lukast.dev@gmail.com>
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #include "kis_auto_brush_factory.h"
0009 
0010 #include <QDomDocument>
0011 
0012 #include "kis_auto_brush.h"
0013 #include "kis_mask_generator.h"
0014 #include <kis_dom_utils.h>
0015 #include <KoResourceLoadResult.h>
0016 
0017 
0018 KoResourceLoadResult KisAutoBrushFactory::createBrush(const QDomElement &brushDefinition, KisResourcesInterfaceSP resourcesInterface)
0019 {
0020     Q_UNUSED(resourcesInterface);
0021 
0022     KisMaskGenerator* mask = KisMaskGenerator::fromXML(brushDefinition.firstChildElement("MaskGenerator"));
0023     double angle = KisDomUtils::toDouble(brushDefinition.attribute("angle", "0.0"));
0024     double randomness = KisDomUtils::toDouble(brushDefinition.attribute("randomness", "0.0"));
0025     qreal density = KisDomUtils::toDouble(brushDefinition.attribute("density", "1.0"));
0026     double spacing = KisDomUtils::toDouble(brushDefinition.attribute("spacing", "1.0"));
0027     bool useAutoSpacing = KisDomUtils::toInt(brushDefinition.attribute("useAutoSpacing", "0"));
0028     qreal autoSpacingCoeff = KisDomUtils::toDouble(brushDefinition.attribute("autoSpacingCoeff", "1.0"));
0029 
0030     KisBrushSP brush = KisBrushSP(new KisAutoBrush(mask, angle, randomness, density));
0031     brush->setSpacing(spacing);
0032     brush->setAutoSpacing(useAutoSpacing, autoSpacingCoeff);
0033     return brush;
0034 }