Members of the KDE Community are recommended to subscribe to the kde-community mailing list at https://mail.kde.org/mailman/listinfo/kde-community to allow them to participate in important discussions and receive other important announcements

pagetransition.h 4.1 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_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
         * Describes the alignment that is applied to the @ref Type
Tobias Koenig's avatar
Tobias Koenig committed
47 48
         * of transition effect.
         */
49 50 51 52 53
        enum Alignment {
            Horizontal,
            Vertical
        };

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

Tobias Koenig's avatar
Tobias Koenig committed
63 64 65
        /**
         * Creates a new page transition of the given @p type.
         *
66
         * If no type is given, the normal @ref Replace transition is used.
Tobias Koenig's avatar
Tobias Koenig committed
67
         */
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
        /**
         * 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;

        /**
117
         * Sets the @p type of the transition (@ref Type).
Tobias Koenig's avatar
Tobias Koenig committed
118 119 120 121 122 123 124 125 126
         */
        void setType( Type type );

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

        /**
127
         * Sets the @p alignment of the transition (@ref Alignment).
Tobias Koenig's avatar
Tobias Koenig committed
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
         */
        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