okteta
abstractcolumnrenderer.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "abstractcolumnrenderer.h"
00024
00025
00026 #include "abstractcolumnframerenderer.h"
00027
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:
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 ),
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
00112 }
00113
00114 void AbstractColumnRenderer::renderNextLine( QPainter *painter )
00115 {
00116 Q_UNUSED( painter )
00117
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