Source Code (Use browser search to find items of interest.)
Class Index
kpresenter'KPObject (./koffice/kpresenter/kpobject.h:45)
class KPObject
{
public:
KPObject();
KPObject &operator=( const KPObject & );
virtual DCOPObject* dcopObject();
virtual void setSelected( bool _selected )
{ selected = _selected; }
virtual void rotate( float _angle )
{ angle = _angle; }
virtual void setSize( QSize _size )
{ setSize( _size.width(), _size.height() ); }
virtual void setSize( int _width, int _height )
{ ext = QSize( _width > 20 ? _width : 20, _height > 20 ? _height : 20 ); }
virtual void setOrig( QPoint _point )
{ orig = _point; }
virtual void setOrig( int _x, int _y )
{ orig = QPoint( _x, _y ); }
virtual void moveBy( QPoint _point )
{ orig = orig + _point; }
virtual void moveBy( int _dx, int _dy )
{ orig = orig + QPoint( _dx, _dy ); }
virtual void resizeBy( QSize _size )
{ resizeBy( _size.width(), _size.height() ); }
virtual void resizeBy( int _dx, int _dy )
{ ext = ext + QSize( _dx + ext.width() > 20 ? _dx : 0, _dy + ext.height() > 20 ? _dy : 0 ); }
virtual void setShadowDistance( int _distance )
{ shadowDistance = _distance; }
virtual void setShadowDirection( ShadowDirection _direction )
{ shadowDirection = _direction; }
virtual void setShadowColor( QColor _color )
{ shadowColor = _color; }
virtual void setEffect( Effect _effect )
{ effect = _effect; }
virtual void setEffect2( Effect2 _effect2 )
{ effect2 = _effect2; }
virtual void setPresNum( int _presNum )
{ presNum = _presNum; }
virtual void setDisappear( bool b )
{ disappear = b; }
virtual void setDisappearNum( int num )
{ disappearNum = num; }
virtual void setEffect3( Effect3 _effect3)
{ effect3 = _effect3; }
virtual void save( ostream& /*out*/ )
{; }
virtual void load( KOMLParser& /*parser*/, vector<KOMLAttrib>& /*lst*/ )
{; }
virtual ObjType getType()
{ return OT_UNDEFINED; }
virtual QRect getBoundingRect( int _diffx, int _diffy );
virtual bool isSelected()
{ return selected; }
virtual float getAngle()
{ return angle; }
virtual int getShadowDistance()
{ return shadowDistance; }
virtual ShadowDirection getShadowDirection()
{ return shadowDirection; }
virtual QColor getShadowColor()
{ return shadowColor; }
virtual QSize getSize()
{ return ext; }
virtual QPoint getOrig()
{ return orig; }
virtual Effect getEffect()
{ return effect; }
virtual Effect2 getEffect2()
{ return effect2; }
virtual int getPresNum()
{ return presNum; }
virtual int getSubPresSteps()
{ return 0; }
virtual bool getDisappear()
{ return disappear; }
virtual int getDisappearNum()
{ return disappearNum; }
virtual Effect3 getEffect3()
{ return effect3; }
virtual void drawSelection( bool _dSelection )
{ dSelection = _dSelection; }
virtual void zoom( float _fakt );
virtual void zoomOrig();
virtual void setOwnClipping( bool _ownClipping )
{ ownClipping = _ownClipping; }
virtual void setSubPresStep( int _subPresStep )
{ subPresStep = _subPresStep; }
virtual void doSpecificEffects( bool _specEffects, bool _onlyCurrStep = true )
{ specEffects = _specEffects; onlyCurrStep = _onlyCurrStep; }
virtual void draw( QPainter *_painter, int _diffx, int _diffy );
virtual bool contains( QPoint _point, int _diffx, int _diffy );
virtual bool intersects( QRect _rect, int _diffx, int _diffy );
virtual QCursor getCursor( QPoint _point, int _diffx, int _diffy, ModifyType &_modType );
virtual void activate( QWidget * /*_widget*/, int /*diffx*/, int /*diffy*/ )
{; }
virtual void deactivate()
{; }
virtual void removeFromObjList()
{ inObjList = false; doDelete(); }
virtual void addToObjList()
{ inObjList = true; }
virtual void incCmdRef()
{ cmds++; }
virtual void decCmdRef()
{ cmds--; doDelete(); }
virtual void setMove( bool _move )
{ move = _move; }
protected:
virtual void getShadowCoords( int& _x, int& _y, ShadowDirection _direction, int _distance );
virtual void paintSelection( QPainter *_painter );
virtual void doDelete();
float angle;
QPoint orig;
QSize ext;
int shadowDistance;
ShadowDirection shadowDirection;
QColor shadowColor;
Effect effect;
Effect2 effect2;
Effect3 effect3;
int presNum, disappearNum;
bool disappear;
bool selected, dSelection;
bool zoomed;
float presFakt;
QPoint oldOrig;
QSize oldExt;
int subPresStep;
bool specEffects;
bool onlyCurrStep;
bool ownClipping;
bool inObjList;
int cmds;
bool move;
DCOPObject *dcop;
};
kpresenter'KPObject::KPObject() (./koffice/kpresenter/kpobject.cc:46)
KPObject::KPObject()
: orig(), ext(), shadowColor( Qt::gray )
{
presNum = 0;
disappearNum = 1;
effect = EF_NONE;
effect2 = EF2_NONE;
effect3 = EF3_NONE;
disappear = false;
angle = 0.0;
shadowDirection = SD_RIGHT_BOTTOM;
shadowDistance = 0;
dSelection = true;
selected = false;
presFakt = 0.0;
zoomed = false;
ownClipping = true;
subPresStep = 0;
specEffects = false;
onlyCurrStep = true;
inObjList = true;
cmds = 0;
move = false;
dcop = 0;
}
/*================================================================*/
kpresenter'KPObject::getBoundingRect() (./koffice/kpresenter/kpobject.cc:79)
QRect KPObject::getBoundingRect( int _diffx, int _diffy )
{
QRect r( orig.x() - _diffx, orig.y() - _diffy,
ext.width(), ext.height() );
if ( shadowDistance > 0 )
{
int sx = r.x(), sy = r.y();
getShadowCoords( sx, sy, shadowDirection, shadowDistance );
QRect r2( sx, sy, r.width(), r.height() );
r = r.unite( r2 );
}
if ( angle == 0.0 )
return r;
else
{
QWMatrix mtx;
mtx.rotate( angle );
QRect rr = mtx.map( r );
int diffw = abs( rr.width() - r.width() );
int diffh = abs( rr.height() - r.height() );
return QRect( r.x() - diffw, r.y() - diffh,
r.width() + diffw * 2, r.height() + diffh * 2 );
}
}
/*======================== contain point ? =======================*/
kpresenter'KPObject::contains() (./koffice/kpresenter/kpobject.cc:109)
bool KPObject::contains( QPoint _point, int _diffx, int _diffy )
{
if ( angle == 0.0 )
{
QRect r( orig.x() - _diffx, orig.y() - _diffy,
ext.width(), ext.height() );
return r.contains( _point );
}
else
{
QRect br = QRect( 0, 0, ext.width(), ext.height() );
int pw = br.width();
int ph = br.height();
QRect rr = br;
int yPos = -rr.y();
int xPos = -rr.x();
rr.moveTopLeft( QPoint( -rr.width() / 2, -rr.height() / 2 ) );
QWMatrix m, mtx, m2;
mtx.rotate( angle );
m.translate( pw / 2, ph / 2 );
m2.translate( rr.left() + xPos, rr.top() + yPos );
m = m2 * mtx * m;
QRect r = m.map( br );
r.moveBy( orig.x() - _diffx, orig.y() - _diffy );
return r.contains( _point );
}
}
/*================================================================*/
kpresenter'KPObject::intersects() (./koffice/kpresenter/kpobject.cc:141)
bool KPObject::intersects( QRect _rect, int _diffx, int _diffy )
{
if ( angle == 0.0 )
{
QRect r( orig.x() - _diffx, orig.y() - _diffy,
ext.width(), ext.height() );
return r.intersects( _rect );
}
else
{
QRect br = QRect( 0, 0, ext.width(), ext.height() );
int pw = br.width();
int ph = br.height();
QRect rr = br;
int yPos = -rr.y();
int xPos = -rr.x();
rr.moveTopLeft( QPoint( -rr.width() / 2, -rr.height() / 2 ) );
QWMatrix m, mtx, m2;
mtx.rotate( angle );
m.translate( pw / 2, ph / 2 );
m2.translate( rr.left() + xPos, rr.top() + yPos );
m = m2 * mtx * m;
QRect r = m.map( br );
r.moveBy( orig.x() - _diffx, orig.y() - _diffy );
return r.intersects( _rect );
}
}
/*======================== get cursor ============================*/
kpresenter'KPObject::getCursor() (./koffice/kpresenter/kpobject.cc:173)
QCursor KPObject::getCursor( QPoint _point, int _diffx, int _diffy, ModifyType &_modType )
{
int px = _point.x();
int py = _point.y();
int ox = orig.x() - _diffx;
int oy = orig.y() - _diffy;
int ow = ext.width();
int oh = ext.height();
QRect r( ox, oy, ow, oh );
if ( !r.contains( _point ) )
return Qt::arrowCursor;
if ( px >= ox && py >= oy && px <= ox + 6 && py <= oy + 6 )
{
_modType = MT_RESIZE_LU;
return Qt::sizeFDiagCursor;
}
if ( px >= ox && py >= oy + oh / 2 - 3 && px <= ox + 6 && py <= oy + oh / 2 + 3 )
{
_modType = MT_RESIZE_LF;
return Qt::sizeHorCursor;
}
if ( px >= ox && py >= oy + oh - 6 && px <= ox + 6 && py <= oy + oh )
{
_modType = MT_RESIZE_LD;
return Qt::sizeBDiagCursor;
}
if ( px >= ox + ow / 2 - 3 && py >= oy && px <= ox + ow / 2 + 3 && py <= oy + 6 )
{
_modType = MT_RESIZE_UP;
return Qt::sizeVerCursor;
}
if ( px >= ox + ow / 2 - 3 && py >= oy + oh - 6 && px <= ox + ow / 2 + 3 && py <= oy + oh )
{
_modType = MT_RESIZE_DN;
return Qt::sizeVerCursor;
}
if ( px >= ox + ow - 6 && py >= oy && px <= ox + ow && py <= oy + 6 )
{
_modType = MT_RESIZE_RU;
return Qt::sizeBDiagCursor;
}
if ( px >= ox + ow - 6 && py >= oy + oh / 2 - 3 && px <= ox + ow && py <= oy + oh / 2 + 3 )
{
_modType = MT_RESIZE_RT;
return Qt::sizeHorCursor;
}
if ( px >= ox + ow - 6 && py >= oy + oh - 6 && px <= ox + ow && py <= oy + oh )
{
_modType = MT_RESIZE_RD;
return Qt::sizeFDiagCursor;
}
_modType = MT_MOVE;
return Qt::sizeAllCursor;
}
/*========================= zoom =================================*/
kpresenter'KPObject::zoom() (./koffice/kpresenter/kpobject.cc:241)
void KPObject::zoom( float _fakt )
{
presFakt = _fakt;
zoomed = true;
oldOrig = orig;
oldExt = ext;
orig.setX( static_cast<int>( static_cast<float>( orig.x() ) * presFakt ) );
orig.setY( static_cast<int>( static_cast<float>( orig.y() ) * presFakt ) );
ext.setWidth( static_cast<int>( static_cast<float>( ext.width() ) * presFakt ) );
ext.setHeight( static_cast<int>( static_cast<float>( ext.height() ) * presFakt ) );
setSize( ext );
setOrig( orig );
}
/*==================== zoom orig =================================*/
kpresenter'KPObject::zoomOrig() (./koffice/kpresenter/kpobject.cc:260)
void KPObject::zoomOrig()
{
zoomed = false;
orig = oldOrig;
ext = oldExt;
setSize( ext );
setOrig( orig );
}
/*======================== draw ==================================*/
kpresenter'KPObject::draw() (./koffice/kpresenter/kpobject.cc:272)
void KPObject::draw( QPainter *_painter, int _diffx, int _diffy )
{
if ( dSelection )
{
_painter->save();
QRect r = _painter->viewport();
_painter->setViewport( orig.x() - _diffx, orig.y() - _diffy, r.width(), r.height() );
paintSelection( _painter );
_painter->setViewport( r );
_painter->restore();
}
}
/*====================== get shadow coordinates ==================*/
kpresenter'KPObject::getShadowCoords() (./koffice/kpresenter/kpobject.cc:288)
void KPObject::getShadowCoords( int& _x, int& _y, ShadowDirection /*_direction*/, int /*_distance*/ )
{
int sx = 0, sy = 0;
switch ( shadowDirection )
{
case SD_LEFT_UP:
{
sx = _x - shadowDistance;
sy = _y - shadowDistance;
} break;
case SD_UP:
{
sx = _x;
sy = _y - shadowDistance;
} break;
case SD_RIGHT_UP:
{
sx = _x + shadowDistance;
sy = _y - shadowDistance;
} break;
case SD_RIGHT:
{
sx = _x + shadowDistance;
sy = _y;
} break;
case SD_RIGHT_BOTTOM:
{
sx = _x + shadowDistance;
sy = _y + shadowDistance;
} break;
case SD_BOTTOM:
{
sx = _x;
sy = _y + shadowDistance;
} break;
case SD_LEFT_BOTTOM:
{
sx = _x - shadowDistance;
sy = _y + shadowDistance;
} break;
case SD_LEFT:
{
sx = _x - shadowDistance;
sy = _y;
} break;
}
_x = sx; _y = sy;
}
/*======================== paint selection =======================*/
kpresenter'KPObject::paintSelection() (./koffice/kpresenter/kpobject.cc:340)
void KPObject::paintSelection( QPainter *_painter )
{
_painter->save();
Qt::RasterOp rop = _painter->rasterOp();
_painter->setRasterOp( Qt::NotROP );
if ( getType() == OT_TEXT && dynamic_cast<KPTextObject*>( this )->getDrawEditRect() )
{
_painter->save();
if ( angle != 0 )
{
QRect br = QRect( 0, 0, ext.width(), ext.height() );
int pw = br.width();
int ph = br.height();
QRect rr = br;
int yPos = -rr.y();
int xPos = -rr.x();
rr.moveTopLeft( QPoint( -rr.width() / 2, -rr.height() / 2 ) );
QWMatrix m, mtx, m2;
mtx.rotate( angle );
m.translate( pw / 2, ph / 2 );
m2.translate( rr.left() + xPos, rr.top() + yPos );
m = m2 * mtx * m;
_painter->setWorldMatrix( m );
}
_painter->setPen( QPen( Qt::black, 1, Qt::DotLine ) );
_painter->setBrush( Qt::NoBrush );
_painter->drawRect( 0, 0, ext.width(), ext.height() );
_painter->restore();
}
_painter->setPen( QPen( Qt::black, 1, Qt::SolidLine ) );
_painter->setBrush( Qt::black );
if ( selected )
{
_painter->fillRect( 0, 0, 6, 6, Qt::black );
_painter->fillRect( 0, ext.height() / 2 - 3, 6, 6, Qt::black );
_painter->fillRect( 0, ext.height() - 6, 6, 6, Qt::black );
_painter->fillRect( ext.width() - 6, 0, 6, 6, Qt::black );
_painter->fillRect( ext.width() - 6, ext.height() / 2 - 3, 6, 6, Qt::black );
_painter->fillRect( ext.width() - 6, ext.height() - 6, 6, 6, Qt::black );
_painter->fillRect( ext.width() / 2 - 3, 0, 6, 6, Qt::black );
_painter->fillRect( ext.width() / 2 - 3, ext.height() - 6, 6, 6, Qt::black );
}
_painter->setRasterOp( rop );
_painter->restore();
}
/*======================== do delete =============================*/
kpresenter'KPObject::doDelete() (./koffice/kpresenter/kpobject.cc:397)
void KPObject::doDelete()
{
if ( cmds == 0 && !inObjList )delete this;
}
/*=============================================================*/
kpresenter'KPObject::dcopObject() (./koffice/kpresenter/kpobject.cc:403)
DCOPObject* KPObject::dcopObject()
{
if ( !dcop )
dcop = new KPresenterObjectIface( this );
return dcop;
}