Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials
IImage.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2010 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 #ifndef __I_IMAGE_H_INCLUDED__
6 #define __I_IMAGE_H_INCLUDED__
7 
8 #include "IReferenceCounted.h"
9 #include "position2d.h"
10 #include "rect.h"
11 #include "SColor.h"
12 
13 namespace irr
14 {
15 namespace video
16 {
17 
19 
21 {
23 
27 
30 
33 
36 
39 
41 
44 
47 
50 
53 
56 
59 };
60 
61 
63 
66 class IImage : public virtual IReferenceCounted
67 {
68 public:
69 
71 
76  virtual void* lock() = 0;
77 
79 
81  virtual void unlock() = 0;
82 
84  virtual const core::dimension2d<u32>& getDimension() const = 0;
85 
87  virtual u32 getBitsPerPixel() const = 0;
88 
90  virtual u32 getBytesPerPixel() const = 0;
91 
93  virtual u32 getImageDataSizeInBytes() const = 0;
94 
96  virtual u32 getImageDataSizeInPixels() const = 0;
97 
99  virtual SColor getPixel(u32 x, u32 y) const = 0;
100 
102  virtual void setPixel(u32 x, u32 y, const SColor &color, bool blend = false ) = 0;
103 
105  virtual ECOLOR_FORMAT getColorFormat() const = 0;
106 
108  virtual u32 getRedMask() const = 0;
109 
111  virtual u32 getGreenMask() const = 0;
112 
114  virtual u32 getBlueMask() const = 0;
115 
117  virtual u32 getAlphaMask() const = 0;
118 
120  virtual u32 getPitch() const =0;
121 
123  virtual void copyToScaling(void* target, u32 width, u32 height, ECOLOR_FORMAT format=ECF_A8R8G8B8, u32 pitch=0) =0;
124 
126  virtual void copyToScaling(IImage* target) =0;
127 
129  virtual void copyTo(IImage* target, const core::position2d<s32>& pos=core::position2d<s32>(0,0)) =0;
130 
132  virtual void copyTo(IImage* target, const core::position2d<s32>& pos, const core::rect<s32>& sourceRect, const core::rect<s32>* clipRect=0) =0;
133 
135  virtual void copyToWithAlpha(IImage* target, const core::position2d<s32>& pos,
136  const core::rect<s32>& sourceRect, const SColor &color,
137  const core::rect<s32>* clipRect = 0) =0;
138 
140  virtual void copyToScalingBoxFilter(IImage* target, s32 bias = 0, bool blend = false) = 0;
141 
143  virtual void fill(const SColor &color) =0;
144 
147  {
148  switch(format)
149  {
150  case ECF_A1R5G5B5:
151  return 16;
152  case ECF_R5G6B5:
153  return 16;
154  case ECF_R8G8B8:
155  return 24;
156  case ECF_A8R8G8B8:
157  return 32;
158  case ECF_R16F:
159  return 16;
160  case ECF_G16R16F:
161  return 32;
162  case ECF_A16B16G16R16F:
163  return 64;
164  case ECF_R32F:
165  return 32;
166  case ECF_G32R32F:
167  return 64;
168  case ECF_A32B32G32R32F:
169  return 128;
170  default:
171  return 0;
172  }
173  }
174 
176 
179  static bool isRenderTargetOnlyFormat(const ECOLOR_FORMAT format)
180  {
181  switch(format)
182  {
183  case ECF_A1R5G5B5:
184  case ECF_R5G6B5:
185  case ECF_R8G8B8:
186  case ECF_A8R8G8B8:
187  return false;
188  default:
189  return true;
190  }
191  }
192 
193 };
194 
195 } // end namespace video
196 } // end namespace irr
197 
198 #endif
199 

The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Tue Jun 5 2012 17:57:12 by Doxygen (1.8.1)