You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/kugar/lib/mlabelobject.cpp

175 lines
4.2 KiB

/***************************************************************************
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 <tdeglobalsettings.h>
#include <tqfont.h>
#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;
}
}