Krita Source Code Documentation
Loading...
Searching...
No Matches
psd_layer_pattern_fill Struct Reference

#include <psd_additional_layer_info_block.h>

Public Member Functions

QDomDocument getASLXML ()
 
QSharedPointer< KoShapeBackgroundgetBackground (KisEmbeddedResourceStorageProxy &embeddedProxy)
 
QBrush getBrush (KisEmbeddedResourceStorageProxy &embeddedProxy)
 
QDomDocument getFillLayerConfig () const
 
bool loadFromConfig (KisFilterConfigurationSP cfg)
 
void loadPattern (KisEmbeddedResourceStorageProxy &embeddedProxy)
 
void setAlignWithLayer (bool align)
 
void setAngle (float Angl)
 
void setOffset (QPointF phase)
 
void setPatternRef (const QString Idnt, const QString name)
 
void setScale (float Scl)
 
void writeASL (KisAslXmlWriter &w)
 

Static Public Member Functions

static void setupCatcher (const QString path, KisAslCallbackObjectCatcher &catcher, psd_layer_pattern_fill *data)
 

Public Attributes

bool align_with_layer {false}
 
double angle {0.0}
 
QPointF offset
 
KoPatternSP pattern
 
QString patternID
 
QString patternName
 
double scale {100.0}
 

Detailed Description

Definition at line 636 of file psd_additional_layer_info_block.h.

Member Function Documentation

◆ getASLXML()

QDomDocument psd_layer_pattern_fill::getASLXML ( )
inline

Definition at line 724 of file psd_additional_layer_info_block.h.

724 {
726 w.enterDescriptor("", "", "null");
727
728 if (patternID.isEmpty()) {
729 qWarning() << "This pattern cannot be saved: No pattern UUID available.";
730 return QDomDocument();
731 }
732
733 writeASL(w);
734
735 w.leaveDescriptor();
736
737 return w.document();
738 }

◆ getBackground()

QSharedPointer< KoShapeBackground > psd_layer_pattern_fill::getBackground ( KisEmbeddedResourceStorageProxy & embeddedProxy)
inline

Definition at line 765 of file psd_additional_layer_info_block.h.

765 {
767
768 loadPattern(embeddedProxy);
769 if (pattern) {
770 bg->setPattern(pattern->pattern());
771 } else {
773 bg->setPattern(res.resource<KoPattern>()->pattern());
774 }
775 QSizeF size = bg->patternOriginalSize();
776 QPointF refPoint(offset.x()/size.width(), offset.y()/size.height());
777 size = QSizeF(size.width() * (0.01*scale), size.height() * (0.01*scale));
778 bg->setPatternDisplaySize(size);
779 bg->setReferencePointOffset(refPoint);
780 return bg;
781 }
static KisResourcesInterfaceSP instance()
A pattern shape background.
Write API docs here.
Definition KoPattern.h:21
QImage pattern() const
pattern the actual pattern image
KoResourceSP resource() const noexcept
int size(const Forest< T > &forest)
Definition KisForest.h:1232
const QString Patterns
void loadPattern(KisEmbeddedResourceStorageProxy &embeddedProxy)

References KisGlobalResourcesInterface::instance(), KoPattern::pattern(), ResourceType::Patterns, and KoResourceLoadResult::resource().

◆ getBrush()

QBrush psd_layer_pattern_fill::getBrush ( KisEmbeddedResourceStorageProxy & embeddedProxy)
inline

Definition at line 783 of file psd_additional_layer_info_block.h.

783 {
784 QBrush brush;
785 loadPattern(embeddedProxy);
786 if (pattern) {
787 brush.setTextureImage(pattern->pattern());
788 } else {
790 brush.setTextureImage(res.resource<KoPattern>()->pattern());
791 }
792 QTransform t = QTransform::fromScale(scale*0.01, scale*0.01);
793 t.rotate(angle);
794 brush.setTransform(t);
795 return brush;
796 }

References KisGlobalResourcesInterface::instance(), KoPattern::pattern(), ResourceType::Patterns, and KoResourceLoadResult::resource().

◆ getFillLayerConfig()

