Krita Source Code Documentation
Loading...
Searching...
No Matches
KisBrushModel Namespace Reference

Namespaces

namespace  detail
 

Classes

struct  AutoBrushData
 
struct  AutoBrushGeneratorData
 
struct  BrushData
 
struct  CommonData
 
struct  MaskingBrushData
 
struct  PrecisionData
 
struct  PredefinedBrushData
 
struct  TextBrushData
 

Enumerations

enum  AutoBrushGeneratorShape { Circle = 0 , Rectangle }
 
enum  AutoBrushGeneratorType { Default = 0 , Soft , Gaussian }
 
enum  BrushType { Auto = 0 , Predefined , Text }
 

Functions

KisPaintopLodLimitations brushLodLimitations (const BrushData &data)
 
qreal effectiveSizeForBrush (BrushType type, const AutoBrushData &autoBrush, const PredefinedBrushData &predefinedBrush, const TextBrushData &textBrush)
 
qreal effectiveSizeForBrush (const BrushData &brush)
 
qreal lightnessModeActivated (BrushType type, const PredefinedBrushData &predefinedBrush)
 
bool operator== (const MaskingBrushData &lhs, const MaskingBrushData &rhs)
 
bool operator== (const PrecisionData &lhs, const PrecisionData &rhs)
 
void setEffectiveSizeForBrush (const BrushType type, AutoBrushData &autoBrush, PredefinedBrushData &predefinedBrush, TextBrushData &textBrush, qreal value)
 

Enumeration Type Documentation

◆ AutoBrushGeneratorShape

Enumerator
Circle 
Rectangle 

Definition at line 45 of file KisBrushModel.h.

45 {
46 Circle = 0,
48};

◆ AutoBrushGeneratorType

Enumerator
Default 
Soft 
Gaussian 

Definition at line 50 of file KisBrushModel.h.

◆ BrushType

Enumerator
Auto 
Predefined 
Text 

Definition at line 143 of file KisBrushModel.h.

143 {
144 Auto = 0,
146 Text
147};

Function Documentation

◆ brushLodLimitations()

KisPaintopLodLimitations BRUSH_EXPORT KisBrushModel::brushLodLimitations ( const BrushData & data)

Definition at line 71 of file KisBrushModel.cpp.

72{
74
75 if (!data.common.useAutoSpacing && data.common.spacing > 0.5) {
76 l.limitations << KoID("huge-spacing", i18nc("PaintOp instant preview limitation", "Spacing > 0.5, consider disabling Instant Preview"));
77 }
78
79 if (data.type == Auto) {
80 if (!qFuzzyCompare(data.autoBrush.density, 1.0)) {
81 l.limitations << KoID("auto-brush-density", i18nc("PaintOp instant preview limitation", "Brush Density recommended value 100.0"));
82 }
83
84 if (!qFuzzyCompare(data.autoBrush.randomness, 0.0)) {
85 l.limitations << KoID("auto-brush-randomness", i18nc("PaintOp instant preview limitation", "Brush Randomness recommended value 0.0"));
86 }
87 }
88
89 return l;
90}
Definition KoID.h:30
static bool qFuzzyCompare(half p1, half p2)

References Auto, KisBrushModel::BrushData::autoBrush, KisBrushModel::BrushData::common, KisBrushModel::AutoBrushData::density, KisPaintopLodLimitations::limitations, qFuzzyCompare(), KisBrushModel::AutoBrushData::randomness, KisBrushModel::CommonData::spacing, KisBrushModel::BrushData::type, and KisBrushModel::CommonData::useAutoSpacing.

◆ effectiveSizeForBrush() [1/2]

qreal BRUSH_EXPORT KisBrushModel::effectiveSizeForBrush ( BrushType type,
const AutoBrushData & autoBrush,
const PredefinedBrushData & predefinedBrush,
const TextBrushData & textBrush )

Definition at line 92 of file KisBrushModel.cpp.

96{
97 qreal result = 42;
98
99 switch (type) {
100 case Auto:
101 result = autoBrush.generator.diameter;
102 break;
103 case Predefined:
104 result = predefinedBrush.baseSize.width() * predefinedBrush.scale;
105 break;
106 case Text:
107 result = textBrush.baseSize.width() * textBrush.scale;
108 break;
109 }
110
111 return result;
112}
AutoBrushGeneratorData generator

References Auto, KisBrushModel::PredefinedBrushData::baseSize, KisBrushModel::TextBrushData::baseSize, KisBrushModel::AutoBrushGeneratorData::diameter, KisBrushModel::AutoBrushData::generator, Predefined, KisBrushModel::PredefinedBrushData::scale, KisBrushModel::TextBrushData::scale, and Text.

◆ effectiveSizeForBrush() [2/2]

qreal BRUSH_EXPORT KisBrushModel::effectiveSizeForBrush ( const BrushData & brush)

◆ lightnessModeActivated()

qreal BRUSH_EXPORT KisBrushModel::lightnessModeActivated ( BrushType type,
const PredefinedBrushData & predefinedBrush )

Definition at line 114 of file KisBrushModel.cpp.

115{
116 // TODO: use effectiveApplication instead!!!
117 return type == Predefined && predefinedBrush.application == LIGHTNESSMAP;
118}
@ LIGHTNESSMAP
Definition kis_brush.h:41

References KisBrushModel::PredefinedBrushData::application, LIGHTNESSMAP, and Predefined.

◆ operator==() [1/2]

◆ operator==() [2/2]

bool KisBrushModel::operator== ( const PrecisionData & lhs,
const PrecisionData & rhs )

◆ setEffectiveSizeForBrush()

void BRUSH_EXPORT KisBrushModel::setEffectiveSizeForBrush ( const BrushType type,
AutoBrushData & autoBrush,
PredefinedBrushData & predefinedBrush,
TextBrushData & textBrush,
qreal value )

Definition at line 120 of file KisBrushModel.cpp.

125{
126 switch (type) {
127 case Auto:
128 autoBrush.generator.diameter = value;
129 break;
130 case Predefined:
131 predefinedBrush.scale = value / predefinedBrush.baseSize.width();
132 break;
133 case Text:
134 textBrush.scale = value / textBrush.baseSize.width();
135 break;
136 }
137}
float value(const T *src, size_t ch)

References Auto, KisBrushModel::PredefinedBrushData::baseSize, KisBrushModel::TextBrushData::baseSize, KisBrushModel::AutoBrushGeneratorData::diameter, KisBrushModel::AutoBrushData::generator, Predefined, KisBrushModel::PredefinedBrushData::scale, KisBrushModel::TextBrushData::scale, Text, and value().