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 }