00001 #ifndef CAIMAGEMANIPULATION_H
00002 #define CAIMAGEMANIPULATION_H
00003
00004 #include <ClanLib/core.h>
00005 #include <ClanLib/display.h>
00006
00007 #define ARAD 57.29577951308232
00008
00009 typedef unsigned int uint;
00010
00011 #ifdef WIN32
00012 #define rint(a) ((int) (a+0.5f))
00013 #endif
00014
00015
00020 class CAImageManipulation {
00021 public:
00022 CAImageManipulation();
00023 ~CAImageManipulation();
00024
00025 static CL_Surface* rotate( CL_Surface* surface, float angle, bool exact=true, bool green=true );
00026 static CL_Surface* flip( CL_Surface* surface, bool horizontal );
00027 static CL_Surface* changeHSV( CL_Surface* surface, int hue, int saturation, int value );
00028
00029 static void clearCanvas( CL_Canvas* canvas );
00030 static void greenToTransparent( CL_Canvas* canvas );
00031
00032 static void rgbToHsv( int r, int g, int b,
00033 int *h, int *s, int *v );
00034 static void hsvToRgb( int h, int s, int v,
00035 int *r, int *g, int *b );
00036
00037 static void getExactColor( unsigned char* data,
00038 int width, int height,
00039 float x, float y,
00040 int *r, int *g, int *b, int *a,
00041 bool exact=true );
00042
00043 static int getCoordinateX( int width, int pos );
00044 static int getCoordinateY( int width, int pos );
00045 static int getDataPosition( int width, int x, int y );
00046 static float getDistance( float x1, float y1, float x2, float y2 );
00047 };
00048
00049 #endif