QDomDocument psd_layer_pattern_fill::getFillLayerConfig ( ) const
inline

Definition at line 672 of file psd_additional_layer_info_block.h.

672 {
675
676 cfg->setProperty("pattern", patternName);
677 cfg->setProperty("fileName", QString(patternID + ".pat"));
678 cfg->setProperty("md5", ""); // Zero out MD5, PSD patterns are looked up by UUID in filename
679
680 //angle is flipped for patterns in Krita.
681 double fixedAngle = 360.0 - fmod(360.0 + angle, 360.0);
682
683 cfg->setProperty("transform_scale_x", scale / 100);
684 cfg->setProperty("transform_scale_y", scale / 100);
685 cfg->setProperty("transform_rotation_z", fixedAngle);
686
687 cfg->setProperty("transform_offset_x", offset.x());
688 cfg->setProperty("transform_offset_y", offset.y());
689 QDomDocument doc;
690 doc.setContent(cfg->toXML());
691 return doc;
692 }
static KisGeneratorRegistry * instance()
const T value(const QString &id) const
virtual KisFilterConfigurationSP defaultConfiguration(KisResourcesInterfaceSP resourcesInterface) const

References KisBaseProcessor::defaultConfiguration(), KisGeneratorRegistry::instance(), KisGlobalResourcesInterface::instance(), and KoGenericRegistry< T >::value().

◆ loadFromConfig()

bool psd_layer_pattern_fill::loadFromConfig ( KisFilterConfigurationSP cfg)
inline

Definition at line 694 of file psd_additional_layer_info_block.h.

694 {
695 if (cfg->name() != "pattern") {
696 return false;
697 }
698
699 const QString patternMD5 = cfg->getString("md5", "");
700 const QString patternNameTemp = cfg->getString("pattern", "Grid01.pat");
701 const QString patternFileName = cfg->getString("fileName", "");
702
703 KoResourceLoadResult res = KisGlobalResourcesInterface::instance()->source(ResourceType::Patterns).bestMatchLoadResult(patternMD5, patternFileName, patternNameTemp);
704 pattern = res.resource<KoPattern>();
705
706 patternName = cfg->getString("pattern", "");
707
708 // Pattern ID needs the pattern to be saved first.
709
710 align_with_layer = false;
711
712 scale = cfg->getDouble("transform_scale_x", 1.0) * 100;
713
714 angle = 360.0 - cfg->getDouble("transform_rotation_z", 0.0);
715 if (angle > 180) {
716 angle = (180.0 - angle);
717 }
718
719 offset = QPointF(cfg->getInt("transform_offset_x", 0), cfg->getInt("transform_offset_y", 0));
720
721 return true;
722 }

References KisGlobalResourcesInterface::instance(), ResourceType::Patterns, and KoResourceLoadResult::resource().

◆ loadPattern()

void psd_layer_pattern_fill::loadPattern ( KisEmbeddedResourceStorageProxy & embeddedProxy)
inline

Definition at line 756 of file psd_additional_layer_info_block.h.

756 {
757 const QString patternMD5 = "";
758 const QString patternNameTemp = patternName;
759 const QString patternFileName = QString(patternID + ".pat");
760
761 KoResourceLoadResult res = embeddedProxy.resourcesInterface()->source(ResourceType::Patterns).bestMatchLoadResult(patternMD5, patternFileName, patternNameTemp);
762 pattern = res.resource<KoPattern>();
763 }

References ResourceType::Patterns, KoResourceLoadResult::resource(), and KisEmbeddedResourceStorageProxy::resourcesInterface().

◆ setAlignWithLayer()

void psd_layer_pattern_fill::setAlignWithLayer ( bool align)
inline

Definition at line 660 of file psd_additional_layer_info_block.h.

660 {
661 align_with_layer = align;
662 }

◆ setAngle()

void psd_layer_pattern_fill::setAngle ( float Angl)
inline

Definition at line 645 of file psd_additional_layer_info_block.h.

645 {
646 angle = Angl;
647 }

◆ setOffset()

void psd_layer_pattern_fill::setOffset ( QPointF phase)
inline

Definition at line 651 of file psd_additional_layer_info_block.h.

