Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSaveGroupVisitor Class Reference

The KisSaveGroupVisitor class saves the groups in a Krita image to separate images. More...

#include <KisSaveGroupVisitor.h>

+ Inheritance diagram for KisSaveGroupVisitor:

Public Member Functions

 KisSaveGroupVisitor (KisImageWSP image, bool saveInvisible, bool saveTopLevelOnly, const QString &path, const QString &baseName, const QString &extension, const QString &mimeFilter)
 
bool visit (KisAdjustmentLayer *) override
 
bool visit (KisCloneLayer *) override
 
bool visit (KisColorizeMask *) override
 
bool visit (KisExternalLayer *) override
 
bool visit (KisFilterMask *) override
 
bool visit (KisGeneratorLayer *) override
 
bool visit (KisGroupLayer *layer) override
 
bool visit (KisNode *) override
 
bool visit (KisPaintLayer *) override
 
bool visit (KisSelectionMask *) override
 
bool visit (KisTransformMask *) override
 
bool visit (KisTransparencyMask *) override
 
 ~KisSaveGroupVisitor () override
 
- Public Member Functions inherited from KisNodeVisitor
 KisNodeVisitor ()
 
virtual ~KisNodeVisitor ()
 

Private Attributes

QString m_baseName
 
QString m_extension
 
KisImageWSP m_image
 
QString m_mimeFilter
 
QString m_path
 
bool m_saveInvisible
 
bool m_saveTopLevelOnly
 

Additional Inherited Members

- Protected Member Functions inherited from KisNodeVisitor
bool visitAll (KisNode *node, bool breakOnFail=false)
 
bool visitAllInverse (KisNode *node, bool breakOnFail=false)
 

Detailed Description

The KisSaveGroupVisitor class saves the groups in a Krita image to separate images.

Definition at line 26 of file KisSaveGroupVisitor.h.

Constructor & Destructor Documentation

◆ KisSaveGroupVisitor()

KisSaveGroupVisitor::KisSaveGroupVisitor ( KisImageWSP image,
bool saveInvisible,
bool saveTopLevelOnly,
const QString & path,
const QString & baseName,
const QString & extension,
const QString & mimeFilter )

Create a KisSaveGroupVisitor

