[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdegraphics/kviewshell/shell
From:       Wilfried Huss <Wilfried.Huss () gmx ! at>
Date:       2005-11-24 18:30:53
Message-ID: 1132857053.687095.15125.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 483004 by whuss:

Port of commit 482999

Allow the plugins to set the transition effect for each page.

 M  +26 -26    presentationwidget.cpp  
 M  +2 -1      presentationwidget.h  
 M  +17 -1     renderedDocumentPage.cpp  
 M  +13 -0     renderedDocumentPage.h  


--- trunk/KDE/kdegraphics/kviewshell/shell/presentationwidget.cpp #483003:483004
@@ -433,13 +433,35 @@
     // opens the painter over the pixmap
     QPainter pixmapPainter;
     pixmapPainter.begin( &m_lastRenderedPixmap );
+
+    const KPDFPageTransition* transition = 0;
+
     // generate welcome page
     if ( m_frameIndex == -1 )
         generateIntroPage( pixmapPainter );
     // generate a normal pixmap with extended margin filling
     if ( m_frameIndex >= 0 && m_frameIndex < m_cache->totalPages() )
     {
-        generateContentsPage( m_frameIndex, pixmapPainter );
+        PresentationFrame * frame = m_frames[m_frameIndex];
+
+        // translate painter and contents rect
+        QRect geom( frame->geometry );
+
+        SimplePageSize pageSize = m_cache->sizeOfPage(frame->page);
+        if (KVSPrefs::rotation() == KVSPrefs::EnumRotation::Landscape ||
+          KVSPrefs::rotation() == KVSPrefs::EnumRotation::Seascape)
+        {
+          pageSize = pageSize.rotate90();
+        }
+        double zoomWidth = pageSize.zoomForWidth(m_width, *this);
+        double zoomHeight = pageSize.zoomForHeight(m_height, *this);
+        double zoom = qMin(zoomWidth, zoomHeight);
+
+        m_cache->setResolution(QPaintDevice::x11AppDpiX()*zoom);
+        RenderedDocumentPagePixmap* pageData = m_cache->getPage(frame->page);
+
+        generateContentsPage(pageData, pixmapPainter);
+        transition = pageData->transition();
     }
     pixmapPainter.end();
 
@@ -450,10 +472,6 @@
 #endif
 
     // start transition on pages that have one
-    //FIXME
-    //const KPDFPageTransition * transition = m_frameIndex != -1 ?
-    //    m_frames[ m_frameIndex ]->page->getTransition() : 0;
-    const KPDFPageTransition* transition = 0;
     if ( transition )
         initTransition( transition );
     else {
@@ -523,26 +541,8 @@
     }
 }
 
-void PresentationWidget::generateContentsPage( int pageNum, QPainter & p )
+void PresentationWidget::generateContentsPage(RenderedDocumentPagePixmap* pageData, QPainter & p)
 {
-    PresentationFrame * frame = m_frames[ pageNum ];
-
-    // translate painter and contents rect
-    QRect geom( frame->geometry );
-
-    SimplePageSize pageSize = m_cache->sizeOfPage(frame->page);
-    if (KVSPrefs::rotation() == KVSPrefs::EnumRotation::Landscape ||
-      KVSPrefs::rotation() == KVSPrefs::EnumRotation::Seascape)
-    {
-      pageSize = pageSize.rotate90();
-    }
-    double zoomWidth = pageSize.zoomForWidth(m_width, *this);
-    double zoomHeight = pageSize.zoomForHeight(m_height, *this);
-    double zoom = qMin(zoomWidth, zoomHeight);
-
-    m_cache->setResolution(QPaintDevice::x11AppDpiX()*zoom);
-    RenderedDocumentPagePixmap* pageData = m_cache->getPage(frame->page);
-
     int pageWidth = pageData->width();
     int pageHeight = pageData->height();
     if (KVSPrefs::rotation() == KVSPrefs::EnumRotation::Landscape ||
@@ -558,13 +558,13 @@
 
     if (!pageData)
     {
-      kdError(kvs::shell) << "Could not render page = " << frame->page << endl;
+      //kdError(kvs::shell) << "Could not render page = " << frame->page << endl;
       p.fillRect(pageRect, Qt::red);
     }
     else
     {
       // Paint widget contents
-      kdDebug(kvs::shell) << "draw page " << frame->page << " as presentation" << endl;
+      //kdDebug(kvs::shell) << "draw page " << frame->page << " as presentation" << endl;
       p.drawPixmap(translate, pageData->pixmap(), pageRect);
     }
 
--- trunk/KDE/kdegraphics/kviewshell/shell/presentationwidget.h #483003:483004
@@ -17,6 +17,7 @@
 #include <QStringList>
 #include <QVector>
 
+class RenderedDocumentPagePixmap;
 class DocumentPageCache;
 class PresentationFrame;
 class QTimer;
@@ -62,7 +63,7 @@
         void changePage( int newPage );
         void generatePage();
         void generateIntroPage( QPainter & p );
-        void generateContentsPage( int page, QPainter & p );
+        void generateContentsPage(RenderedDocumentPagePixmap* pageData, QPainter & p);
         void generateOverlay();
         void initTransition( const KPDFPageTransition *transition );
         const KPDFPageTransition defaultTransition() const;
--- trunk/KDE/kdegraphics/kviewshell/shell/renderedDocumentPage.cpp #483003:483004
@@ -8,6 +8,7 @@
 
 #include <config.h>
 
+#include "pagetransition.h"
 #include "renderedDocumentPage.h"
 #include "hyperlink.h"
 #include "kvs_debug.h"
@@ -18,6 +19,7 @@
 
 
 RenderedDocumentPage::RenderedDocumentPage()
+  : _transition(0)
 {
   textBoxList.reserve(250);
   pageNr = 0;
@@ -27,7 +29,9 @@
 
 
 RenderedDocumentPage::~RenderedDocumentPage()
-{}
+{
+  delete _transition;
+}
 
 
 void RenderedDocumentPage::setPageNumber(const PageNumber& pnr)
@@ -426,5 +430,17 @@
   return selection;
 }
 
+
+KPDFPageTransition* RenderedDocumentPage::transition()
+{
+  return _transition;
+}
+
+
+void RenderedDocumentPage::setTransition(KPDFPageTransition* pageTransition)
+{
+  _transition = pageTransition;
+}
+
 #include "renderedDocumentPage.moc"
 
--- trunk/KDE/kdegraphics/kviewshell/shell/renderedDocumentPage.h #483003:483004
@@ -25,7 +25,9 @@
 class TextBox;
 class TextSelection;
 
+class KPDFPageTransition;
 
+
 /** @short Represents a page in a document, contains the page's graphical
     representation and resolution-dependent information.
 
@@ -238,6 +240,15 @@
   */
   virtual void clear();
 
+  /** \brief Transition effect of the page
+
+  Returns the transition effect of the page. 0 if no transition is
+  specified for this page.
+  */
+  KPDFPageTransition* transition();
+
+  void setTransition(KPDFPageTransition* pageTransition);
+
  private:
   /** \brief Page number
 
@@ -246,6 +257,8 @@
   */
   PageNumber  pageNr;
 
+  KPDFPageTransition* _transition;
+
   QString pageText;
 };
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic