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/kpresenter/KPrEffectHandler.h

346 lines
9.4 KiB

// -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*-
/* This file is part of the KDE project
Copyright (C) 2004 Thorsten Zachmann <zachmann@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef EFFECTHANDLER_H
#define EFFECTHANDLER_H
#include <qpixmap.h>
#include <qptrlist.h>
#include <qstring.h>
#include "global.h"
#include "presstep.h"
class QPaintDevice;
class KPrObject;
class KPrView;
class KPrEffectHandler
{
public:
/**
* Creates an EffectsHandler for the effect step step and the effect sub step subStep.
* step the effect step for which the effect should be displayed
* subStep the sub effect step for which the effect should be displayed
* back set to true if the effect step was reached by going backwards
* dst the paint device on which the Effects will be shown
* src this pixmap holds the pixmap before any effects are started
* objects all objects of the page
* view pointer to the active KPrView
*/
KPrEffectHandler( PresStep step, bool back, QPaintDevice *dst, QPixmap *src, const QPtrList<KPrObject> &objects, KPrView *view, int _presSpeed );
/**
* Delete the KPrEffectHandler.
*/
~KPrEffectHandler();
/**
* doEffect handle the next step of the object effect.
* Returns true if all effects in the current step are finished.
* In automatic presentation mode:
* On the first step it stops the automatic presentation timer.
* The automatic presentation timer will be restared when all
* effects are done.
*/
bool doEffect();
/**
* Ends the effect for the current step by displaying all objects
* on their final position.
* In automatic presentation mode:
* Restarts the automatic presentation timer.
*/
void finish();
protected:
/**
* Calls the right appear effect method for the object object.
* Returns true if the effect for the object is finished.
*/
bool doAppearEffectStep( KPrObject *object );
/**
* Calls the right disappear effect method for the object object.
* Returns true if the effect for the object is finished.
*/
bool doDisappearEffectStep( KPrObject *object );
/**
* Effect None
* The object just appears on its position
* Returns allways true as the object is in is final position.
*/
bool appearNone( KPrObject *object );
/**
* Effect Come From Left
* The object comes in from the left to its position
* Returns true if the object is on its final position.
*/
bool appearComeLeft( KPrObject *object );
/**
* Effect Come From Top
* The object comes in from the top to its position
* Returns true if the object is on its final position.
*/
bool appearComeTop( KPrObject *object );
/**
* Effect Come From Right
* The object comes in from the right to its position
* Returns true if the object is on its final position.
*/
bool appearComeRight( KPrObject *object );
/**
* Effect Come From Bottom
* The object comes in from the bottom to its position
* Returns true if the object is on its final position.
*/
bool appearComeBottom( KPrObject *object );
/**
* Effect Come From Left/Top
* The object comes in from the top left corner to its position
* Returns true if the object is on its final position.
*/
bool appearComeLeftTop( KPrObject *object );
/**
* Effect Come From Left/Buttom
* The object comes in from the bottom left corner to its position
* Returns true if the object is on its final position.
*/
bool appearComeLeftBottom( KPrObject *object );
/**
* Effect Come From Right/Top
* The object comes in from the top right corner to its position
* Returns true if the object is on its final position.
*/
bool appearComeRightTop( KPrObject *object );
/**
* Effect Come From Right/Buttom
* The object comes in from the bottom right corner to its position
* Returns true if the object is on its final position.
*/
bool appearComeRightBottom( KPrObject *object );
/**
* Effect Wipe From Left
* Returns true if the object is fully shown.
*/
bool appearWipeLeft( KPrObject *object );
/**
* Effect Wipe From Right
* Returns true if the object is fully shown.
*/
bool appearWipeRight( KPrObject *object );
/**
* Effect Wipe From Top
* Returns true if the object is fully shown.
*/
bool appearWipeTop( KPrObject *object );
/**
* Effect Wipe From Bottom
* Returns true if the object is fully shown.
*/
bool appearWipeBottom( KPrObject *object );
/**
* Effect Disappear To Left
* The object moves from it's position to the left out of the screen
* Returns true if the object is out of the screen.
*/
bool disappearGoLeft( KPrObject *object );
/**
* Effect Disappear To Right
* The object moves from it's position to the right out of the screen
* Returns true if the object is out of the screen.
*/
bool disappearGoRight( KPrObject *object );
/**
* Effect Disappear To Top
* The object moves from it's position to the top out of the screen
* Returns true if the object is out of the screen.
*/
bool disappearGoTop( KPrObject *object );
/**
* Effect Disappear To Bottom
* The object moves from it's position to the bottom out of the screen
* Returns true if the object is out of the screen.
*/
bool disappearGoBottom( KPrObject *object );
/**
* Effect Disappear To Left/Top
* The object moves from it's position to the top left out of the screen
* Returns true if the object is out of the screen.
*/
bool disappearGoLeftTop( KPrObject *object );
/**
* Effect Disappear To Left/Bottom
* The object moves from it's position to the bottom left out of the screen
* Returns true if the object is out of the screen.
*/
bool disappearGoLeftBottom( KPrObject *object );
/**
* Effect Disappear To Right/Top
* The object moves from it's position to the top right out of the screen
* Returns true if the object is out of the screen.
*/
bool disappearGoRightTop( KPrObject *object );
/**
* Effect Disappear To Right/Bottom
* The object moves from it's position to the bottom right out of the screen
* Returns true if the object is out of the screen.
*/
bool disappearGoRightBottom( KPrObject *object );
/**
* Effect Wipe From Left
* Returns true if the object is fully shown.
*/
bool disappearWipeLeft( KPrObject *object );
/**
* Effect Wipe From Right
* Returns true if the object is fully shown.
*/
bool disappearWipeRight( KPrObject *object );
/**
* Effect Wipe From Top
* Returns true if the object is fully shown.
*/
bool disappearWipeTop( KPrObject *object );
/**
* Effect Wipe From Bottom
* Returns true if the object is fully shown.
*/
bool disappearWipeBottom( KPrObject *object );
/**
* Draws the object object to the pixmap screen with the offset defined
* in x and y. If clipRect is set the only the clipRect will be painted.
*/
void drawObject( KPrObject *object, int x, int y, QPixmap *screen, QRect *clipRect = 0 );
/**
* The internal step of the effect. This is used to calculate the position
* of the object.
*/
int m_effectStep;
/**
* The effect step which should be animated.
*/
PresStep m_step;
/**
* True when the effect step was reached by going backwards
*/
bool m_back;
/**
* Paint device on which the effects will be displayed
*/
QPaintDevice *m_dst;
/**
* Pixmap used as source for displaying on.
* m_src contains all objects which are allready on the
* final position.
*/
QPixmap *m_src;
/**
* Is used for printing all objects before bitblt to m_dst
*/
QPixmap m_paint;
/**
* List of all objects of the current page
*/
QPtrList<KPrObject> m_objects;
/**
* List of all objects which appear in the current step.
* If a object has reached its final position it is removed from
* this list
*/
QPtrList<KPrObject> m_appearEffectObjects;
/**
* List of all objects which disappear in the current step.
* If a object has disappeared it is removed from this list
*/
QPtrList<KPrObject> m_disappearEffectObjects;
/// the active KPrView
KPrView *m_view;
/**
* The width of a step.
*/
int m_stepWidth;
/**
* The height of a step.
*/
int m_stepHeight;
/**
* The rects which have to be bitblt
*/
QPtrList<QRect> m_repaintRects;
/**
* The rects which have to be bitblt as the objects
* are no longer there.
*/
QPtrList<QRect> m_lastRepaintRects;
/**
* The filename of the sound file which should be played during the effect.
*/
QString m_soundEffect;
/**
* Used the set the autopresentation timer.
*/
int m_objectTimer;
};
#endif /* EFFECTHANDLER_H */