Parameters
imagethe image to save
saveInvisiblealso save invisible layers
saveTopLevelOnlyif true, only save the toplevel layers, otherwise descend into groups and save the bottom-most groups (groups that do not contain another group.
paththe base location where the images will be saved
baseNamethe basename of the images
extensionthe file format extension
mimeFilterthe export image type

Definition at line 13 of file KisSaveGroupVisitor.cpp.

20 : m_image(image)
21 , m_saveInvisible(saveInvisible)
22 , m_saveTopLevelOnly(saveTopLevelOnly)
23 , m_path(path)
24 , m_baseName(baseName)
25 , m_extension(extension)
26 , m_mimeFilter(mimeFilter)
27{
28}

◆ ~KisSaveGroupVisitor()

KisSaveGroupVisitor::~KisSaveGroupVisitor ( )
override

Definition at line 30 of file KisSaveGroupVisitor.cpp.

31{
32}

Member Function Documentation

◆ visit() [1/12]

bool KisSaveGroupVisitor::visit ( KisAdjustmentLayer * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 42 of file KisSaveGroupVisitor.cpp.

42 {
43 return true;
44}

◆ visit() [2/12]

bool KisSaveGroupVisitor::visit ( KisCloneLayer * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 51 of file KisSaveGroupVisitor.cpp.

51 {
52 return true;
53}

◆ visit() [3/12]

bool KisSaveGroupVisitor::visit ( KisColorizeMask * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 76 of file KisSaveGroupVisitor.cpp.

76 {
77 return true;
78}

◆ visit() [4/12]

bool KisSaveGroupVisitor::visit ( KisExternalLayer * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 46 of file KisSaveGroupVisitor.cpp.

46 {
47 return true;
48}

◆ visit() [5/12]

bool KisSaveGroupVisitor::visit ( KisFilterMask * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 56 of file KisSaveGroupVisitor.cpp.

56 {
57 return true;
58}

◆ visit() [6/12]

bool KisSaveGroupVisitor::visit ( KisGeneratorLayer * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 68 of file KisSaveGroupVisitor.cpp.

68 {
69 return true;
70}

◆ visit() [7/12]

bool KisSaveGroupVisitor::visit ( KisGroupLayer * layer)
overridevirtual

Implements KisNodeVisitor.

Definition at line 80 of file KisSaveGroupVisitor.cpp.

81{
82 if (layer == m_image->rootLayer()) {
83 KisLayerSP child = qobject_cast<KisLayer*>(layer->firstChild().data());
84 while (child) {
85 child->accept(*this);
86 child = qobject_cast<KisLayer*>(child->nextSibling().data());
87 }
88
89 }
90 else if (layer->visible() || m_saveInvisible) {
91
92 QRect r = m_image->bounds();
93
94 KisDocument *exportDocument = KisPart::instance()->createDocument();
95 { // make sure dst is deleted before calling 'delete exportDocument',
96 // since KisDocument checks that its image is properly deref()'d.
97 KisImageSP dst = new KisImage(exportDocument->createUndoStore(), r.width(), r.height(), m_image->colorSpace(), layer->name());
99 exportDocument->setCurrentImage(dst);
100 KisPaintLayer* paintLayer = new KisPaintLayer(dst, "projection", layer->opacity());
101 KisPainter gc(paintLayer->paintDevice());
102 gc.bitBlt(QPoint(0, 0), layer->projection(), r);
103 dst->addNode(paintLayer, dst->rootLayer(), KisLayerSP(0));
104
105 dst->initialRefreshGraph();
106 }
107
108 QString path = m_path + "/" + m_baseName + "_" + layer->name().replace(' ', '_') + '.' + m_extension;
109
110 exportDocument->setFileBatchMode(true);
111 exportDocument->exportDocumentSync(path, m_mimeFilter.toLatin1());
112
113 if (!m_saveTopLevelOnly) {
114 KisGroupLayerSP child = dynamic_cast<KisGroupLayer*>(layer->firstChild().data());
115 while (child) {
116 child->accept(*this);
117 child = dynamic_cast<KisGroupLayer*>(child->nextSibling().data());
118 }
119 }
120 delete exportDocument;
121 }
122
123 return true;
124}
KisUndoStore * createUndoStore()
void setFileBatchMode(const bool batchMode)
bool exportDocumentSync(const QString &path, const QByteArray &mimeType, KisPropertiesConfigurationSP exportConfiguration=0)
void setCurrentImage(KisImageSP image, bool forceInitialUpdate=true, KisNodeSP preActivatedNode=nullptr)
KisGroupLayerSP rootLayer() const
const KoColorSpace * colorSpace() const
void initialRefreshGraph()
double xRes() const
double yRes() const
QRect bounds() const override
void setResolution(double xres, double yres)
static KisPart * instance()
Definition KisPart.cpp:131
KisDocument * createDocument() const
Definition KisPart.cpp:230
QString name() const
quint8 opacity() const
virtual bool visible(bool recursive=false) const
bool accept(KisNodeVisitor &v) override
KisPaintDeviceSP projection() const override
Definition kis_layer.cc:820
bool addNode(KisNodeSP node, KisNodeSP parent=KisNodeSP(), KisNodeAdditionFlags flags=KisNodeAdditionFlag::None)
KisNodeSP firstChild() const
Definition kis_node.cpp:361
bool accept(KisNodeVisitor &v) override
Definition kis_node.cpp:269
KisNodeSP nextSibling() const
Definition kis_node.cpp:408
KisPaintDeviceSP paintDevice

References KisGroupLayer::accept(), KisNode::accept(), KisNodeFacade::addNode(), KisPainter::bitBlt(), KisImage::bounds(), KisImage::colorSpace(), KisPart::createDocument(), KisDocument::createUndoStore(), KisSharedPtr< T >::data(), KisDocument::exportDocumentSync(), KisNode::firstChild(), KisImage::initialRefreshGraph(), KisPart::instance(), m_baseName, m_extension, m_image, m_mimeFilter, m_path, m_saveInvisible, m_saveTopLevelOnly, KisBaseNode::name(), KisNode::nextSibling(), KisBaseNode::opacity(), KisPaintLayer::paintDevice, KisLayer::projection(), KisImage::rootLayer(), KisDocument::setCurrentImage(), KisDocument::setFileBatchMode(), KisImage::setResolution(), KisBaseNode::visible(), KisImage::xRes(), and KisImage::yRes().

◆ visit() [8/12]

bool KisSaveGroupVisitor::visit ( KisNode * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 34 of file KisSaveGroupVisitor.cpp.

34 {
35 return true;
36}

◆ visit() [9/12]

bool KisSaveGroupVisitor::visit ( KisPaintLayer * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 38 of file KisSaveGroupVisitor.cpp.

38 {
39 return true;
40}

◆ visit() [10/12]

bool KisSaveGroupVisitor::visit ( KisSelectionMask * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 72 of file KisSaveGroupVisitor.cpp.

72 {
73 return true;
74}

◆ visit() [11/12]

bool KisSaveGroupVisitor::visit ( KisTransformMask * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 60 of file KisSaveGroupVisitor.cpp.

60 {
61 return true;
62}

◆ visit() [12/12]

bool KisSaveGroupVisitor::visit ( KisTransparencyMask * )
overridevirtual

Implements KisNodeVisitor.

Definition at line 64 of file KisSaveGroupVisitor.cpp.

64 {
65 return true;
66}

Member Data Documentation

◆ m_baseName

QString KisSaveGroupVisitor::m_baseName
private

Definition at line 85 of file KisSaveGroupVisitor.h.

◆ m_extension

QString KisSaveGroupVisitor::m_extension
private

Definition at line 86 of file KisSaveGroupVisitor.h.

◆ m_image

KisImageWSP KisSaveGroupVisitor::m_image
private

Definition at line 81 of file KisSaveGroupVisitor.h.

◆ m_mimeFilter

QString KisSaveGroupVisitor::m_mimeFilter
private

Definition at line 87 of file KisSaveGroupVisitor.h.

◆ m_path

QString KisSaveGroupVisitor::m_path
private

Definition at line 84 of file KisSaveGroupVisitor.h.

◆ m_saveInvisible

bool KisSaveGroupVisitor::m_saveInvisible
private

Definition at line 82 of file KisSaveGroupVisitor.h.

◆ m_saveTopLevelOnly

bool KisSaveGroupVisitor::m_saveTopLevelOnly
private

Definition at line 83 of file KisSaveGroupVisitor.h.


The documentation for this class was generated from the following files: