File: Sprite.h

package info (click to toggle)
between 6%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid
  • size: 3,524 kB
  • sloc: cpp: 28,110; php: 718; ansic: 638; objc: 245; sh: 236; makefile: 102; perl: 67
file content (96 lines) | stat: -rw-r--r-- 2,171 bytes parent folder | download | duplicates (3)
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
#ifndef SPRITE_INCLUDED
#define SPRITE_INCLUDED


#include "minorGems/graphics/openGL/SingleTextureGL.h"
#include "minorGems/graphics/Color.h"


#include "minorGems/math/geometry/Vector3D.h"

#include <stdlib.h>



class Sprite{
    public:
        
        // transparent color for RGB images can be taken from lower-left
        // corner pixel
        // lower-left corner ignored for RGBA images
        // image split vertically into inNumFrames of equal size
        Sprite( const char *inImageFileName,
                char inTransparentLowerLeftCorner = false,
                int inNumFrames = 1,
                int inNumPages = 1 );
        
        
        Sprite( Image *inImage,
                char inTransparentLowerLeftCorner = false,
                int inNumFrames = 1,
                int inNumPages = 1 );
        

        ~Sprite();
        

        void draw( int inFrame,
                   double inRotation, Vector3D *inPosition,
                   double inScale = 1,
                   double inFadeFactor = 1,
                   Color *inColor = NULL );
        

        int getNumFrames() {
            return mNumFrames;
            }
        


        void setFlipHorizontal( char inFlip ) {
            mFlipHorizontal = inFlip;
            }
        
        // used to adjust horizontal center point, in pixels
        void setHorizontalOffset( double inOffset ) {
            mHorizontalOffset = inOffset;
            }
        

        void setPage( int inPage ) {
            mCurrentPage = inPage;
            }


        int getPage() {
            return mCurrentPage;
            }
        
        

    protected:
        SingleTextureGL *mTexture;
        
        int mNumFrames;
        int mNumPages;
        
        double mBaseScaleX;
        double mBaseScaleY;

        char mFlipHorizontal;
        double mHorizontalOffset;
        
        int mCurrentPage;
        

        void initTexture( Image *inImage,
                          char inTransparentLowerLeftCorner = false,
                          int inNumFrames = 1,
                          int inNumPages = 1 );
        
        
    };



#endif