29#include <tqpaintdevice.h>
35VTQPainter::VTQPainter( TQPaintDevice *target,
unsigned int w,
unsigned int h ) : VPainter( target, w, h ), m_painter( 0L ), m_target( target ), m_width( w ), m_height( h )
39 m_painter =
new TQPainter( target );
42VTQPainter::~VTQPainter()
48VTQPainter::resize(
unsigned int w,
unsigned int h )
55VTQPainter::blit(
const KoRect & )
61VTQPainter::clear(
const TQColor &c )
63 m_painter->setBackgroundColor( c );
64 m_painter->eraseRect( 0, 0, m_width, m_height );
70 if( !m_painter->isActive() )
72 m_painter->begin( m_target );
73 m_painter->eraseRect( 0, 0, m_width, m_height );
84VTQPainter::worldMatrix()
86 return m_painter->worldMatrix();
90VTQPainter::setWorldMatrix(
const TQWMatrix& mat )
92 m_painter->setWorldMatrix( mat );
96VTQPainter::setZoomFactor(
double zoomFactor )
98 m_zoomFactor = zoomFactor;
105VTQPainter::moveTo(
const KoPoint &p )
108 if( m_pa.size() <= m_index )
109 m_pa.resize( m_index + 10 );
111 m_pa.setPoint( m_index,
static_cast<int>(p.x() * m_zoomFactor),
static_cast<int>(p.y() * m_zoomFactor) );
117VTQPainter::lineTo(
const KoPoint &p )
119 if( m_pa.size() <= m_index )
120 m_pa.resize( m_index + 10 );
122 m_pa.setPoint( m_index,
static_cast<int>(p.x() * m_zoomFactor),
static_cast<int>(p.y() * m_zoomFactor) );
128VTQPainter::curveTo(
const KoPoint &p1,
const KoPoint &p2,
const KoPoint &p3 )
131 TQPointArray pa( 4 );
132 pa.setPoint( 0, m_pa.point( m_index - 1 ).x(), m_pa.point( m_index - 1 ).y() );
133 pa.setPoint( 1,
static_cast<int>(p1.x() * m_zoomFactor),
static_cast<int>(p1.y() * m_zoomFactor) );
134 pa.setPoint( 2,
static_cast<int>(p2.x() * m_zoomFactor),
static_cast<int>(p2.y() * m_zoomFactor) );
135 pa.setPoint( 3,
static_cast<int>(p3.x() * m_zoomFactor),
static_cast<int>(p3.y() * m_zoomFactor) );
137 TQPointArray pa2( pa.cubicBezier() );
139 m_pa.resize( m_index + pa2.size() );
140 m_pa.putPoints( m_index, pa2.size(), pa2 );
142 m_index += pa2.size();
152VTQPainter::fillPath()
156 m_painter->drawPolygon( m_pa,
false, 0, m_index );
160VTQPainter::strokePath()
162 m_painter->drawPolyline( m_pa, 0, m_index );
167VTQPainter::setPen(
const VStroke &stroke )
172 pen.setColor( stroke.color() );
173 pen.setWidth(
static_cast<int>(stroke.lineWidth()) );
176 if( stroke.lineCap() == VStroke::capButt )
177 pen.setCapStyle( TQt::FlatCap );
178 else if( stroke.lineCap() == VStroke::capRound )
179 pen.setCapStyle( TQt::RoundCap );
180 else if( stroke.lineCap() == VStroke::capSquare )
181 pen.setCapStyle( TQt::SquareCap );
183 m_painter->setPen( pen );
187VTQPainter::setBrush(
const VFill &fill )
189 switch( fill.type() )
192 m_painter->setBrush( TQt::NoBrush );
195 m_painter->setBrush( TQBrush( fill.color(), TQt::SolidPattern ) );
199 m_painter->setBrush( TQt::NoBrush );
203 m_painter->setBrush( TQBrush( fill.color(), fill.pattern().pixmap() ) );
211VTQPainter::setPen(
const TQColor &c )
213 m_painter->setPen( c );
217VTQPainter::setPen( TQt::PenStyle style )
219 m_painter->setPen( style );
223VTQPainter::setBrush(
const TQColor &c )
225 m_painter->setBrush( c );
229VTQPainter::setBrush( TQt::BrushStyle style )
231 m_painter->setBrush( style );
243 m_painter->restore();
247VTQPainter::setRasterOp( TQt::RasterOp r )
249 m_painter->setRasterOp( r );
253VTQPainter::drawNode(
const KoPoint &p,
int width )
255 m_painter->drawRect( TQRect(
int( p.x() * m_zoomFactor ) - width,
int( p.y() * m_zoomFactor ) - width,
256 2 * width + 1, 2 * width + 1 ) );
260VTQPainter::drawRect(
const KoRect &rect )
262 m_painter->drawRect( TQRect(
int( rect.x() ),
int( rect.y() ),
int( rect.width() ),
int( rect.height() ) ) );
266VTQPainter::drawImage(
const TQImage &image,
const TQWMatrix &affine )
268 TQWMatrix matrix = m_painter->worldMatrix();
270 double m11 = affine.m11() * matrix.m11() * m_zoomFactor + affine.m12() * matrix.m21();
271 double m12 = (affine.m11() * matrix.m12() + affine.m12() * matrix.m22() ) * m_zoomFactor;
272 double m21 = (affine.m21() * matrix.m11() + affine.m22() * matrix.m21() ) * m_zoomFactor;
273 double m22 = affine.m22() * matrix.m22() * m_zoomFactor + affine.m21() * matrix.m12();
274 double dx = matrix.dx() + affine.dx() * m_zoomFactor;
275 double dy = matrix.dy() - affine.dy() * m_zoomFactor;
277 TQWMatrix world( m11, m12, m21, m22, dx, dy );
279 m_painter->setWorldMatrix( world );
281 m_painter->drawImage( TQPoint( 0, 0 ), image );
283 m_painter->setWorldMatrix( matrix );
Manages the fill of shapes.
Manages stroke properties.