|
Krita Source Code Documentation
|
#include <kis_predefined_brush_factory.h>
Inheritance diagram for KisPredefinedBrushFactory:Public Member Functions | |
| KoResourceLoadResult | createBrush (const KisBrushModel::BrushData &brushData, KisResourcesInterfaceSP resourcesInterface) override |
| KoResourceLoadResult | createBrush (const QDomElement &brushDefinition, KisResourcesInterfaceSP resourcesInterface) override |
| std::optional< KisBrushModel::BrushData > | createBrushModel (const QDomElement &element, KisResourcesInterfaceSP resourcesInterface) override |
| QString | id () const override |
| KisPredefinedBrushFactory (const QString &brushType) | |
| void | toXML (QDomDocument &doc, QDomElement &element, const KisBrushModel::BrushData &model) override |
Public Member Functions inherited from KisBrushFactory | |
| KisBrushFactory () | |
| virtual QString | name () const |
| virtual | ~KisBrushFactory () |
Static Public Member Functions | |
| static void | loadFromBrushResource (KisBrushModel::CommonData &commonData, KisBrushModel::PredefinedBrushData &predefinedBrushData, KisBrushSP brushResource) |
Private Member Functions | |
| std::variant< KisBrushModel::BrushData, KoResourceSignature > | createBrushModelImpl (const QDomElement &element, KisResourcesInterfaceSP resourcesInterface) |
Private Attributes | |
| const QString | m_id |
Definition at line 18 of file kis_predefined_brush_factory.h.
| KisPredefinedBrushFactory::KisPredefinedBrushFactory | ( | const QString & | brushType | ) |
Definition at line 20 of file kis_predefined_brush_factory.cpp.
|
overridevirtual |
Implements KisBrushFactory.
Definition at line 30 of file kis_predefined_brush_factory.cpp.
References KisBrushModel::PredefinedBrushData::adjustmentMidPoint, KisBrushModel::CommonData::angle, KisBrushModel::PredefinedBrushData::application, KisBrushModel::PredefinedBrushData::autoAdjustMidPoint, KisBrushModel::CommonData::autoSpacingCoeff, KisBrushModel::PredefinedBrushData::brightnessAdjustment, ResourceType::Brushes, KisBrushModel::BrushData::common, KisBrushModel::PredefinedBrushData::contrastAdjustment, KoResourceSignature::filename, KoResourceSignature::md5sum, KisBrushModel::BrushData::predefinedBrush, KisBrushModel::PredefinedBrushData::resourceSignature, KisBrushModel::PredefinedBrushData::scale, KisColorfulBrush::setAdjustmentMidPoint(), KisColorfulBrush::setAutoAdjustMidPoint(), KisColorfulBrush::setBrightnessAdjustment(), KisColorfulBrush::setContrastAdjustment(), KisBrushModel::CommonData::spacing, and KisBrushModel::CommonData::useAutoSpacing.
|
overridevirtual |
Create a new brush from the given data or return an existing KisBrush object. If this call leads to the creation of a resource, it should be added to the resource provider, too.
Implements KisBrushFactory.
Definition at line 61 of file kis_predefined_brush_factory.cpp.
References ResourceType::Brushes, createBrush(), and createBrushModelImpl().
|
overridevirtual |
Implements KisBrushFactory.
Definition at line 75 of file kis_predefined_brush_factory.cpp.
References createBrushModelImpl().
|
private |
we should first initialize data from the brush, because it may change the spacing properties embedded into some brushes
In Krita 4.x releases there was a bug that caused lightness adjustments to be applied to the brush twice. It happened due to the fact that copy-ctor called brushTipImage() virtual method instead of just copying the image itself.
In Krita 5 we should open these brushes in somewhat the same way. The problem is that we cannot convert the numbers precisely, because after applying a piecewise-linear function twice we get a quadratic function. So we fall-back to a blunt parameters scaling, which gives result that is just "good enough".
NOTE: AutoAdjustMidPoint option appeared only in Krita 5, so it automatically means the adjustments should be applied in the new way.
In Krita we also changed formula for contrast calculation in negative part, so we need to convert that as well.
In Krita versions before 4.4 series "ColorAsMask" could be overridden to false when the brush had no color inside. That changed in Krita 4.4.x series, when "brushApplication" replaced all the automatic heuristics
In Krita versions before 4.4 series we used to automatically select the brush application depending on the presence of the color in the brush, even when there was no "ColorAsMask" field.
Definition at line 83 of file kis_predefined_brush_factory.cpp.
References KisBrushModel::PredefinedBrushData::adjustmentMidPoint, ALPHAMASK, KisBrushModel::CommonData::angle, KisBrushModel::PredefinedBrushData::application, KisBrushModel::PredefinedBrushData::autoAdjustMidPoint, KisBrushModel::CommonData::autoSpacingCoeff, KisBrushModel::PredefinedBrushData::brightnessAdjustment, ResourceType::Brushes, KisBrushModel::BrushData::common, KisBrushModel::PredefinedBrushData::contrastAdjustment, KisBrushModel::PredefinedBrushData::hasColorAndTransparency, KisColorfulBrush::hasColorAndTransparency(), IMAGESTAMP, KIS_SAFE_ASSERT_RECOVER_NOOP, LIGHTNESSMAP, loadFromBrushResource(), KisBrushModel::Predefined, KisBrushModel::BrushData::predefinedBrush, KisBrushModel::PredefinedBrushData::scale, KisBrushModel::CommonData::spacing, KisDomUtils::toDouble(), KisDomUtils::toInt(), KisBrushModel::BrushData::type, and KisBrushModel::CommonData::useAutoSpacing.
|
overridevirtual |
Implements KisBrushFactory.
Definition at line 25 of file kis_predefined_brush_factory.cpp.
References m_id.
|
static |
Definition at line 197 of file kis_predefined_brush_factory.cpp.
References KisBrushModel::CommonData::autoSpacingCoeff, KisBrushModel::PredefinedBrushData::baseSize, KisBrushModel::PredefinedBrushData::brushType, KIS_SAFE_ASSERT_RECOVER_NOOP, KisBrushModel::PredefinedBrushData::parasiteSelection, KisBrushModel::PredefinedBrushData::resourceSignature, KisBrushModel::CommonData::spacing, KisBrushModel::PredefinedBrushData::subtype, and KisBrushModel::CommonData::useAutoSpacing.
|
overridevirtual |
Implements KisBrushFactory.
Definition at line 224 of file kis_predefined_brush_factory.cpp.
References KisBrushModel::PredefinedBrushData::adjustmentMidPoint, KisBrushModel::CommonData::angle, KisBrushModel::PredefinedBrushData::application, KisBrushModel::PredefinedBrushData::autoAdjustMidPoint, KisBrushModel::CommonData::autoSpacingCoeff, KisBrushModel::PredefinedBrushData::brightnessAdjustment, KisBrushModel::BrushData::common, KisBrushModel::PredefinedBrushData::contrastAdjustment, KoResourceSignature::filename, IMAGESTAMP, KoResourceSignature::md5sum, KoResourceSignature::name, KisBrushModel::BrushData::predefinedBrush, KisBrushModel::PredefinedBrushData::resourceSignature, KisBrushModel::PredefinedBrushData::scale, KisBrushModel::CommonData::spacing, and KisBrushModel::CommonData::useAutoSpacing.
|
private |
Definition at line 34 of file kis_predefined_brush_factory.h.