[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/krita
From: Dmitry Kazakov <dimula73 () gmail ! com>
Date: 2010-11-21 8:46:34
Message-ID: 20101121084634.A9C14AC8A0 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1199240 by dkazakov:
Fix Clone Layer loading
The link to the source layer should be initialized.
M +1 -2 image/kis_clone_layer.cpp
M +1 -1 image/kis_clone_layer.h
M +26 -0 ui/kra/kis_kra_load_visitor.cpp
M +3 -1 ui/kra/kis_kra_load_visitor.h
--- trunk/koffice/krita/image/kis_clone_layer.cpp #1199239:1199240
@@ -163,9 +163,8 @@
return v.visit(this);
}
-void KisCloneLayer::setCopyFrom(KisLayerSP fromLayer, CopyLayerType type)
+void KisCloneLayer::setCopyFrom(KisLayerSP fromLayer)
{
- m_d->type = type;
m_d->copyFrom = fromLayer;
}
--- trunk/koffice/krita/image/kis_clone_layer.h #1199239:1199240
@@ -93,7 +93,7 @@
void setCopyFromName(const QString& layerName);
QString copyFromName() const;
- void setCopyFrom(KisLayerSP layer, CopyLayerType type);
+ void setCopyFrom(KisLayerSP layer);
KisLayerSP copyFrom() const;
void setCopyType(CopyLayerType type);
--- trunk/koffice/krita/ui/kra/kis_kra_load_visitor.cpp #1199239:1199240
@@ -208,11 +208,37 @@
}
+KisNodeSP KisKraLoadVisitor::findNodeByName(const QString &name,
+ KisNodeSP rootNode)
+{
+ if(rootNode->name() == name)
+ return rootNode;
+
+ KisNodeSP result;
+ KisNodeSP child = rootNode->firstChild();
+ while(child) {
+ result = findNodeByName(name, child);
+ if(result) break;
+
+ child = child->nextSibling();
+ }
+
+ return result;
+}
+
bool KisKraLoadVisitor::visit(KisCloneLayer *layer)
{
if (!loadMetaData(layer)) {
return false;
}
+
+ KisNodeSP srcNode = findNodeByName(layer->copyFromName(),
+ m_image->rootLayer());
+ KisLayerSP srcLayer = dynamic_cast<KisLayer*>(srcNode.data());
+ Q_ASSERT(srcLayer);
+
+ layer->setCopyFrom(srcLayer);
+
// Clone layers have no data except for their masks
bool result = visitAll(layer);
--- trunk/koffice/krita/ui/kra/kis_kra_load_visitor.h #1199239:1199240
@@ -57,7 +57,6 @@
bool visit(KisTransformationMask *mask);
bool visit(KisSelectionMask *mask);
-
private:
bool loadPaintDevice(KisPaintDeviceSP device, const QString& location);
@@ -67,6 +66,9 @@
KisSelectionSP loadSelection(const QString& location);
QString getLocation(KisNode* node, const QString& suffix = "");
+ static KisNodeSP findNodeByName(const QString &name,
+ KisNodeSP rootNode);
+
private:
KisImageWSP m_image;
KoStore *m_store;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic