pagetransition.h 4.12 KB
Newer Older
1 2 3 4 5 6 7 8 9
/***************************************************************************
 *   Copyright (C) 2005 by Tobias Koenig <tokoe@kde.org>                   *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 ***************************************************************************/

Tobias Koenig's avatar
Tobias Koenig committed
10 11
#ifndef _OKULAR_PAGETRANSITION_H_
#define _OKULAR_PAGETRANSITION_H_
12

13
#include <okular/core/okular_export.h>
14

15 16
namespace Okular {

17 18
/**
 * @short Information object for the transition effect of a page.
Tobias Koenig's avatar
Tobias Koenig committed
19 20 21 22
 *
 * This class encapsulates the information about the effect of
 * a page transition. It supports mainly the transition effects as
 * defined in PDF specification 1.6.
23
 */
24
class OKULAR_EXPORT PageTransition
25 26
{
    public:
Tobias Koenig's avatar
Tobias Koenig committed
27 28 29
        /**
         * Describes the type of transition effect.
         */
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
        enum Type {
            Replace,
            Split,
            Blinds,
            Box,
            Wipe,
            Dissolve,
            Glitter,
            Fly,
            Push,
            Cover,
            Uncover,
            Fade
        };

Tobias Koenig's avatar
Tobias Koenig committed
45 46 47 48
        /**
         * Describes the alignment that is applied to the @see Type
         * of transition effect.
         */
49 50 51 52 53
        enum Alignment {
            Horizontal,
            Vertical
        };

Tobias Koenig's avatar
Tobias Koenig committed
54 55 56 57
        /**
         * Describes the direction that is applied to the @see Type
         * of transition effect.
         */
58 59 60 61 62
        enum Direction {
            Inward,
            Outward
        };

Tobias Koenig's avatar
Tobias Koenig committed
63 64 65 66 67
        /**
         * Creates a new page transition of the given @p type.
         *
         * If no type is given, the normal @see Replace transition is used.
         */
68
        PageTransition( Type type = Replace );
69

Tobias Koenig's avatar
Tobias Koenig committed
70 71 72 73 74
        /**
         * Creates a new page transition from an @p other.
         */
        PageTransition( const PageTransition &other );
        PageTransition& operator=( const PageTransition &other );
75

Tobias Koenig's avatar
Tobias Koenig committed
76 77 78 79
        /**
         * Destroys the page transition.
         */
        ~PageTransition();
80

Tobias Koenig's avatar
Tobias Koenig committed
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
        /**
         * Returns the type of the transition.
         */
        Type type() const;

        /**
         * Returns the duration of the transition in seconds.
         */
        int duration() const;

        /**
         * Returns the alignment of the transition.
         */
        Alignment alignment() const;

        /**
         * Returns the direction of motion of the transition.
         */
        Direction direction() const;

        /**
         * Returns the angle of rotation of the transition.
         */
        int angle() const;

        /**
         * Returns the starting or ending scale (Only if type == 'Fly').
         */
        double scale() const;

        /**
         * Returns true if the area to be flown is rectangular and opaque (Only if type == 'Fly').
         */
        bool isRectangular() const;

        /**
         * Sets the @p type of the transition (@see Type).
         */
        void setType( Type type );

        /**
         * Sets the @p duration in seconds for the transition.
         */
        void setDuration( int duration );

        /**
         * Sets the @p alignment of the transition (@see Alignment).
         */
        void setAlignment( Alignment alignment );

        /**
         * Sets the @p direction of the transition (@see Direction).
         */
        void setDirection( Direction direction );

        /**
         * Sets the moving @p angle of the transition.
         */
        void setAngle( int angle );

        /**
         * Sets the starting or ending scale of the transition (Only if type == 'Fly').
         */
        void setScale( double scale );

        /**
         * Sets whether the area to be flown is rectangular and opaque (Only if type == 'Fly').
         */
        void setIsRectangular( bool rectangular );
150 151

    private:
Tobias Koenig's avatar
Tobias Koenig committed
152 153
        class Private;
        Private* const d;
154 155
};

156 157
}

158
#endif