diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kword/KWViewMode.cpp | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kword/KWViewMode.cpp')
-rw-r--r-- | kword/KWViewMode.cpp | 603 |
1 files changed, 603 insertions, 0 deletions
diff --git a/kword/KWViewMode.cpp b/kword/KWViewMode.cpp new file mode 100644 index 00000000..df6c8ed1 --- /dev/null +++ b/kword/KWViewMode.cpp @@ -0,0 +1,603 @@ +/* This file is part of the KDE project + Copyright (C) 2001-2005 David Faure <faure@kde.org> + Copyright (C) 2005 Thomas Zander <zander@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. +*/ + +#include "KWViewMode.h" +#include "KWCanvas.h" +#include "KWView.h" +#include "KWDocument.h" +#include "KWTextFrameSet.h" +#include "KWFrameSet.h" +#include "KWTableFrameSet.h" +#include "KWPageManager.h" +#include "KWPage.h" +#include "KWFrameViewManager.h" +#include "KWFrameView.h" +#include <qapplication.h> +#include <kdebug.h> + +const unsigned short KWViewMode::s_shadowOffset = 3; + +QSize KWViewMode::availableSizeForText( KWTextFrameSet* textfs ) +{ + KWFrame* frame = textfs->frameIterator().getLast(); + return m_doc->zoomSize( KoSize( frame->innerWidth(), frame->internalY() + frame->innerHeight() ) ); + +} + +void KWViewMode::drawOnePageBorder( QPainter * painter, const QRect & crect, const QRect & _pageRect, + const QRegion & emptySpaceRegion ) +{ + if ( !crect.intersects( _pageRect ) ) + return; + + QRect pageRect( _pageRect ); + //kdDebug() << "KWViewMode::drawOnePageBorder drawing page rect " << pageRect << endl; + painter->drawRect( pageRect ); + // Exclude page border line, to get the page contents rect (avoids flicker) + pageRect.rLeft() += 1; + pageRect.rTop() += 1; + pageRect.rRight() -= 1; + pageRect.rBottom() -= 1; + // The empty space to clear up inside this page + QRect pagecrect = pageRect.intersect( crect ); + if ( !pagecrect.isEmpty() ) + { + //kdDebug() << "KWViewMode::drawOnePageBorder : pagecrect=" << pagecrect << " emptySpaceRegion: " << emptySpaceRegion << endl; + QRegion pageEmptyRegion = emptySpaceRegion.intersect( pagecrect ); + //kdDebug() << "RESULT: pageEmptyRegion: " << pageEmptyRegion << endl; + if ( !pageEmptyRegion.isEmpty() ) + m_doc->eraseEmptySpace( painter, pageEmptyRegion, QApplication::palette().active().brush( QColorGroup::Base ) ); + } +} + +QRect KWViewMode::drawRightShadow( QPainter * painter, const QRect & crect, const QRect & pageRect, int topOffset ) +{ + QRect shadowRect( pageRect.right() + 1, pageRect.top() + topOffset, s_shadowOffset, pageRect.height() - topOffset ); + shadowRect &= crect; // intersect + if ( !shadowRect.isEmpty() ) + { + painter->fillRect( shadowRect, + QApplication::palette().active().brush( QColorGroup::Shadow ) ); + } + return shadowRect; +} + +QRect KWViewMode::drawBottomShadow( QPainter * painter, const QRect & crect, const QRect & pageRect, int leftOffset ) +{ + QRect shadowRect( pageRect.left() + leftOffset, pageRect.bottom() + 1, pageRect.width(), s_shadowOffset ); + shadowRect &= crect; // intersect + if ( !shadowRect.isEmpty() ) + painter->fillRect( shadowRect, + QApplication::palette().active().brush( QColorGroup::Shadow ) ); + return shadowRect; +} + +QPoint KWViewMode::pageCorner() +{ + // Same code as KWView::slotUpdateRuler + KWFrame * frame = 0L; + // Use the currently edited (fallback: the first selected) frame + if( m_canvas->currentFrameSetEdit() && m_canvas->currentFrameSetEdit()->currentFrame() ) + frame = m_canvas->currentFrameSetEdit()->currentFrame(); + else { + KWFrameView *view = m_canvas->frameViewManager()->selectedFrame(); + frame = view == 0 ? 0 : view->frame(); + } + + int pageNum = 0; + if ( frame ) + pageNum = frame->pageNumber(); + QPoint nPoint( 0, m_doc->pageTop(pageNum) + 1 ); + QPoint cPoint( normalToView( nPoint ) ); + /*kdDebug() << "KWViewMode::pageCorner frame=" << frame << " pagenum=" << pageNum + << " nPoint=" << nPoint.x() << "," << nPoint.y() + << " cPoint=" << cPoint.x() << "," << cPoint.y() << endl;*/ + return cPoint; +} + +QRect KWViewMode::rulerFrameRect() +{ + // Set the "frame start" in the ruler (tabs are relative to that position) + KWFrameSetEdit * edit = m_canvas->currentFrameSetEdit(); + KWFrame * frame = 0L; + // Use the currently edited (fallback: the first selected) frame + if ( edit && edit->currentFrame() ) + frame = edit->currentFrame(); + else { + KWFrameView *view = m_canvas->frameViewManager()->selectedFrame(); + frame = view == 0 ? 0 : view->frame(); + } + if( !frame) { + KWFrameSet *fs= m_doc->frameSet(0); + if(fs) frame=fs->frame(0); + } + if ( frame ) + { + QRect r = normalToView( m_doc->zoomRect( frame->innerRect() ) ); + + // Calculate page corner (see pageCorner above) + int pageNum = frame->pageNumber(); + QPoint nPoint( 0, m_doc->pageTop(pageNum) + 1 ); + QPoint cPoint( normalToView( nPoint ) ); + + // Frame start/end is relative to page corner. + r.moveBy( -cPoint.x(), -cPoint.y() ); + return r; + } + return QRect(); +} + +void KWViewMode::setPageLayout( KoRuler* hRuler, KoRuler* vRuler, const KoPageLayout& layout ) +{ + hRuler->setPageLayout( layout ); + vRuler->setPageLayout( layout ); +} + +// static +KWViewMode * KWViewMode::create( const QString & viewModeType, KWDocument *doc, KWCanvas* canvas ) +{ + Q_ASSERT(doc); + if(viewModeType=="ModeNormal") + { + return new KWViewModeNormal( doc, canvas, doc->viewFrameBorders() ); + } + else if(viewModeType=="ModeEmbedded") + { + return new KWViewModeEmbedded( doc, canvas ); + } + else if(viewModeType=="ModePreview") + { + return new KWViewModePreview( doc, canvas, doc->viewFrameBorders(), doc->nbPagePerRow() ); + } + else if(viewModeType=="ModeText") + { + KWTextFrameSet* fs = KWViewModeText::determineTextFrameSet( doc ); // could be 0 + return new KWViewModeText( doc, canvas, fs ); + } + else + { + kdDebug() << viewModeType << " mode type is unknown\n"; + return 0; + } +} + +//// + +QSize KWViewModeNormal::contentsSize() +{ + return QSize( m_doc->paperWidth(m_doc->startPage()), + m_doc->zoomItY( m_doc->pageManager()->bottomOfPage(m_doc->lastPage()) ) ); +} + +QRect KWViewModeNormal::viewPageRect( int pgNum ) +{ + KWPage* page = m_doc->pageManager()->page( pgNum ); + QRect r = page->zoomedRect( m_doc ); + r.moveBy( xOffset( page ), 0 ); + return r; +} + +QPoint KWViewModeNormal::normalToView( const QPoint & nPoint ) +{ + double unzoomedY = m_doc->unzoomItY( nPoint.y() ); + KWPage *page = m_doc->pageManager()->page(unzoomedY); // quotient + if( !page) { + kdWarning(31001) << "KWViewModeNormal::normalToView request for conversion out of the document! Check your input data.. ("<< nPoint << ")" << endl; + return QPoint(0,0); + } + Q_ASSERT(canvas()); + return QPoint( xOffset(page) + nPoint.x(), nPoint.y() ); +} + +QPoint KWViewModeNormal::viewToNormal( const QPoint & vPoint ) +{ + // Opposite of the above + // The Y is unchanged by the centering so we can use it to get the page. + double unzoomedY = m_doc->unzoomItY( vPoint.y() ); + KWPage *page = m_doc->pageManager()->page(unzoomedY); // quotient + if( !page) { + kdWarning(31001) << "KWViewModeNormal::normalToView request for conversion out of the document! Check your input data.. ("<< vPoint << ")" << endl; + return QPoint(-1,-1); // yes this is an ugly way to mark this as an excetional state... + } + Q_ASSERT(canvas()); + return QPoint( vPoint.x() - xOffset(page), vPoint.y() ); +} + +int KWViewModeNormal::xOffset(KWPage *page, int canvasWidth /* = -1 */) { + // Center horizontally + if(canvasWidth < 0) + canvasWidth = canvas()->visibleWidth(); + return kMax( 0, ( canvasWidth - m_doc->zoomItX( page->width() ) ) / 2 ); +} + +void KWViewModeNormal::drawPageBorders( QPainter * painter, const QRect & crect, const QRegion & emptySpaceRegion ) +{ + painter->save(); + painter->setPen( QApplication::palette().active().color( QColorGroup::Dark ) ); + painter->setBrush( Qt::NoBrush ); + QRect pageRect; + + int lastPage = m_doc->lastPage(); + Q_ASSERT(canvas()); + const int canvasWidth = canvas()->visibleWidth(); + double pagePosPt = 0; + int topOfPage = 0; // in pixels + for ( int pageNr = m_doc->startPage(); pageNr <= lastPage; pageNr++ ) + { + KWPage *page = m_doc->pageManager()->page(pageNr); + + int pageWidth = m_doc->zoomItX( page->width() ); + int pageHeight = m_doc->zoomItY( pagePosPt + page->height() ) - topOfPage; + if ( crect.bottom() < topOfPage ) + break; + // Center horizontally + int x = xOffset(page, canvasWidth); + // Draw page border (and erase empty area inside page) + pageRect = QRect( x, topOfPage, pageWidth, pageHeight ); + drawOnePageBorder( painter, crect, pageRect, emptySpaceRegion ); + + // The area on the left of the page + QRect leftArea( 0, topOfPage, x, pageHeight ); + leftArea &= crect; + if ( !leftArea.isEmpty() ) { + painter->fillRect( leftArea, + QApplication::palette().active().brush( QColorGroup::Mid ) ); + } + + // The area on the right of the page + QRect rightArea( x + pageWidth, topOfPage, crect.right() - pageWidth + 1, pageHeight ); + rightArea &= crect; + if ( !rightArea.isEmpty() ) + { + painter->fillRect( rightArea, + QApplication::palette().active().brush( QColorGroup::Mid ) ); + + // Draw a shadow + int topOffset = ( page==0 ) ? s_shadowOffset : 0; // leave a few pixels on top, only for first page + drawRightShadow( painter, crect, pageRect, topOffset ); + } + pagePosPt += page->height(); // for next page already.. + topOfPage += pageHeight; + } + // Take care of the area at the bottom of the last page + if ( crect.bottom() > topOfPage ) + { + QRect bottomArea( 0, topOfPage, crect.right() + 1, crect.bottom() - topOfPage + 1 ); + QRect repaintRect = bottomArea.intersect( crect ); + if ( !repaintRect.isEmpty() ) + { + painter->fillRect( repaintRect, + QApplication::palette().active().brush( QColorGroup::Mid ) ); + // Draw a shadow + drawBottomShadow( painter, crect, pageRect, s_shadowOffset ); + } + } + painter->restore(); +} + +//// + +QRect KWViewModeEmbedded::viewPageRect( int pgNum ) +{ + // Only one page makes sense in embedded mode though + return m_doc->pageManager()->page( pgNum )->zoomedRect( m_doc ); +} + +//////////////////////// Preview mode //////////////////////////////// + +KWViewModePreview::KWViewModePreview( KWDocument * doc, KWCanvas* canvas, + bool drawFrameBorders, int _nbPagePerRow ) + : KWViewMode( doc, canvas, drawFrameBorders ), + m_pagesPerRow(_nbPagePerRow), + m_spacing(10) +{} + +int KWViewModePreview::leftSpacing() +{ + if ( canvas() ) + { + int pagesPerRow; + if ( m_doc->pageCount() < m_pagesPerRow ) + pagesPerRow = m_doc->pageCount(); + else + pagesPerRow = m_pagesPerRow; + + int pagesWidth = ( m_spacing + ( m_doc->paperWidth(m_doc->startPage()) + m_spacing ) * pagesPerRow ); + if ( pagesWidth < canvas()->visibleWidth() ) + return ( m_spacing + ( canvas()->visibleWidth() / 2 ) - ( pagesWidth / 2 ) ); + } + return m_spacing; +} + +int KWViewModePreview::topSpacing() +{ + if ( canvas() ) + { + int pagesHeight = ( m_spacing + ( m_doc->paperHeight(m_doc->startPage()) + m_spacing ) * numRows() ); + if ( pagesHeight < canvas()->visibleHeight() ) + return ( m_spacing + ( canvas()->visibleHeight() / 2 ) - ( pagesHeight / 2 ) ); + } + return m_spacing; +} + +int KWViewModePreview::numRows() const +{ + return ( m_doc->pageCount() ) / m_pagesPerRow + 1; +} + +QSize KWViewModePreview::contentsSize() +{ + int pages = m_doc->pageCount(); + int rows = (pages-1) / m_pagesPerRow + 1; + int hPages = rows > 1 ? m_pagesPerRow : pages; + return QSize( m_spacing + hPages * ( m_doc->paperWidth(m_doc->startPage()) + m_spacing ), + m_spacing + rows * ( m_doc->paperHeight(m_doc->startPage()) + m_spacing ) /* bottom of last row */ ); +} + +QPoint KWViewModePreview::normalToView( const QPoint & nPoint ) +{ + // Can't use nPoint.y() / m_doc->paperHeight() since this would be a rounding problem + double unzoomedY = m_doc->unzoomItY( nPoint.y() ); + KWPage *page = m_doc->pageManager()->page(unzoomedY); // quotient + if( !page) { + kdWarning(31001) << "KWViewModePreview::normalToView request for conversion out of the document! Check your input data.. ("<< nPoint << ")" << endl; + return QPoint(0,0); + } + + double yInPagePt = unzoomedY - page->offsetInDocument();// and rest + int row = (page->pageNumber() - m_doc->startPage()) / m_pagesPerRow; + int col = (page->pageNumber() - m_doc->startPage()) % m_pagesPerRow; + /*kdDebug() << "KWViewModePreview::normalToView nPoint=" << nPoint + << " unzoomedY=" << unzoomedY + << " page=" << page->pageNumber() << " row=" << row << " col=" << col + << " yInPagePt=" << yInPagePt << endl;*/ + return QPoint( leftSpacing() + col * ( m_doc->paperWidth(page->pageNumber()) + + m_spacing ) + nPoint.x(), + topSpacing() + row * ( m_doc->paperHeight(page->pageNumber()) + + m_spacing ) + m_doc->zoomItY( yInPagePt ) ); +} + +QRect KWViewModePreview::viewPageRect( int pgNum ) +{ + int row = (pgNum - m_doc->startPage()) / m_pagesPerRow; + int col = (pgNum - m_doc->startPage()) % m_pagesPerRow; + const int paperWidth = m_doc->paperWidth( pgNum ); + const int paperHeight = m_doc->paperHeight( pgNum ); + return QRect( leftSpacing() + col * ( paperWidth + m_spacing ), + topSpacing() + row * ( paperHeight + m_spacing ), + paperWidth, + paperHeight ); +} + +QPoint KWViewModePreview::viewToNormal( const QPoint & vPoint ) +{ + // Well, just the opposite of the above.... hmm.... headache.... + int paperWidth = m_doc->paperWidth(m_doc->startPage()); + int paperHeight = m_doc->paperHeight(m_doc->startPage()); + QPoint p( vPoint.x() - leftSpacing(), vPoint.y() - topSpacing() ); + int col = static_cast<int>( p.x() / ( paperWidth + m_spacing ) ); + int xInPage = p.x() - col * ( paperWidth + m_spacing ); + int row = static_cast<int>( p.y() / ( paperHeight + m_spacing ) ); + int yInPage = p.y() - row * ( paperHeight + m_spacing ); + int page = row * m_pagesPerRow + col + m_doc->startPage(); + if ( page > m_doc->lastPage() ) // [this happens when moving frames around and going out of the pages] + return QPoint( paperWidth, m_doc->pageTop( m_doc->lastPage() ) ); + else // normal case + return QPoint( xInPage, yInPage + m_doc->pageTop( page ) ); +} + +void KWViewModePreview::drawPageBorders( QPainter * painter, const QRect & crect, const QRegion & emptySpaceRegion ) +{ + painter->save(); + painter->setPen( QApplication::palette().active().color( QColorGroup::Dark ) ); + painter->setBrush( Qt::NoBrush ); + //kdDebug() << "KWViewModePreview::drawPageBorders crect=" << DEBUGRECT( crect ) << endl; + QRegion grayRegion( crect ); + int pageCount = m_doc->pageCount(); + for ( int counter = 0; counter < pageCount; counter++ ) + { + int row = counter / m_pagesPerRow; + int col = counter % m_pagesPerRow; + int page = m_doc->startPage() + counter; + int paperWidth = m_doc->paperWidth(page); + int paperHeight = m_doc->paperHeight(page); + QRect pageRect( leftSpacing() + col * ( paperWidth + m_spacing ), + topSpacing() + row * ( paperHeight + m_spacing ), + paperWidth, paperHeight ); + drawOnePageBorder( painter, crect, pageRect, emptySpaceRegion ); + if( pageRect.top() > crect.bottom()) + break; + if ( pageRect.intersects( crect ) ) + grayRegion -= pageRect; + QRect rightShadow = drawRightShadow( painter, crect, pageRect, s_shadowOffset ); + if ( !rightShadow.isEmpty() ) + grayRegion -= rightShadow; + QRect bottomShadow = drawBottomShadow( painter, crect, pageRect, s_shadowOffset ); + if ( !bottomShadow.isEmpty() ) + grayRegion -= bottomShadow; + + //kdDebug() << "KWViewModePreview::drawPageBorders grayRegion is now : " << endl; + //DEBUGREGION( grayRegion ); + } + if ( !grayRegion.isEmpty() ) + { + //kdDebug() << "KWViewModePreview::drawPageBorders grayRegion's bounding Rect = " << DEBUGRECT( grayRegion.boundingRect() ) << endl; + m_doc->eraseEmptySpace( painter, grayRegion, QApplication::palette().active().brush( QColorGroup::Mid ) ); + } + painter->restore(); +} + +////////////////// + +KWViewModeText::KWViewModeText( KWDocument * doc, KWCanvas* canvas, KWTextFrameSet* fs ) + : KWViewMode( doc, canvas, false ) +{ + m_textFrameSet = fs; +} + +KWTextFrameSet * KWViewModeText::textFrameSet() const +{ + if ( !m_textFrameSet ) // e.g. when we set this mode before we had any frames (doc not loaded yet) + m_textFrameSet = determineTextFrameSet( m_doc ); + return m_textFrameSet; +} + +KWTextFrameSet * KWViewModeText::determineTextFrameSet( KWDocument* doc ) // static +{ + KWTextFrameSet* fs = 0L; + + if(!doc->getAllViews().empty()) { // try the one that is selected + KWView *view = doc->getAllViews()[0]; + KWFrameView *fv = view->getGUI()->canvasWidget()->frameViewManager()->selectedFrame(); + KWFrame *f = fv == 0 ? 0 : fv->frame(); + if(f) + fs = dynamic_cast<KWTextFrameSet *>( f->frameSet() ); + + if (!fs) { // try the one I am editing + KWFrameSetEdit *fse = view->getGUI()->canvasWidget()->currentFrameSetEdit(); + if(fse) + fs = dynamic_cast<KWTextFrameSet *>( fse->frameSet() ); + } + } + + if (!fs || fs->isHeaderOrFooter() || fs->isFootEndNote()) + // if not a textFS, or header/footer/footnote: fallback to fs 0 + if ( doc->frameSetCount() > 0 && doc->frameSet( 0 )->isVisible() ) + fs = dynamic_cast<KWTextFrameSet *>( doc->frameSet( 0 ) ); + + return fs; +} + +QPoint KWViewModeText::normalToView( const QPoint & nPoint ) +{ + QPoint r (nPoint); + r.setX(r.x() + OFFSET); + return r; +} + +QPoint KWViewModeText::viewToNormal( const QPoint & vPoint ) +{ + QPoint r (vPoint); + r.setX(r.x() - OFFSET); + return r; +} + +QSize KWViewModeText::contentsSize() +{ + if (!textFrameSet()) + return QSize(); + + // The actual contents only depend on the amount of text. + // The width is the one from the text, so that the placement of tabs makes a bit of sense, etc. + // The minimum height is the one of a normal page though. + + int width = m_doc->layoutUnitToPixelX( m_textFrameSet->textDocument()->width() ); + + int height = QMAX((int)m_doc->paperHeight(m_doc->startPage()), + m_doc->layoutUnitToPixelY( m_textFrameSet->textDocument()->height() ) ); + //kdDebug() << "KWViewModeText::contentsSize " << width << "x" << height << endl; + return QSize( width, height ); +} + +QSize KWViewModeText::availableSizeForText( KWTextFrameSet* /*textfs*/ ) +{ + return contentsSize(); +} + +bool KWViewModeText::isFrameSetVisible( const KWFrameSet *fs ) +{ + if(fs==NULL) return false; // assertion + if(fs==textFrameSet()) return true; + + const KWFrameSet* parentFrameset = fs->groupmanager() ? fs->groupmanager() : fs; + while ( parentFrameset->isFloating() ) { + parentFrameset = parentFrameset->anchorFrameset(); + if ( parentFrameset == m_textFrameSet ) + return true; + } + return false; +} + +void KWViewModeText::drawPageBorders( QPainter * painter, const QRect & crect, + const QRegion & /*emptySpaceRegion*/ ) +{ + painter->save(); + QRegion grayRegion( crect ); + //kdDebug() << "KWViewModeText::drawPageBorders crect=" << grayRegion << endl; + painter->setPen( QApplication::palette().active().color( QColorGroup::Dark ) ); + QSize cSize = contentsSize(); + // Draw a line on the right -- ## or a shadow? + // +1 to be out of the contents, and +1 for QRect + QRect frameRect( OFFSET, 0, cSize.width() + 2, cSize.height() ); + //kdDebug() << "KWViewModeText::drawPageBorders right line: " << frameRect.topRight() << " " << frameRect.bottomRight()<< endl; + painter->drawLine( frameRect.topRight(), frameRect.bottomRight() ); + if ( frameRect.intersects( crect ) ) + grayRegion -= frameRect; + + //kdDebug() << "KWViewModeText::drawPageBorders grayRegion is now " << grayRegion << endl; + if ( crect.bottom() >= cSize.height() ) + { + // And draw a line at the bottom -- ## or a shadow? + painter->drawLine( 0, cSize.height(), + cSize.width(), cSize.height() ); + grayRegion -= QRect( 0, cSize.height(), + cSize.width(), cSize.height() ); + } + //kdDebug() << "KWViewModeText::drawPageBorders erasing grayRegion " << grayRegion << endl; + if ( !grayRegion.isEmpty() ) + m_doc->eraseEmptySpace( painter, grayRegion, QApplication::palette().active().brush( QColorGroup::Mid ) ); + painter->restore(); +} + +QRect KWViewModeText::rulerFrameRect() +{ + return QRect( QPoint(OFFSET, 0), contentsSize() ); +} + +void KWViewModeText::setPageLayout( KoRuler* hRuler, KoRuler* vRuler, const KoPageLayout& /*layout*/ ) +{ + // Create a dummy page-layout, as if we had a single page englobing the whole text. + KoPageLayout layout; + layout.format = PG_CUSTOM; + layout.orientation = PG_PORTRAIT; + QSize cSize = contentsSize(); + layout.ptWidth = m_doc->unzoomItX( cSize.width() ); + layout.ptHeight = m_doc->unzoomItY( cSize.height() ); + //kdDebug() << "KWViewModeText::setPageLayout layout size " << layout.ptWidth << "x" << layout.ptHeight << endl; + layout.ptLeft = OFFSET; + layout.ptRight = 0; + layout.ptTop = 0; + layout.ptBottom = 0; + layout.ptBindingSide = 0; + layout.ptPageEdge = 0; + hRuler->setPageLayout( layout ); + vRuler->setPageLayout( layout ); +} + +bool KWViewModeText::isTextModeFrameset(KWFrameSet *fs) const { + return fs == textFrameSet(); +} + + +int KWViewModePrint::xOffset(KWPage *page, int canvasWidth) { + Q_UNUSED(page); + Q_UNUSED(canvasWidth); + return 0; +} |