File indexing completed on 2024-06-16 04:17:30
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisPaintingModeOptionModel.h" 0007 0008 #include <KisLager.h> 0009 0010 using ToControlState = KisWidgetConnectionUtils::ToControlState; 0011 0012 namespace { 0013 int calcEffectivePaintingMode(enumPaintingMode mode, bool maskingBrushEnabled) { 0014 return static_cast<int>(maskingBrushEnabled ? enumPaintingMode::WASH : mode); 0015 } 0016 } 0017 0018 KisPaintingModeOptionModel::KisPaintingModeOptionModel(lager::cursor<KisPaintingModeOptionData> _optionData, lager::reader<bool> _maskingBrushEnabled) 0019 : optionData(_optionData) 0020 , maskingBrushEnabled(_maskingBrushEnabled) 0021 , LAGER_QT(paintingMode) {optionData[&KisPaintingModeOptionData::paintingMode].zoom(kislager::lenses::do_static_cast<enumPaintingMode, int>)} 0022 , LAGER_QT(effectivePaintingMode) { 0023 lager::with(optionData[&KisPaintingModeOptionData::paintingMode], 0024 maskingBrushEnabled) 0025 .map(&calcEffectivePaintingMode)} 0026 , LAGER_QT(paintingModeState) { 0027 lager::with(LAGER_QT(effectivePaintingMode), 0028 maskingBrushEnabled.map(std::logical_not{})) 0029 .map(ToControlState{})} 0030 { 0031 } 0032 0033 KisPaintingModeOptionData KisPaintingModeOptionModel::bakedOptionData() const 0034 { 0035 KisPaintingModeOptionData data; 0036 data.paintingMode = static_cast<enumPaintingMode>(effectivePaintingMode()); 0037 return data; 0038 }