[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