File size: 4,535 Bytes
5cee033
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/* PageTransition.h
 * Copyright (C) 2005, Net Integration Technologies, Inc.
 * Copyright (C) 2005, Brad Hards <[email protected]>
 * Copyright (C) 2015, Arseniy Lartsev <[email protected]>
 * Copyright (C) 2018, 2021 Albert Astals Cid <[email protected]>
 *
 * 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, or (at your option)
 * any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
 */

#ifndef __PAGETRANSITION_X_H__
#define __PAGETRANSITION_X_H__

#include "poppler-export.h"

#include <QtCore/qglobal.h>

namespace Poppler {

class PageTransitionParams;
class PageTransitionData;

/**
   \brief Describes how a PDF file viewer shall perform the transition
   from one page to another

   In PDF files there is a way to specify if the viewer shall use
   certain effects to perform the transition from one page to
   another. This feature can be used, e.g., in a PDF-based beamer
   presentation.

   This utility class represents the transition effect, and can be
   used to extract the information from a PDF object.
*/

class POPPLER_QT5_EXPORT PageTransition
{
public:
    /** \brief transition effect that shall be used
     */
    // if changed remember to keep in sync with PageTransition.h enum
    enum Type
    {
        Replace = 0,
        Split,
        Blinds,
        Box,
        Wipe,
        Dissolve,
        Glitter,
        Fly,
        Push,
        Cover,
        Uncover,
        Fade
    };

    /** \brief alignment of the transition effect that shall be used
     */
    // if changed remember to keep in sync with PageTransition.h enum
    enum Alignment
    {
        Horizontal = 0,
        Vertical
    };

    /** \brief direction of the transition effect that shall be used
     */
    // if changed remember to keep in sync with PageTransition.h enum
    enum Direction
    {
        Inward = 0,
        Outward
    };

    /** \brief Construct a new PageTransition object from a page dictionary.

    Users of the library will rarely need to construct a
    PageTransition object themselves. Instead, the method
    Poppler::Page::transition() can be used to find out if a certain
    transition effect is specified.

    @warning In case or error, this method will print an error message to stderr,
    and construct a default object.

    @param params an object whose dictionary will be read and
     parsed. This must be a valid object, whose dictionaries are
     accessed by the constructor. The object is only accessed by this
     constructor, and may be deleted after the constructor returns.
    */
    // TODO Next ABI break, make this private and remove reference
    explicit PageTransition(const PageTransitionParams &params);

    /** \brief copy constructor */
    PageTransition(const PageTransition &pt);

    /** \brief assignment operator \since 0.63 */
    PageTransition &operator=(const PageTransition &other);

    /**
       Destructor
    */
    ~PageTransition();

    /**
       \brief Get type of the transition.
    */
    Type type() const;

    /**
       \brief Get duration of the transition in seconds as integer

       \deprecated This function is left for backward compatibility, use durationReal() instead.
    */
    Q_DECL_DEPRECATED int duration() const;

    /**
       \brief Get duration of the transition in seconds
    */
    double durationReal() const;

    /**
       \brief Get dimension in which the transition effect occurs.
    */
    Alignment alignment() const;

    /**
       \brief Get direction of motion of the transition effect.
    */
    Direction direction() const;

    /**
       \brief Get direction in which the transition effect moves.
    */
    int angle() const;

    /**
       \brief Get starting or ending scale.
    */
    double scale() const;

    /**
       \brief Returns true if the area to be flown is rectangular and
       opaque.
    */
    bool isRectangular() const;

private:
    PageTransitionData *data;
};

}

#endif