Krita Source Code Documentation
Loading...
Searching...
No Matches
KisPaintingModeOptionModel.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
8#include <KisLager.h>
9
11
12namespace {
13int calcEffectivePaintingMode(enumPaintingMode mode, bool maskingBrushEnabled) {
14 return static_cast<int>(maskingBrushEnabled ? enumPaintingMode::WASH : mode);
15}
16}
17
18KisPaintingModeOptionModel::KisPaintingModeOptionModel(lager::cursor<KisPaintingModeOptionData> _optionData, lager::reader<bool> _maskingBrushEnabled)
19 : optionData(_optionData)
20 , maskingBrushEnabled(_maskingBrushEnabled)
21 , LAGER_QT(paintingMode) {optionData[&KisPaintingModeOptionData::paintingMode].zoom(kislager::lenses::do_static_cast<enumPaintingMode, int>)}
22 , LAGER_QT(effectivePaintingMode) {
23 lager::with(optionData[&KisPaintingModeOptionData::paintingMode],
24 maskingBrushEnabled)
25 .map(&calcEffectivePaintingMode)}
26 , LAGER_QT(paintingModeState) {
27 lager::with(LAGER_QT(effectivePaintingMode),
28 maskingBrushEnabled.map(std::logical_not{}))
29 .map(ToControlState{})}
30{
31}
32
34{
36 data.paintingMode = static_cast<enumPaintingMode>(effectivePaintingMode());
37 return data;
38}
LAGER_QT(effectivePaintingMode)
KisPaintingModeOptionData bakedOptionData() const
lager::cursor< KisPaintingModeOptionData > optionData
KisPaintingModeOptionModel(lager::cursor< KisPaintingModeOptionData > optionData, lager::reader< bool > maskingBrushEnabled)