[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [calligra/animator-plugin-somsubhra] krita: Restructure code a bit.
From: Somsubhra Bairi <somsubhra.bairi () gmail ! com>
Date: 2014-05-31 5:52:31
Message-ID: E1WqcDX-0006Zq-UP () scm ! kde ! org
[Download RAW message or body]
Git commit 74a1ce1b13d3cebb0e4345f8eee5f9347f5d7e6f by Somsubhra Bairi.
Committed on 31/05/2014 at 05:51.
Pushed by somsubhrabairi into branch 'animator-plugin-somsubhra'.
Restructure code a bit.
M +19 -17 krita/plugins/extensions/dockers/animator/kis_timeline.cpp
M +104 -99 krita/ui/kis_animation_doc.cpp
M +1 -0 krita/ui/kis_animation_doc.h
http://commits.kde.org/calligra/74a1ce1b13d3cebb0e4345f8eee5f9347f5d7e6f
diff --git a/krita/plugins/extensions/dockers/animator/kis_timeline.cpp \
b/krita/plugins/extensions/dockers/animator/kis_timeline.cpp index e41d927..687dad8 \
100644
--- a/krita/plugins/extensions/dockers/animator/kis_timeline.cpp
+++ b/krita/plugins/extensions/dockers/animator/kis_timeline.cpp
@@ -195,23 +195,6 @@ KisTimeline::KisTimeline(QWidget *parent) : QWidget(parent)
connect(this->m_cells, SIGNAL(frameSelectionChanged(QRect)), this, \
SLOT(frameSelectionChanged(QRect))); }
-void KisTimeline::breakFrame(QRect position)
-{
- if(lastBrokenFrame.x() == position.x() && lastBrokenFrame.y() == position.y()) {
- return;
- }
-
- kWarning() << "Break frame at frame" << position.x() << " layer " << \
position.y();
-
- KisAnimationFrame* oldSelection = this->m_cells->getSelectedFrame();
- QRect globalGeometry = \
this->m_cells->getSelectedFrame()->convertSelectionToFrame(KisAnimationFrame::KEYFRAME);
- KisAnimationFrame* newSelection = new \
KisAnimationFrame(oldSelection->getParent(), \
KisAnimationFrame::SELECTION, 10);
- newSelection->setGeometry(oldSelection->geometry());
- this->m_cells->setSelectedFrame(newSelection);
- newSelection->show();
- this->lastBrokenFrame = position;
-}
-
void KisTimeline::frameSelectionChanged(QRect frame)
{
dynamic_cast<KisAnimationDoc*>(this->m_canvas->view()->document())->frameSelectionChanged(frame);
@@ -291,6 +274,25 @@ void KisTimeline::addframePressed()
}
}
+
+void KisTimeline::breakFrame(QRect position)
+{
+ if(lastBrokenFrame.x() == position.x() && lastBrokenFrame.y() == position.y()) {
+ return;
+ }
+
+ kWarning() << "Break frame at frame" << position.x() << " layer " << \
position.y(); +
+ KisAnimationFrame* oldSelection = this->m_cells->getSelectedFrame();
+ QRect globalGeometry = \
this->m_cells->getSelectedFrame()->convertSelectionToFrame(KisAnimationFrame::KEYFRAME);
+ KisAnimationFrame* newSelection = new \
KisAnimationFrame(oldSelection->getParent(), KisAnimationFrame::SELECTION, 10); + \
newSelection->setGeometry(oldSelection->geometry()); + \
this->m_cells->setSelectedFrame(newSelection); + newSelection->show();
+ this->lastBrokenFrame = position;
+ dynamic_cast<KisAnimationDoc*>(this->getCanvas()->view()->document())->breakFrame(globalGeometry);
+}
+
void KisTimeline::documentModified()
{
emit canvasModified();
diff --git a/krita/ui/kis_animation_doc.cpp b/krita/ui/kis_animation_doc.cpp
index da56c82..f23d7e8 100644
--- a/krita/ui/kis_animation_doc.cpp
+++ b/krita/ui/kis_animation_doc.cpp
@@ -146,59 +146,76 @@ void KisAnimationDoc::frameSelectionChanged(QRect frame)
setCurrentImage(d->image);
}
-QRect KisAnimationDoc::getParentFramePosition(int frame, int layer)
+void KisAnimationDoc::addBlankFrame(QRect frame)
{
- QDomNodeList list = d->frameElement.childNodes();
+ KisAnimation* animation = \
dynamic_cast<KisAnimationPart*>(this->documentPart())->animation();
- QList<int> frameNumbers;
+ if(d->currentFramePosition.x() == 0 && d->currentFramePosition.y() == 0) {
+ d->kranimSaver->saveFrame(d->store, this->image()->projection(), \
d->currentFramePosition); + }
- for(int i = 0 ; i < list.length() ; i++) {
- QDomNode node = list.at(i);
+ d->kranimSaver->saveFrame(d->store, d->currentFrame, d->currentFramePosition);
- if(node.attributes().namedItem("layer").nodeValue().toInt() == layer) {
- frameNumbers.append(node.attributes().namedItem("number").nodeValue().toInt());
- }
- }
+ d->image = new KisImage(createUndoStore(), animation->width(), \
animation->height(), animation->colorSpace(), animation->name()); + \
connect(d->image.data(), SIGNAL(sigImageModified()), this, SLOT(setImageModified())); \
+ d->image->setResolution(animation->resolution(), animation->resolution());
- qSort(frameNumbers);
+ d->currentFramePosition = frame;
- if(frameNumbers.contains(frame)) {
- QRect parentFramePos(frame, layer, 10, 20);
- return parentFramePos;
- }
+ int x = frame.x();
+ int y = frame.y() / 20;
- int frameN;
- for(int i = 0 ; i < frameNumbers.length() ; i++) {
- if(frameNumbers.at(i) < frame) {
- frameN = frameNumbers.at(i);
+ kWarning() << frame.y();
+
+ QString location = "";
+ bool hasFile = false;
+
+ // Load frames from layers below
+ for(int i = 0 ; i < y ; i++) {
+ location = this->getFrameFile(x, i * 20);
+ hasFile = d->store->hasFile(location);
+
+ if(hasFile) {
+ KisLayerSP newLayer = new KisPaintLayer(d->image.data(), \
d->image->nextLayerName(), animation->bgColor().opacityU8(), \
animation->colorSpace()); + newLayer->setName("Layer " + QString::number(i \
+ 1)); + d->image->addNode(newLayer.data(), d->image->rootLayer().data());
+ d->kranimLoader->loadFrame(newLayer, d->store, location);
+ kWarning() << "Loading layer " << i+1 << " Frame" << x;
}
}
- QRect parentFramePos(frameN, layer, 10, 20);
+ // Load the new frame
+ d->currentFrame = new KisPaintLayer(d->image.data(), d->image->nextLayerName(), \
animation->bgColor().opacityU8(), animation->colorSpace()); + \
d->currentFrame->setName("Layer " + QString::number((d->currentFramePosition.y() / \
20) + 1));
- return parentFramePos;
-}
+ if(d->currentFramePosition.y() == 0) {
+ d->currentFrame->paintDevice()->setDefaultPixel(animation->bgColor().data());
+ }
-QString KisAnimationDoc::getFrameFile(int frame, int layer)
-{
- QRect parentPos = this->getParentFramePosition(frame, layer);
- QString location = "frame" + QString::number(parentPos.x()) + "layer" + \
QString::number(parentPos.y());
- return location;
-}
+ d->image->addNode(d->currentFrame.data(), d->image->rootLayer().data());
-void KisAnimationDoc::updateXML()
-{
- QDomElement frameElement = d->doc.createElement("frame");
- frameElement.setAttribute("number", d->currentFramePosition.x());
- frameElement.setAttribute("layer", d->currentFramePosition.y());
- d->frameElement.appendChild(frameElement);
+ // Load the frames from layers above
+ for(int i = y + 1; i < d->noLayers ; i++) {
+ location = this->getFrameFile(x, i * 20);
+ hasFile = d->store->hasFile(location);
- d->store->openFileWriting("maindoc.xml");
- d->store->writeDataToFile(d->doc.toByteArray());
- d->store->closeFile();
+ if(hasFile) {
+ KisLayerSP newLayer = new KisPaintLayer(d->image.data(), \
d->image->nextLayerName(), animation->bgColor().opacityU8(), \
animation->colorSpace()); + newLayer->setName("Layer " + QString::number(i \
+ 1)); + d->image->addNode(newLayer.data(), d->image->rootLayer().data());
+ d->kranimLoader->loadFrame(newLayer, d->store, location);
+ kWarning() << "Loading layer " << i+1 << " Frame " << x;
+ }
+ }
+
+ connect(d->image.data(), SIGNAL(sigImageModified()), this, \
SLOT(slotFrameModified())); + this->updateXML();
+ this->updateActiveFrame();
+
+ setCurrentImage(d->image);
}
-void KisAnimationDoc::addBlankFrame(QRect frame)
+void KisAnimationDoc::addKeyFrame(QRect frame)
{
KisAnimation* animation = \
dynamic_cast<KisAnimationPart*>(this->documentPart())->animation();
@@ -222,7 +239,7 @@ void KisAnimationDoc::addBlankFrame(QRect frame)
QString location = "";
bool hasFile = false;
- // Load frames from layers below
+ // Load the frames from layers below
for(int i = 0 ; i < y ; i++) {
location = this->getFrameFile(x, i * 20);
hasFile = d->store->hasFile(location);
@@ -236,7 +253,8 @@ void KisAnimationDoc::addBlankFrame(QRect frame)
}
}
- // Load the new frame
+ // Load the cloned frame
+ location = this->getFrameFile(frame.x(), frame.y());
d->currentFrame = new KisPaintLayer(d->image.data(), d->image->nextLayerName(), \
animation->bgColor().opacityU8(), animation->colorSpace());
d->currentFrame->setName("Layer " + QString::number((d->currentFramePosition.y() \
/ 20) + 1));
@@ -245,6 +263,7 @@ void KisAnimationDoc::addBlankFrame(QRect frame)
}
d->image->addNode(d->currentFrame.data(), d->image->rootLayer().data());
+ d->kranimLoader->loadFrame(d->currentFrame, d->store, location);
// Load the frames from layers above
for(int i = y + 1; i < d->noLayers ; i++) {
@@ -267,6 +286,11 @@ void KisAnimationDoc::addBlankFrame(QRect frame)
setCurrentImage(d->image);
}
+void KisAnimationDoc::breakFrame(QRect frame)
+{
+ // Implement breaking of frame and save both the frames.
+}
+
void KisAnimationDoc::addPaintLayer()
{
KisAnimation* animation = \
dynamic_cast<KisAnimationPart*>(this->documentPart())->animation(); @@ -316,80 \
+340,56 @@ void KisAnimationDoc::addPaintLayer() setCurrentImage(d->image);
}
-void KisAnimationDoc::slotFrameModified()
-{
- emit sigFrameModified();
-}
-
-void KisAnimationDoc::addKeyFrame(QRect frame)
+QRect KisAnimationDoc::getParentFramePosition(int frame, int layer)
{
- KisAnimation* animation = \
dynamic_cast<KisAnimationPart*>(this->documentPart())->animation();
-
- if(d->currentFramePosition.x() == 0 && d->currentFramePosition.y() == 0) {
- d->kranimSaver->saveFrame(d->store, this->image()->projection(), \
d->currentFramePosition);
- }
-
- d->kranimSaver->saveFrame(d->store, d->currentFrame, d->currentFramePosition);
-
- d->image = new KisImage(createUndoStore(), animation->width(), \
animation->height(), animation->colorSpace(), animation->name());
- connect(d->image.data(), SIGNAL(sigImageModified()), this, \
SLOT(setImageModified()));
- d->image->setResolution(animation->resolution(), animation->resolution());
-
- d->currentFramePosition = frame;
-
- int x = frame.x();
- int y = frame.y() / 20;
-
- kWarning() << frame.y();
+ QDomNodeList list = d->frameElement.childNodes();
- QString location = "";
- bool hasFile = false;
+ QList<int> frameNumbers;
- // Load the frames from layers below
- for(int i = 0 ; i < y ; i++) {
- location = this->getFrameFile(x, i * 20);
- hasFile = d->store->hasFile(location);
+ for(int i = 0 ; i < list.length() ; i++) {
+ QDomNode node = list.at(i);
- if(hasFile) {
- KisLayerSP newLayer = new KisPaintLayer(d->image.data(), \
d->image->nextLayerName(), animation->bgColor().opacityU8(), \
animation->colorSpace());
- newLayer->setName("Layer " + QString::number(i + 1));
- d->image->addNode(newLayer.data(), d->image->rootLayer().data());
- d->kranimLoader->loadFrame(newLayer, d->store, location);
- kWarning() << "Loading layer " << i+1 << " Frame" << x;
+ if(node.attributes().namedItem("layer").nodeValue().toInt() == layer) {
+ frameNumbers.append(node.attributes().namedItem("number").nodeValue().toInt());
}
}
- // Load the cloned frame
- location = this->getFrameFile(frame.x(), frame.y());
- d->currentFrame = new KisPaintLayer(d->image.data(), d->image->nextLayerName(), \
animation->bgColor().opacityU8(), animation->colorSpace());
- d->currentFrame->setName("Layer " + QString::number((d->currentFramePosition.y() \
/ 20) + 1)); + qSort(frameNumbers);
- if(d->currentFramePosition.y() == 0) {
- d->currentFrame->paintDevice()->setDefaultPixel(animation->bgColor().data());
+ if(frameNumbers.contains(frame)) {
+ QRect parentFramePos(frame, layer, 10, 20);
+ return parentFramePos;
}
- d->image->addNode(d->currentFrame.data(), d->image->rootLayer().data());
- d->kranimLoader->loadFrame(d->currentFrame, d->store, location);
-
- // Load the frames from layers above
- for(int i = y + 1; i < d->noLayers ; i++) {
- location = this->getFrameFile(x, i * 20);
- hasFile = d->store->hasFile(location);
-
- if(hasFile) {
- KisLayerSP newLayer = new KisPaintLayer(d->image.data(), \
d->image->nextLayerName(), animation->bgColor().opacityU8(), \
animation->colorSpace());
- newLayer->setName("Layer " + QString::number(i + 1));
- d->image->addNode(newLayer.data(), d->image->rootLayer().data());
- d->kranimLoader->loadFrame(newLayer, d->store, location);
- kWarning() << "Loading layer " << i+1 << " Frame " << x;
+ int frameN;
+ for(int i = 0 ; i < frameNumbers.length() ; i++) {
+ if(frameNumbers.at(i) < frame) {
+ frameN = frameNumbers.at(i);
}
}
- connect(d->image.data(), SIGNAL(sigImageModified()), this, \
SLOT(slotFrameModified()));
- this->updateXML();
- this->updateActiveFrame();
+ QRect parentFramePos(frameN, layer, 10, 20);
- setCurrentImage(d->image);
+ return parentFramePos;
+}
+
+QString KisAnimationDoc::getFrameFile(int frame, int layer)
+{
+ QRect parentPos = this->getParentFramePosition(frame, layer);
+ QString location = "frame" + QString::number(parentPos.x()) + "layer" + \
QString::number(parentPos.y()); + return location;
+}
+
+void KisAnimationDoc::updateXML()
+{
+ QDomElement frameElement = d->doc.createElement("frame");
+ frameElement.setAttribute("number", d->currentFramePosition.x());
+ frameElement.setAttribute("layer", d->currentFramePosition.y());
+ d->frameElement.appendChild(frameElement);
+
+ d->store->openFileWriting("maindoc.xml");
+ d->store->writeDataToFile(d->doc.toByteArray());
+ d->store->closeFile();
}
void KisAnimationDoc::preSaveAnimation()
@@ -438,6 +438,11 @@ void KisAnimationDoc::preSaveAnimation()
d->saved = true;
}
+void KisAnimationDoc::slotFrameModified()
+{
+ emit sigFrameModified();
+}
+
void KisAnimationDoc::updateActiveFrame()
{
this->setPreActivatedNode(d->currentFrame);
diff --git a/krita/ui/kis_animation_doc.h b/krita/ui/kis_animation_doc.h
index d947782..41e9329 100644
--- a/krita/ui/kis_animation_doc.h
+++ b/krita/ui/kis_animation_doc.h
@@ -37,6 +37,7 @@ public:
void addKeyFrame(QRect frame);
void addBlankFrame(QRect frame);
+ void breakFrame(QRect frame);
void addPaintLayer();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic