1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  *
21  */
22 
23 /*
24  * This code is based on Broken Sword 2.5 engine
25  *
26  * Copyright (c) Malte Thiesen, Daniel Queteschiner and Michael Elsdoerfer
27  *
28  * Licensed under GNU GPL v2
29  *
30  */
31 
32 #ifndef SWORD25_ANIMATIONDESCRIPTION_H
33 #define SWORD25_ANIMATIONDESCRIPTION_H
34 
35 #include "sword25/kernel/common.h"
36 #include "sword25/kernel/persistable.h"
37 #include "sword25/gfx/animation.h"
38 
39 namespace Sword25 {
40 
41 class AnimationDescription : public Persistable {
42 protected:
AnimationDescription()43 	AnimationDescription() :
44 		_animationType(Animation::AT_LOOP),
45 		_FPS(10),
46 		_millisPerFrame(0),
47 		_scalingAllowed(true),
48 		_alphaAllowed(true),
49 		_colorModulationAllowed(true)
50 	{}
51 
52 public:
53 	struct Frame {
54 		// Die Hotspot-Angabe bezieht sich auf das ungeflippte Bild!!
55 		int32         hotspotX;
56 		int32         hotspotY;
57 		bool        flipV;
58 		bool        flipH;
59 		Common::String  fileName;
60 		Common::String  action;
61 	};
62 
63 	virtual const Frame    &getFrame(uint index) const = 0;
64 	virtual uint  getFrameCount() const = 0;
65 	virtual void  unlock() = 0;
66 
getAnimationType()67 	Animation::ANIMATION_TYPES   getAnimationType() const {
68 		return _animationType;
69 	}
getFPS()70 	int                             getFPS() const {
71 		return _FPS;
72 	}
getMillisPerFrame()73 	int                             getMillisPerFrame() const {
74 		return _millisPerFrame;
75 	}
isScalingAllowed()76 	bool                            isScalingAllowed() const {
77 		return _scalingAllowed;
78 	}
isAlphaAllowed()79 	bool                            isAlphaAllowed() const {
80 		return _alphaAllowed;
81 	}
isColorModulationAllowed()82 	bool                            isColorModulationAllowed() const {
83 		return _colorModulationAllowed;
84 	}
85 
86 	virtual bool persist(OutputPersistenceBlock &writer);
87 	virtual bool unpersist(InputPersistenceBlock &reader);
88 
89 protected:
90 	Animation::ANIMATION_TYPES   _animationType;
91 	int32                        _FPS;
92 	int32                        _millisPerFrame;
93 	bool                         _scalingAllowed;
94 	bool                         _alphaAllowed;
95 	bool                         _colorModulationAllowed;
96 };
97 
98 } // End of namespace Sword25
99 
100 #endif
101