fastdo  0.5.12
eiengd.hpp
浏览该文件的文档.
1 #ifndef __EIENGD_HPP__
2 #define __EIENGD_HPP__
3 
4 #include "winux.hpp"
5 
7 namespace eiengd
8 {
9 #ifdef EIENGD_DLL_USE
10  #if defined(_MSC_VER) || defined(WIN32)
11  #pragma warning( disable: 4251 )
12  #ifdef EIENGD_DLL_EXPORTS
13  #define EIENGD_DLL __declspec(dllexport)
14  #else
15  #define EIENGD_DLL __declspec(dllimport)
16  #endif
17 
18  #define EIENGD_API __stdcall
19  #else
20  #define EIENGD_DLL
21  #define EIENGD_API
22  #endif
23 #else
24  #define EIENGD_DLL
25  #define EIENGD_API
26 #endif
27 
28 #define EIENGD_FUNC_DECL(ret) EIENGD_DLL ret EIENGD_API
29 #define EIENGD_FUNC_IMPL(ret) ret EIENGD_API
30 
33 {
34 public:
35  enum
36  {
39  gdeUnsupportedType
40  };
41 
42  GdError( int errNo, winux::AnsiString const & err ) throw() : winux::Error( errNo, err ) { }
43 };
44 
45 struct Point
46 {
47  int x;
48  int y;
49 
50  Point( int x = 0, int y = 0 ): x(x), y(y)
51  {
52  }
53 };
54 
57 {
58 private:
60 public:
61  GdInit();
62  ~GdInit();
64 };
65 
66 class Image;
67 
70 {
71 private:
72  Image * _im;
74 
75 public:
76  Color( Image & im );
77 
85  Color( Image & im, int red, int green, int blue, winux::Mixed const & mixed = winux::Mixed() );
86 
87  ~Color();
88 
95  Color & alloc( int red, int green, int blue, winux::Mixed const & mixed = winux::Mixed() );
96 
97  Color & transparent( int red, int green, int blue )
98  {
99  return this->alloc( red, green, blue, true );
100  }
101 
102  Color & alpha( int red, int green, int blue, int alpha = 0 )
103  {
104  return this->alloc( red, green, blue, alpha );
105  }
106 
107  void dealloc();
108 
109  Color( Color const & other );
110 
111  Color & operator = ( Color const & other );
112 
113  friend class Graphics;
114 };
115 
118 {
119 private:
121 
122 public:
124  Image();
125 
127  Image( int width, int height, bool isTrueColor = true );
128 
130  Image( winux::String const & filename );
131 
132  ~Image();
133 
135  void create( int width, int height );
136 
138  void createTrueColor( int width, int height );
139 
140  void createFromFile( winux::String const & filename );
141 
145  bool output( winux::String const & filename, winux::String const & type = "" );
146 
150  bool output( winux::Buffer * buf, winux::String const & type = "" );
151 
152  void destroy();
153 
154  void copy( Image & srcImg, int srcX, int srcY, int srcWidth, int srcHeight, int x, int y );
155 
156  void copyResized( Image & srcImg, int srcX, int srcY, int srcWidth, int srcHeight, int x, int y, int width, int height );
157 
158  void copyResampled( Image & srcImg, int srcX, int srcY, int srcWidth, int srcHeight, int x, int y, int width, int height );
159 
160  void debug();
161 
163  Color color( int red, int green, int blue, winux::Mixed const & mixed = winux::Mixed() );
164 
165  // attributes
166 
168  int getWidth() const;
169 
171  int getHeight() const;
172 
174  winux::String getType() const;
175 
179  void setJpegQuality( long quality );
180 
184  void saveAlpha( bool isSave );
185 
187  void alphaBlending( bool isBlend );
188 
190  int colorAt( int x, int y ) const;
191 
193  int colorsForIndex( int index ) const;
194 
196  int colorsTotal() const;
197 
199 
200  friend class Color;
201  friend class Graphics;
202 };
203 
205 class EIENGD_DLL Graphics
206 {
207 private:
208  Image * _im;
210 
211 public:
212  Graphics( Image & im );
213 
214  ~Graphics();
215 
221  void fill( int x, int y, Color const & color );
222 
223  void filledRectangle( int x, int y, int width, int height, Color const & color );
224 
225  void arc( int centerX, int centerY, int width, int height, int start, int end, Color const & color );
226 
227  void line( int x1, int y1, int x2, int y2, Color const & color );
228 
229  void rectangle( int x, int y, int width, int height, Color const & color );
230 
231  void ellipse( int centerX, int centerY, int width, int height, Color const & color );
232 
233  void filledEllipse( int centerX, int centerY, int width, int height, Color const & color );
234 
245  void ttfTextOut(
246  double size,
247  double angle,
248  int x,
249  int y,
250  Color const & color,
251  winux::String const & fontFile,
252  winux::String const & text,
253  Point * boxOut = NULL
254  );
255 
259  void ttfBBox( double size, double angle, winux::String const & fontFile, winux::String const & text, Point boxOut[4] ) const;
260 
262  void stringOut( int fontInx, int x, int y, winux::String const & str, Color const & color );
263 
270  Color color( int red, int green, int blue, winux::Mixed const & mixed = winux::Mixed() );
271 
272  DISABLE_OBJECT_COPY(Graphics)
273 };
274 
276 EIENGD_FUNC_DECL(winux::Buffer) EncryptDataToPng( void const * data, winux::uint size );
285 
286 }
287 
288 #endif //__EIENGD_HPP__
绘画类
Definition: eiengd.hpp:205
winux::Buffer EncryptAnsiToPng(winux::AnsiString const &data)
加密数据成一个PNG图片
winux::Buffer EncryptBufferToPng(winux::Buffer const &data)
加密数据成一个PNG图片
winux::Buffer DecryptPngToBuffer(winux::Buffer const &pngData)
解密PNG图片为数据
std::basic_string< char > AnsiString
Definition: utilities.hpp:165
gd错误
Definition: eiengd.hpp:32
颜色类
Definition: eiengd.hpp:69
GdError(int errNo, winux::AnsiString const &err)
Definition: eiengd.hpp:42
Color & transparent(int red, int green, int blue)
Definition: eiengd.hpp:97
图片类
Definition: eiengd.hpp:117
#define DISABLE_OBJECT_COPY(clsname)
Definition: utilities.hpp:78
#define EIENGD_FUNC_DECL(ret)
Definition: eiengd.hpp:28
图形库,提供简单的图片操作和绘图功能
Definition: eiengd.hpp:7
缓冲区,表示内存中一块2进制数据(利用malloc/realloc进行内存分配)
Definition: utilities.hpp:436
Point(int x=0, int y=0)
Definition: eiengd.hpp:50
Color & alpha(int red, int green, int blue, int alpha=0)
Definition: eiengd.hpp:102
unsigned int uint
Definition: utilities.hpp:128
winux::AnsiString DecryptPngToAnsi(winux::Buffer const &pngData)
解密PNG图片为数据
winux::Buffer EncryptDataToPng(void const *data, winux::uint size)
加密数据成一个PNG图片
GD初始化
Definition: eiengd.hpp:56
混合体,能表示多种类型的值
Definition: utilities.hpp:586
#define EIENGD_DLL
Definition: eiengd.hpp:24
错误类
Definition: utilities.hpp:413
std::basic_string< tchar > String
Definition: utilities.hpp:162