summaryrefslogtreecommitdiffstats
path: root/kpresenter/KPrEffectHandler.h
diff options
context:
space:
mode:
Diffstat (limited to 'kpresenter/KPrEffectHandler.h')
-rw-r--r--kpresenter/KPrEffectHandler.h345
1 files changed, 345 insertions, 0 deletions
diff --git a/kpresenter/KPrEffectHandler.h b/kpresenter/KPrEffectHandler.h
new file mode 100644
index 00000000..8128b264
--- /dev/null
+++ b/kpresenter/KPrEffectHandler.h
@@ -0,0 +1,345 @@
+// -*- 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 <[email protected]>
+
+ 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 */