• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • kdeutils
  • Sitemap
  • Contact Us
 

okteta

abstractcolumnrenderer.cpp

Go to the documentation of this file.
00001 /*
00002     This file is part of the Okteta Kakao module, part of the KDE project.
00003 
00004     Copyright 2003,2007-2008 Friedrich W. H. Kossebau <kossebau@kde.org>
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Lesser General Public
00008     License as published by the Free Software Foundation; either
00009     version 2.1 of the License, or (at your option) version 3, or any
00010     later version accepted by the membership of KDE e.V. (or its
00011     successor approved by the membership of KDE e.V.), which shall
00012     act as a proxy defined in Section 6 of version 3 of the license.
00013 
00014     This library is distributed in the hope that it will be useful,
00015     but WITHOUT ANY WARRANTY; without even the implied warranty of
00016     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017     Lesser General Public License for more details.
00018 
00019     You should have received a copy of the GNU Lesser General Public
00020     License along with this library. If not, see <http://www.gnu.org/licenses/>.
00021 */
00022 
00023 #include "abstractcolumnrenderer.h"
00024 
00025 // lib
00026 #include "abstractcolumnframerenderer.h"
00027 // Qt
00028 #include <QtGui/QPainter>
00029 
00030 namespace KHEPrint
00031 {
00032 
00033 class AbstractColumnRendererPrivate
00034 {
00035   public:
00036     AbstractColumnRendererPrivate( AbstractColumnFrameRenderer *columnFrameRenderer );
00037   public:
00038     void renderBlankLine( QPainter *painter ) const;
00039     void renderEmptyColumn( QPainter *painter, const KPixelXs &_Xs, const KPixelYs &Ys );
00040 
00041   public: // general column data
00043     AbstractColumnFrameRenderer *mColumnFrameRenderer;
00045     bool mVisible;
00046 
00048     KPixelY mLineHeight;
00049 
00051     KPixelXs mXSpan;
00052 };
00053 
00054 AbstractColumnRendererPrivate::AbstractColumnRendererPrivate( AbstractColumnFrameRenderer *columnFrameRenderer )
00055  : mColumnFrameRenderer( columnFrameRenderer ),
00056    mVisible( true ),  //TODO: would false be better?
00057    mLineHeight( columnFrameRenderer->lineHeight() ),
00058    mXSpan( KHE::KSection::fromWidth(0,0) )
00059 {
00060 }
00061 
00062 void AbstractColumnRendererPrivate::renderBlankLine( QPainter *painter ) const
00063 {
00064     if( mLineHeight > 0 )
00065     {
00066         painter->fillRect( 0,0, mXSpan.width(),mLineHeight,
00067                            Qt::white );
00068     }
00069 }
00070 
00071 
00072 void AbstractColumnRendererPrivate::renderEmptyColumn( QPainter *painter, const KPixelXs &_Xs, const KPixelYs &Ys )
00073 {
00074     KPixelXs Xs( _Xs );
00075     Xs.restrictTo( mXSpan );
00076 
00077     painter->fillRect( Xs.start(),Ys.start(), Xs.width(),Ys.width(),
00078                        Qt::white );
00079 }
00080 
00081 
00082 AbstractColumnRenderer::AbstractColumnRenderer( AbstractColumnFrameRenderer *columnFrameRenderer )
00083  : d( new AbstractColumnRendererPrivate(columnFrameRenderer) )
00084 {
00085     columnFrameRenderer->addColumn( this );
00086 }
00087 
00088 AbstractColumnFrameRenderer *AbstractColumnRenderer::columnFrameRenderer() const { return d->mColumnFrameRenderer; }
00089 
00090 KPixelX AbstractColumnRenderer::x()            const { return d->mXSpan.start(); }
00091 KPixelX AbstractColumnRenderer::rightX()       const { return d->mXSpan.end(); }
00092 KPixelX AbstractColumnRenderer::width()        const { return d->mXSpan.width(); }
00093 bool    AbstractColumnRenderer::isVisible()    const { return d->mVisible; }
00094 KPixelX AbstractColumnRenderer::visibleWidth() const { return d->mVisible ? d->mXSpan.width(): 0; }
00095 KPixelY AbstractColumnRenderer::lineHeight()   const { return d->mLineHeight; }
00096 
00097 void AbstractColumnRenderer::setX( KPixelX NewX )             { d->mXSpan.moveToStart( NewX ); }
00098 void AbstractColumnRenderer::setWidth( KPixelX Width )        { d->mXSpan.setEndByWidth( Width ); }
00099 void AbstractColumnRenderer::setVisible( bool mVisible )       { d->mVisible = mVisible; }
00100 void AbstractColumnRenderer::setLineHeight( KPixelY Height )  { d->mLineHeight = Height; }
00101 
00102 void AbstractColumnRenderer::restrictToXSpan( KPixelXs *Xs ) const { Xs->restrictTo( d->mXSpan ); }
00103 
00104 bool AbstractColumnRenderer::overlaps( const KPixelXs &Xs ) const { return d->mXSpan.overlaps(Xs); }
00105 
00106 
00107 void AbstractColumnRenderer::renderFirstLine( QPainter *painter, const KPixelXs &, int firstLine )
00108 {
00109 Q_UNUSED( painter )
00110 Q_UNUSED( firstLine )
00111 //     d->renderBlankLine( painter );
00112 }
00113 
00114 void AbstractColumnRenderer::renderNextLine( QPainter *painter )
00115 {
00116 Q_UNUSED( painter )
00117 //     d->renderBlankLine( painter );
00118 }
00119 
00120 void AbstractColumnRenderer::renderBlankLine( QPainter *painter ) const
00121 {
00122     d->renderBlankLine( painter );
00123 }
00124 
00125 void AbstractColumnRenderer::renderColumn( QPainter *painter, const KPixelXs &Xs, const KPixelYs &Ys )
00126 {
00127     d->renderEmptyColumn( painter, Xs, Ys );
00128 }
00129 
00130 void AbstractColumnRenderer::renderEmptyColumn( QPainter *painter, const KPixelXs &Xs, const KPixelYs &Ys )
00131 {
00132     d->renderEmptyColumn( painter, Xs, Ys );
00133 }
00134 
00135 AbstractColumnRenderer::~AbstractColumnRenderer()
00136 {
00137     delete d;
00138 }
00139 
00140 }
00141 

okteta

Skip menu "okteta"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdeutils

Skip menu "kdeutils"
  • ark
  • kcalc
  • kcharselect
  • kdessh
  • kdf
  • kfloppy
  • kgpg
  • ktimer
  • kwallet
  • okteta
  • printer-applet
  • superkaramba
  • sweeper
Generated for kdeutils by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal