Initial revision
[blender.git] / source / gameengine / GamePlayer / common / GPC_RawImage.h
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  */
32
33 #ifndef __GPC_RAWIMAGE_H__
34 #define __GPC_RAWIMAGE_H__
35
36 /**
37  * This memory resource reads images from the application resources.
38  * Images are expected to be stored as raw RGBA bytes.
39  * You can generate these images by exporting images with an alpha 
40  * channel from Photoshop in RAW format with interleaved channels.
41  */
42
43 class GPC_RawImage
44 {
45 public:
46         GPC_RawImage();
47
48         typedef enum {
49                 alignTopLeft,
50                 alignBottomRight
51         } TImageAlignment;
52
53         /**
54          * Loads the image form the resource into memory.
55          * Converts size of the image and places it with given alignment.
56          * @param hInstApp      The application's instance (location of the resources).
57          * @param lpName        Name of the resource.
58          * @param lpType        Type of the resource.
59          * @param srcWidth      The width of the resource image.
60          * @param srcHeight     The height of the resource image.
61          * @param width         The width of the image created.
62          * @param height        The height of the image created.
63          * @param alignment How the resource image is located in the image created.
64          * @param offsetX       Amount of horzontal offset applied to the resource image.
65          * @param offsetY       Amount of vertical offset applied to the resource image.
66          */
67         virtual bool Load(char *srcName,
68                 int destWidth, int destHeight,
69                 TImageAlignment alignment = alignTopLeft,
70                 int offsetX = 0, int offsetY = 0);
71
72         /**
73          * Returns the width of the image.
74          * @return The width of the image.
75          */
76         virtual int Width() const
77         {
78                 return m_width;
79         }
80
81         /**
82          * Returns the height of the image.
83          * @return The height of the image.
84          */
85         virtual int Height() const
86         {
87                 return m_height;
88         }
89
90         /**
91          * Returns a pointer to the data loaded from the resource.
92          * @return A pointer to the data loaded from the resource.
93          */
94         virtual unsigned char *Data() const
95         {
96                 return m_data;
97         }
98
99         /**
100          * Returns the size of the data loaded from the resource.
101          * @return The size of the  loaded from the resource.
102          */
103         virtual int DataSize() const
104         {
105                 return m_dataSize;
106         }
107
108 protected:
109         /**
110          * Disposes the data stored at the m_data member.
111          */
112 //      virtual void disposeData(void);
113
114 protected:
115         unsigned char *m_data;
116         int m_dataSize;
117         int m_width;
118         int m_height;
119 };
120
121
122 #endif // __GPC_RAWIMAGE_H__