/*************************************************************************** mlabelobject.cpp - Kugar report label object ------------------- begin : Wed Aug 11 1999 copyright : (C) 1999 by Mutiny Bay Software email : info@mutinybaysoftware.com copyright : (C) 2002 Alexander Dymo email : cloudtemple@mksat.net ***************************************************************************/ //#include #include #include "mlabelobject.h" namespace Kugar { /** Constructor */ MLabelObject::MLabelObject() : MReportObject(), xMargin( 0 ), yMargin( 0 ) { // Set the default label text text = ""; // Set the default font TQFont defaultFont; fontFamily = defaultFont.family(); fontSize = 10; fontWeight = MLabelObject::Normal; fontItalic = false; // Set the default alignment hAlignment = MLabelObject::Left; vAlignment = MLabelObject::Top; wordWrap = false; } /** Copy constructor */ MLabelObject::MLabelObject( const MLabelObject& mLabelObject ) : MReportObject( ( MReportObject & ) mLabelObject ), xMargin( 0 ), yMargin( 0 ) { copy( &mLabelObject ); } /** Assignment operator */ MLabelObject MLabelObject::operator=( const MLabelObject& mLabelObject ) { if ( &mLabelObject == this ) return * this; // Copy the derived class's data copy( &mLabelObject ); // Copy the base class's data ( ( MReportObject & ) * this ) = mLabelObject; return *this; } /** Destructor */ MLabelObject::~MLabelObject() {} /** Sets the label's text string */ void MLabelObject::setText( const TQString txt ) { text = txt; } /** Sets the label's text font */ void MLabelObject::setFont( const TQString family, int size, int weight, bool italic ) { fontFamily = family; fontSize = size; fontWeight = weight; fontItalic = italic; } /** Sets the label's horizontal alignment */ void MLabelObject::setHorizontalAlignment( int a ) { hAlignment = a; } /** Sets the label's vertical alignment */ void MLabelObject::setVerticalAlignment( int a ) { vAlignment = a; } /** Sets the label's word wrap flag */ void MLabelObject::setWordWrap( bool state ) { wordWrap = state; } /** Draws the label using the specificed painter & x/y-offsets */ void MLabelObject::draw( TQPainter* p, int xoffset, int yoffset ) { TQFont font( fontFamily, fontSize, fontWeight, fontItalic ); TQPen textPen( foregroundColor, 0, TQPen::NoPen ); int tf; // Set the offsets int xcalc = xpos + xoffset; int ycalc = ypos + yoffset; // Draw the base drawBase( p, xoffset, yoffset ); // Set the font p->setFont( font ); TQFontMetrics fm = p->fontMetrics(); // Set the text alignment flags // Horizontal switch ( hAlignment ) { case MLabelObject::Left: tf = TQPainter::AlignLeft; break; case MLabelObject::Center: tf = TQPainter::AlignHCenter; break; case MLabelObject::Right: tf = TQPainter::AlignRight; } // Vertical switch ( vAlignment ) { case MLabelObject::Top: tf = tf | TQPainter::AlignTop; break; case MLabelObject::Bottom: tf = tf | TQPainter::AlignBottom; break; case MLabelObject::Middle: tf = tf | TQPainter::AlignVCenter; } // Word wrap if ( wordWrap ) tf = tf | TQPainter::WordBreak; // Draw the text p->setPen( textPen ); p->drawText( xcalc + xMargin, ycalc + yMargin, width - xMargin, height - yMargin, tf, text ); } /** Copies member data from one object to another. Used by the copy constructor and assignment operator */ void MLabelObject::copy( const MLabelObject* mLabelObject ) { // Copy the label's text text = mLabelObject->text; // Copy the label's font data fontFamily = mLabelObject->fontFamily; fontSize = mLabelObject->fontSize; fontWeight = mLabelObject->fontWeight; fontItalic = mLabelObject->fontItalic; // Copy the label's alignment data vAlignment = mLabelObject->vAlignment; hAlignment = mLabelObject->hAlignment; wordWrap = mLabelObject->wordWrap; } }