diff options
author | N.N. <matju@users.sourceforge.net> | 2009-10-18 19:53:53 +0000 |
---|---|---|
committer | N.N. <matju@users.sourceforge.net> | 2009-10-18 19:53:53 +0000 |
commit | a1fb215b39535805aa19608185d5e52c0f524b42 (patch) | |
tree | 9d8056ca9837bd03676405dc5202bdc2c041d430 /externals/gridflow/bundled/Base/GemPixUtil.h | |
parent | d6b18994d50479d2f76041387d25db235bbda4cd (diff) |
bye gridflow 0.9.4
svn path=/trunk/; revision=12610
Diffstat (limited to 'externals/gridflow/bundled/Base/GemPixUtil.h')
-rw-r--r-- | externals/gridflow/bundled/Base/GemPixUtil.h | 284 |
1 files changed, 0 insertions, 284 deletions
diff --git a/externals/gridflow/bundled/Base/GemPixUtil.h b/externals/gridflow/bundled/Base/GemPixUtil.h deleted file mode 100644 index 88ef0afc..00000000 --- a/externals/gridflow/bundled/Base/GemPixUtil.h +++ /dev/null @@ -1,284 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - GemPixUtil.h - - contains image functions for pix objects - - part of GEM - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_GEMPIXUTIL_H_ -#define INCLUDE_GEMPIXUTIL_H_ - -#include "Base/GemGL.h" - -#ifdef __APPLE__ -# include <QuickTime/QuickTime.h> -#endif // __APPLE__ - -#include <string.h> -#include <stdlib.h> - - - -/////////////////////////////////////////////////////////////////////////////// -// Color component defines -// -// These should be used to reference the various color channels -/////////////////////////////////////////////////////////////////////////////// - -/* RGBA */ - -#if GL_RGBA_GEM == GL_RGBA -const int chRed = 0; -const int chGreen = 1; -const int chBlue = 2; -const int chAlpha = 3; -#else -const int chAlpha = 0; -const int chRed = 1; -const int chGreen = 2; -const int chBlue = 3; -#endif - - -/* Gray */ -const int chGray = 0; - -/* YUV422 */ -const int chU = 0; -const int chY0 = 1; -const int chV = 2; -const int chY1 = 3; - -// basic helper functions, like CLAMP and powerOfTwo -#include "Base/GemFuncUtil.h" - -// utility functions from PeteHelpers.h -#include "Base/GemPixPete.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - imageStruct - - The basic image structure - ------------------------------------------------------------------*/ -// we now have a class "imageStruct"; -// since i need to compile some of the sources with an older version of Gem -// there is a new define here: -#define IMAGE_CLASS - -struct GEM_EXTERN imageStruct -{ - imageStruct(); - ~imageStruct(); - - void info(); - ////////// - // columns - unsigned char* allocate(size_t size); - unsigned char* allocate(); - - // if we have allocated some space already, only re-allocate when needed. - unsigned char* reallocate(size_t size); - unsigned char* reallocate(); - - // delete the buffer (if it is ours) - void clear(); - - - ////////// - // dimensions of the image - GLint xsize; - GLint ysize; - - ////////// - // (average) width of 1 pixel (LUMINANCE = 1, RGBA = 4, YUV = 2) - GLint csize; - - ////////// - // data type - always GL_UNSIGNED_BYTE (except for OS X) - GLenum type; - - ////////// - // the format - either GL_RGBA, GL_LUMINANCE - // or GL_YCBCR_422_GEM (which is on mac-computers GL_YCBCR_422_APPLE) - GLenum format; - - ////////// - // is this owned by us (? what about underscores ?) - int notowned; - - ////////// - // gets a pixel - /* X,Y are the coordinates - * C is the offset in the interleaved data (like chRed==0 for red) - * you should use chRed instead of 0 (because it might not be 0) - */ - // heck, why are X&Y swapped ?? (JMZ) - inline unsigned char GetPixel(int Y, int X, int C) - { return(data[Y * xsize * csize + X * csize + C]); } - - ////////// - // sets a pixel - /* while X and Y should be clear (coordinates), - * C is the offset (like chRed==0 for red). - * VAL is the value to set. - */ - inline void SetPixel(int Y, int X, int C, unsigned char VAL) - { data[Y * xsize * csize + X * csize + C] = VAL; } - - - ///////// - // gets the color of a pixel - void getRGB(int X, int Y, unsigned char*r, unsigned char*g, unsigned char*b); - void getGrey(int X, int Y, unsigned char*g); - void getYUV(int X, int Y, unsigned char*y, unsigned char*u, unsigned char*v); - - /* following will set the whole image-data to either black or white - * the size of the image-data is NOT xsize*ysize*csize but datasize - * this is mostly slower - * i have put the datasize into private (like pdata) (bad idea?) - */ - void setBlack(); - void setWhite(); - - /* certain formats are bound to certain csizes, - * it's quite annoying to have to think again and again (ok, not much thinking) - * so we just give the format (like GL_LUMINANCE) - * and it will set the image format to this format - * and set and return the correct csize (like 1) - * if no format is given the current format is used - */ - int setCsizeByFormat(int format); - int setCsizeByFormat(); - - - /* various copy functions - * sometimes we want to copy the whole image (including pixel-data), - * but often it is enough to just copy the meta-data (without pixel-data) - * into a new imageStruct - */ - void copy2Image(imageStruct *to); - void copy2ImageStruct(imageStruct *to); // copy the imageStruct (but not the actual data) - /* this is a sort of better copy2Image, - * which only copies the imageStruct-data if it is needed - */ - void refreshImage(imageStruct *to); - - /* inplace swapping Red and Blue channel */ - void swapRedBlue (); - - - /////////////////////////////////////////////////////////////////////////////// - // acquiring data including colour-transformations - // should be accelerated if possible - /* i wonder whether this is the right place to put these routines - * they should be stored somewhere centrally - * (because maybe a lot of objects would like them) (like [pix_rgba]...) - * but it might be better to put them (the actual conversion routines) into - * separate files (a separate library?) - * orgdata points to the actual data in the given format - * the datasize will be read from image.xsize, image.ysize - * the dest-format will be given by image.format - * this is maybe not really clean (the meta-data is stored in the destination, - * while the source has no meta-data of its own) - */ - void convertTo (imageStruct*to, GLenum dest_format=0); - void convertFrom(imageStruct*from, GLenum dest_format=0); - - void fromRGB (unsigned char* orgdata); - void fromRGBA (unsigned char* orgdata); - void fromBGR (unsigned char* orgdata); - void fromBGRA (unsigned char* orgdata); - void fromRGB16 (unsigned char* orgdata); - void fromGray (unsigned char* orgdata); - void fromGray (short* orgdata); - void fromUYVY (unsigned char* orgdata); - void fromYUY2 (unsigned char* orgdata); // YUYV - void fromYVYU (unsigned char* orgdata); - /* planar YUV420: this is rather generic and not really YV12 only */ - void fromYV12 (unsigned char* Y, unsigned char*U, unsigned char*V); - /* assume that the planes are near each other: YVU */ - void fromYV12 (unsigned char* orgdata); - /* assume that the planes are near each other: YVU */ - void fromYU12 (unsigned char* orgdata); - /* overloading the above two in order to accept pdp YV12 packets */ - void fromYV12 (short* Y, short*U, short*V); - void fromYV12 (short* orgdata); - - /* aliases */ - void fromYUV422 (unsigned char* orgdata){fromUYVY(orgdata);} - void fromYUV420P(unsigned char* orgdata){fromYV12(orgdata);} - void fromYUV420P(unsigned char*Y,unsigned char*U,unsigned char*V){fromYV12(Y,U,V);} - - // "data" points to the image. - // the memory could(!) be reserved by this class or someone else - // "notowned" should be set to "1", if "data" points to foreign memory - // "data" is not freed directly, when the destructor is called - unsigned char *data; // the pointer to the data - private: - // "pdata" is the private data, and is the memory reserved by this class - // this data is freed when the destructor is called - unsigned char *pdata; - // "datasize" is the size of data reserved at "pdata" - size_t datasize; - - public: - ////////// - // true if the image is flipped horizontally (origin is upper-left) - // false if the image is openGL-conformant (origin is lower-left) - GLboolean upsidedown; - -}; - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pixBlock - - The pix block structure - ------------------------------------------------------------------*/ -struct GEM_EXTERN pixBlock -{ - pixBlock(); - - ////////// - // the block's image - imageStruct image; - - ////////// - // is this a newimage since last time? - // ie, has it been refreshed - int newimage; - - ////////// - // keeps track of when new films are loaded - // useful for rectangle_textures on OSX - int newfilm; -}; - -/////////////////////////////////////////////////////////////////////////////// -// imageStruct utility functions -// -/////////////////////////////////////////////////////////////////////////////// -////////// -// copies all of the data over and mallocs memory -GEM_EXTERN extern void copy2Image(imageStruct *to, imageStruct *from); - -////////// -// assumes that it only has to refresh the data -GEM_EXTERN extern void refreshImage(imageStruct *to, imageStruct *from); - -GEM_EXTERN extern int getPixFormat(char*); -#endif // GEMPIXUTIL_H_ |