651 {
652 offset = phase;
653 }

◆ setPatternRef()

void psd_layer_pattern_fill::setPatternRef ( const QString Idnt,
const QString name )
inline

Definition at line 655 of file psd_additional_layer_info_block.h.

655 {
657 patternID = Idnt;
658 }
const char * name(StandardAction id)

◆ setScale()

void psd_layer_pattern_fill::setScale ( float Scl)
inline

Definition at line 648 of file psd_additional_layer_info_block.h.

648 {
649 scale = Scl;
650 }

◆ setupCatcher()

static void psd_layer_pattern_fill::setupCatcher ( const QString path,
KisAslCallbackObjectCatcher & catcher,
psd_layer_pattern_fill * data )
inlinestatic

Definition at line 664 of file psd_additional_layer_info_block.h.

664 {
665 catcher.subscribeUnitFloat(path + "/Angl", "#Ang", std::bind(&psd_layer_pattern_fill::setAngle, data, std::placeholders::_1));
666 catcher.subscribeUnitFloat(path + "/Scl ", "#Prc", std::bind(&psd_layer_pattern_fill::setScale, data, std::placeholders::_1));
667 catcher.subscribeBoolean(path + "/Algn", std::bind(&psd_layer_pattern_fill::setAlignWithLayer, data, std::placeholders::_1));
668 catcher.subscribePoint(path + "/phase", std::bind(&psd_layer_pattern_fill::setOffset, data, std::placeholders::_1));
669 catcher.subscribePatternRef(path + "/Ptrn", std::bind(&psd_layer_pattern_fill::setPatternRef, data, std::placeholders::_1, std::placeholders::_2));
670 }
void subscribeUnitFloat(const QString &path, const QString &unit, ASLCallbackDouble callback)
void subscribePoint(const QString &path, ASLCallbackPoint callback)
void subscribeBoolean(const QString &path, ASLCallbackBoolean callback)
void subscribePatternRef(const QString &path, ASLCallbackPatternRef callback)
void setPatternRef(const QString Idnt, const QString name)

References setAlignWithLayer(), setAngle(), setOffset(), setPatternRef(), setScale(), KisAslCallbackObjectCatcher::subscribeBoolean(), KisAslCallbackObjectCatcher::subscribePatternRef(), KisAslCallbackObjectCatcher::subscribePoint(), and KisAslCallbackObjectCatcher::subscribeUnitFloat().

◆ writeASL()

void psd_layer_pattern_fill::writeASL ( KisAslXmlWriter & w)
inline

Definition at line 740 of file psd_additional_layer_info_block.h.

740 {
741 // pattern ref
742 w.enterDescriptor("Ptrn", "", "Ptrn");
743
744 w.writeText("Nm ", patternName);
745 w.writeText("Idnt", patternID);
746 w.leaveDescriptor();
747
748 // end
749
750 w.writeBoolean("Algn", align_with_layer);
751 w.writeUnitFloat("Scl ", "#Prc", scale);
752 w.writeUnitFloat("Angl", "#Ang", angle);
753 w.writePoint("phase", offset);
754 }

Member Data Documentation

◆ align_with_layer

bool psd_layer_pattern_fill::align_with_layer {false}

Definition at line 643 of file psd_additional_layer_info_block.h.

643{false};

◆ angle

double psd_layer_pattern_fill::angle {0.0}

Definition at line 637 of file psd_additional_layer_info_block.h.

637{0.0};

◆ offset

QPointF psd_layer_pattern_fill::offset

Definition at line 639 of file psd_additional_layer_info_block.h.

◆ pattern

KoPatternSP psd_layer_pattern_fill::pattern

Definition at line 642 of file psd_additional_layer_info_block.h.

◆ patternID

QString psd_layer_pattern_fill::patternID

Definition at line 641 of file psd_additional_layer_info_block.h.

◆ patternName

QString psd_layer_pattern_fill::patternName

Definition at line 640 of file psd_additional_layer_info_block.h.

◆ scale

double psd_layer_pattern_fill::scale {100.0}

Definition at line 638 of file psd_additional_layer_info_block.h.

638{100.0};

The documentation for this struct was generated from the following file: