File indexing completed on 2024-05-26 04:33:49

0001 /*
0002  *  SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #include "KisBrushPropertiesModel.h"
0007 
0008 #include <KoResourceLoadResult.h>
0009 #include "kis_brush_registry.h"
0010 
0011 
0012 KisBrushPropertiesModel::KisBrushPropertiesModel(lager::reader<KisBrushModel::BrushData> _brushData, KisResourcesInterfaceSP _resourcesInterface)
0013 
0014     : resourcesInterface(_resourcesInterface)
0015     , brushData(_brushData)
0016     , isBrushPierced(brushData.map(std::bind(&KisBrushPropertiesModel::calcBrushPierced, this, std::placeholders::_1)))
0017     , brushApplication(brushData.map(std::bind(&KisBrushPropertiesModel::calcBrushApplication, this, std::placeholders::_1)))
0018 {
0019 }
0020 
0021 bool KisBrushPropertiesModel::calcBrushPierced(const KisBrushModel::BrushData &data)
0022 {
0023     KisBrushSP brush = KisBrushRegistry::instance()->createBrush(data, resourcesInterface).resource<KisBrush>();
0024     KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(brush, false);
0025 
0026     return brush->isPiercedApprox();
0027 }
0028 
0029 enumBrushApplication KisBrushPropertiesModel::calcBrushApplication(const KisBrushModel::BrushData &data)
0030 {
0031     return data.type == KisBrushModel::Predefined ?
0032                 data.predefinedBrush.application :
0033                 ALPHAMASK;
0034 }