OGRE  1.9.0
OgreImage.h
Go to the documentation of this file.
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4 (Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2014 Torus Knot Software Ltd
8
9Permission is hereby granted, free of charge, to any person obtaining a copy
10of this software and associated documentation files (the "Software"), to deal
11in the Software without restriction, including without limitation the rights
12to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13copies of the Software, and to permit persons to whom the Software is
14furnished to do so, subject to the following conditions:
15
16The above copyright notice and this permission notice shall be included in
17all copies or substantial portions of the Software.
18
19THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25THE SOFTWARE.
26-----------------------------------------------------------------------------
27*/
28#ifndef _Image_H__
29#define _Image_H__
30
31#include "OgrePrerequisites.h"
32#include "OgreCommon.h"
33#include "OgrePixelFormat.h"
34#include "OgreDataStream.h"
35
36namespace Ogre {
45 {
46 IF_COMPRESSED = 0x00000001,
47 IF_CUBEMAP = 0x00000002,
48 IF_3D_TEXTURE = 0x00000004
49 };
62 {
63 public:
64 typedef Ogre::Box Box;
66 public:
72 Image( const Image &img );
73
76 virtual ~Image();
77
80 Image & operator = ( const Image & img );
81
102
118
165 Image& loadDynamicImage( uchar* data, uint32 width, uint32 height,
166 uint32 depth,
167 PixelFormat format, bool autoDelete = false,
168 size_t numFaces = 1, uint8 numMipMaps = 0);
169
206 uint32 height, PixelFormat format)
207 {
208 return loadDynamicImage(data, width, height, 1, format);
209 }
230 DataStreamPtr& stream,
231 uint32 width, uint32 height, uint32 depth,
232 PixelFormat format,
233 size_t numFaces = 1, size_t numMipMaps = 0);
254 DataStreamPtr& stream,
255 uint32 width, uint32 height,
256 PixelFormat format )
257 {
258 return loadRawData(stream, width, height, 1, format);
259 }
260
276 Image & load( const String& filename, const String& groupName );
277
298 Image & load(DataStreamPtr& stream, const String& type = StringUtil::BLANK );
299
310 Image & loadTwoImagesAsRGBA(const String& rgbFilename, const String& alphaFilename,
311 const String& groupName, PixelFormat format = PF_BYTE_RGBA);
312
328 Image & loadTwoImagesAsRGBA(DataStreamPtr& rgbStream, DataStreamPtr& alphaStream, PixelFormat format = PF_BYTE_RGBA,
329 const String& rgbType = StringUtil::BLANK, const String& alphaType = StringUtil::BLANK);
330
340 Image & combineTwoImagesAsRGBA(const Image& rgb, const Image& alpha, PixelFormat format = PF_BYTE_RGBA);
341
342
352 void save(const String& filename);
353
358 DataStreamPtr encode(const String& formatextension);
359
367
374 const uchar * getData() const;
375
378 size_t getSize() const;
379
383
386 bool hasFlag(const ImageFlags imgFlag) const;
387
390 uint32 getWidth(void) const;
391
394 uint32 getHeight(void) const;
395
398 uint32 getDepth(void) const;
399
403 size_t getNumFaces(void) const;
404
407 size_t getRowSpan(void) const;
408
412
415 uchar getBPP() const;
416
419 bool getHasAlpha() const;
420
426 static void applyGamma( uchar *buffer, Real gamma, size_t size, uchar bpp );
427
433 ColourValue getColourAt(size_t x, size_t y, size_t z) const;
434
440 void setColourAt(ColourValue const &cv, size_t x, size_t y, size_t z);
441
445 PixelBox getPixelBox(size_t face = 0, size_t mipmap = 0) const;
446
449
466 static void scale(const PixelBox &src, const PixelBox &dst, Filter filter = FILTER_BILINEAR);
467
469 void resize(ushort width, ushort height, Filter filter = FILTER_BILINEAR);
470
472 static size_t calculateSize(size_t mipmaps, size_t faces, uint32 width, uint32 height, uint32 depth, PixelFormat format);
473
476
477 protected:
485 size_t mBufSize;
490
493
497
500 };
501
504
508} // namespace
509
510#endif
#define _OgreExport
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Class representing colour.
Class representing an image file.
Definition OgreImage.h:62
uint32 mWidth
The width of the image in pixels.
Definition OgreImage.h:479
uint32 getHeight(void) const
Gets the height of the image in pixels.
static size_t calculateSize(size_t mipmaps, size_t faces, uint32 width, uint32 height, uint32 depth, PixelFormat format)
Static function to calculate size in bytes from the number of mipmaps, faces and the dimensions.
Ogre::Rect Rect
Definition OgreImage.h:65
Image & flipAroundY()
Flips (mirrors) the image around the Y-axis.
uint32 mHeight
The height of the image in pixels.
Definition OgreImage.h:481
void setColourAt(ColourValue const &cv, size_t x, size_t y, size_t z)
Set colour value at a certain location in the image.
int mFlags
Image specific flags.
Definition OgreImage.h:489
uint8 mNumMipmaps
The number of mipmaps the image contains.
Definition OgreImage.h:487
uchar getBPP() const
Returns the number of bits per pixel.
Image & loadDynamicImage(uchar *data, uint32 width, uint32 height, uint32 depth, PixelFormat format, bool autoDelete=false, size_t numFaces=1, uint8 numMipMaps=0)
Stores a pointer to raw data in memory.
size_t mBufSize
The size of the image buffer.
Definition OgreImage.h:485
Image(const Image &img)
Copy-constructor - copies all the data from the target image.
size_t getSize() const
Returns the size of the data buffer.
size_t getNumFaces(void) const
Get the number of faces of the image.
Image()
Standard constructor.
Image & load(const String &filename, const String &groupName)
Loads an image file.
Image & flipAroundX()
Flips (mirrors) the image around the X-axis.
Image & combineTwoImagesAsRGBA(const Image &rgb, const Image &alpha, PixelFormat format=PF_BYTE_RGBA)
Utility method to combine 2 separate images into this one, with the first image source supplying the ...
void save(const String &filename)
Save the image as a file.
uint32 getWidth(void) const
Gets the width of the image in pixels.
void resize(ushort width, ushort height, Filter filter=FILTER_BILINEAR)
Resize a 2D image, applying the appropriate filter.
PixelFormat mFormat
The pixel format of the image.
Definition OgreImage.h:492
uint32 mDepth
The depth of the image.
Definition OgreImage.h:483
bool mAutoDelete
A bool to determine if we delete the buffer or the calling app does.
Definition OgreImage.h:499
ColourValue getColourAt(size_t x, size_t y, size_t z) const
Get colour value from a certain location in the image.
bool hasFlag(const ImageFlags imgFlag) const
Returns true if the image has the appropriate flag set.
Image & loadTwoImagesAsRGBA(DataStreamPtr &rgbStream, DataStreamPtr &alphaStream, PixelFormat format=PF_BYTE_RGBA, const String &rgbType=StringUtil::BLANK, const String &alphaType=StringUtil::BLANK)
Utility method to combine 2 separate images into this one, with the first image source supplying the ...
uchar * getData(void)
Returns a pointer to the internal image buffer.
Image & loadTwoImagesAsRGBA(const String &rgbFilename, const String &alphaFilename, const String &groupName, PixelFormat format=PF_BYTE_RGBA)
Utility method to combine 2 separate images into this one, with the first image source supplying the ...
Image & loadDynamicImage(uchar *data, uint32 width, uint32 height, PixelFormat format)
Stores a pointer to raw data in memory.
Definition OgreImage.h:205
Image & loadRawData(DataStreamPtr &stream, uint32 width, uint32 height, uint32 depth, PixelFormat format, size_t numFaces=1, size_t numMipMaps=0)
Loads raw data from a stream.
bool getHasAlpha() const
Returns true if the image has an alpha component.
uchar * mBuffer
Definition OgreImage.h:496
Image & loadRawData(DataStreamPtr &stream, uint32 width, uint32 height, PixelFormat format)
Loads raw data from a stream.
Definition OgreImage.h:253
Image & load(DataStreamPtr &stream, const String &type=StringUtil::BLANK)
Loads an image file from a stream.
uint32 getDepth(void) const
Gets the depth of the image.
PixelFormat getFormat() const
Returns the image format.
static void applyGamma(uchar *buffer, Real gamma, size_t size, uchar bpp)
Does gamma adjustment.
uchar mPixelSize
The number of bytes per pixel.
Definition OgreImage.h:495
static String getFileExtFromMagic(DataStreamPtr stream)
Static function to get an image type string from a stream via magic numbers.
const uchar * getData() const
Returns a const pointer to the internal image buffer.
void freeMemory()
Delete all the memory held by this image, if owned by this image (not dynamic)
Ogre::Box Box
Definition OgreImage.h:64
virtual ~Image()
Standard destructor.
DataStreamPtr encode(const String &formatextension)
Encode the image and return a stream to the data.
static void scale(const PixelBox &src, const PixelBox &dst, Filter filter=FILTER_BILINEAR)
Scale a 1D, 2D or 3D image volume.
uint8 getNumMipmaps() const
Returns the number of mipmaps contained in the image.
size_t getRowSpan(void) const
Gets the physical width in bytes of each row of pixels.
PixelBox getPixelBox(size_t face=0, size_t mipmap=0) const
Get a PixelBox encapsulating the image data of a mipmap.
A primitive describing a volume (3D), image (2D) or line (1D) of pixels in memory.
vector< constImage * >::type ConstImagePtrList
Definition OgreImage.h:503
PixelFormat
The pixel format used for images, textures, and render surfaces.
ImageFlags
Definition OgreImage.h:45
vector< Image * >::type ImagePtrList
Definition OgreImage.h:502
@ IF_3D_TEXTURE
Definition OgreImage.h:48
@ IF_COMPRESSED
Definition OgreImage.h:46
@ IF_CUBEMAP
Definition OgreImage.h:47
unsigned char uchar
In order to avoid finger-aches :)
unsigned char uint8
float Real
Software floating point type.
unsigned int uint32
_StringBase String
unsigned short ushort
Structure used to define a box in a 3-D integer space.
Definition OgreCommon.h:660
std::vector< T, A > type