| //********************************************************************************* |
| // Movie.h |
| //--------------------------------------------------------------------------------- |
| // |
| //--------------------------------------------------------------------------------- |
| // Hugo Mercier <hmercier31[at]gmail.com> (c) 2008 |
| // Carlos Garcia Campos <carlosgc@gnome.org> (c) 2010 |
| // Albert Astals Cid <aacid@kde.org> (c) 2017-2019, 2021, 2022 |
| // |
| // 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. |
| // |
| // 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| //********************************************************************************* |
| |
| #ifndef _MOVIE_H_ |
| #define _MOVIE_H_ |
| |
| #include "Object.h" |
| #include "poppler_private_export.h" |
| |
| #include <memory> |
| |
| struct MovieActivationParameters |
| { |
| |
| MovieActivationParameters(); |
| ~MovieActivationParameters(); |
| |
| // parse from a "Movie Activation" dictionary |
| void parseMovieActivation(const Object *aDict); |
| |
| enum MovieRepeatMode |
| { |
| repeatModeOnce, |
| repeatModeOpen, |
| repeatModeRepeat, |
| repeatModePalindrome |
| }; |
| |
| struct MovieTime |
| { |
| MovieTime() { units_per_second = 0; } |
| unsigned long units; |
| int units_per_second; // 0 : defined by movie |
| }; |
| |
| MovieTime start; // 0 |
| MovieTime duration; // 0 |
| |
| double rate; // 1.0 |
| |
| int volume; // 100 |
| |
| bool showControls; // false |
| |
| bool synchronousPlay; // false |
| MovieRepeatMode repeatMode; // repeatModeOnce |
| |
| // floating window position |
| bool floatingWindow; |
| double xPosition; // 0.5 |
| double yPosition; // 0.5 |
| int znum; // 1 |
| int zdenum; // 1 |
| }; |
| |
| class POPPLER_PRIVATE_EXPORT Movie |
| { |
| public: |
| Movie(const Object *movieDict, const Object *aDict); |
| explicit Movie(const Object *movieDict); |
| Movie(const Movie &other); |
| ~Movie(); |
| Movie &operator=(const Movie &) = delete; |
| |
| bool isOk() const { return ok; } |
| const MovieActivationParameters *getActivationParameters() const { return &MA; } |
| |
| const GooString *getFileName() const { return fileName; } |
| |
| unsigned short getRotationAngle() const { return rotationAngle; } |
| void getAspect(int *widthA, int *heightA) const |
| { |
| *widthA = width; |
| *heightA = height; |
| } |
| |
| Object getPoster() const { return poster.copy(); } |
| bool getShowPoster() const { return showPoster; } |
| |
| bool getUseFloatingWindow() const { return MA.floatingWindow; } |
| void getFloatingWindowSize(int *width, int *height); |
| |
| std::unique_ptr<Movie> copy() const; |
| |
| private: |
| void parseMovie(const Object *movieDict); |
| |
| bool ok; |
| |
| unsigned short rotationAngle; // 0 |
| int width; // Aspect |
| int height; // Aspect |
| |
| Object poster; |
| bool showPoster; |
| |
| GooString *fileName; |
| |
| MovieActivationParameters MA; |
| }; |
| |
| #endif |