<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>sdlmm_basesurface.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Generated by Doxygen 1.2.8.1 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="namespacemembers.html">Namespace Members</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>sdlmm_basesurface.h</h1><a href="sdlmm__basesurface_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">/*</font> 00002 <font class="comment"> * SDmm - a C++ wrapper for SDL and related libraries</font> 00003 <font class="comment"> * Copyright © 2001 David Hedbor <david@hedbor.org></font> 00004 <font class="comment"> * </font> 00005 <font class="comment"> * This program is free software; you can redistribute it and/or</font> 00006 <font class="comment"> * modify it under the terms of the GNU General Public License as</font> 00007 <font class="comment"> * published by the Free Software Foundation; either version 2 of the</font> 00008 <font class="comment"> * License, or (at your option) any later version.</font> 00009 <font class="comment"> * </font> 00010 <font class="comment"> * This program is distributed in the hope that it will be useful, but</font> 00011 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font> 00012 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font> 00013 <font class="comment"> * General Public License for more details.</font> 00014 <font class="comment"> * </font> 00015 <font class="comment"> * You should have received a copy of the GNU General Public License</font> 00016 <font class="comment"> * along with this program; if not, write to the Free Software</font> 00017 <font class="comment"> * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</font> 00018 <font class="comment"> *</font> 00019 <font class="comment"> */</font> 00020 00021 00022 <font class="preprocessor">#ifndef SDLMM_BASESURFACE_H</font> 00023 <font class="preprocessor"></font><font class="preprocessor">#define SDLMM_BASESURFACE_H</font> 00024 <font class="preprocessor"></font><font class="preprocessor">#include "<a class="code" href="sdlmm__config_8h.html">sdlmm_config.h</a>"</font> 00025 <font class="preprocessor">#include "<a class="code" href="sdlmm__spoint_8h.html">sdlmm_spoint.h</a>"</font> 00026 <font class="preprocessor">#include "<a class="code" href="sdlmm__srect_8h.html">sdlmm_srect.h</a>"</font> 00027 <font class="preprocessor">#include "<a class="code" href="sdlmm__color_8h.html">sdlmm_color.h</a>"</font> 00028 <font class="preprocessor">#include "<a class="code" href="sdlmm__pixelformat_8h.html">sdlmm_pixelformat.h</a>"</font> 00029 <font class="preprocessor">#include <string></font> 00030 00031 <font class="keyword">namespace </font>SDLmm { 00033 <a name="l00043"></a><a class="code" href="classSDLmm_1_1BaseSurface.html">00043</a> <font class="keyword">class </font>BaseSurface { 00044 00045 <font class="keyword">protected</font>: <a name="l00047"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#n0">00047</a> SDL_Surface *me; <a name="l00048"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#b0">00048</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#b0">SetSurface</a>(SDL_Surface *surface)<font class="keyword"> </font>{ 00049 <font class="keywordflow">if</font>(me) { 00050 SDL_FreeSurface(me); 00051 } 00052 me = surface; 00053 } 00054 00056 <a name="l00063"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#b1">00063</a> <font class="keyword">explicit</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#b1">BaseSurface</a>(SDL_Surface *surface) 00064 : me(surface) { 00065 } 00066 <a name="l00067"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#b2">00067</a> <a class="code" href="classSDLmm_1_1BaseSurface.html#b1">BaseSurface</a>(<font class="keyword">const</font> BaseSurface& other) 00068 : me(other.me) { 00069 } 00070 <a name="l00071"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#b3">00071</a> BaseSurface &<a class="code" href="classSDLmm_1_1BaseSurface.html#b3">operator=</a>(<font class="keyword">const</font> BaseSurface& other)<font class="keyword"> </font>{ 00072 <font class="keywordflow">if</font>(<font class="keyword">this</font> != &other) 00073 <a class="code" href="classSDLmm_1_1BaseSurface.html#b0">SetSurface</a>(other.me); 00074 <font class="keywordflow">return</font> *<font class="keyword">this</font>; 00075 } 00076 00077 <font class="keyword">public</font>: 00078 <a name="l00080"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a0">00080</a> <font class="keyword">virtual</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a0">~BaseSurface</a>()<font class="keyword"> </font>{ 00081 <font class="keywordflow">if</font>(me) { 00082 SDL_FreeSurface(me); 00083 } 00084 } 00085 <a name="l00086"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a1">00086</a> SDL_Surface *<a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()<font class="keyword"> </font>{ 00087 <a class="code" href="sdlmm__config_8h.html#a0">ASSERT</a>(me); 00088 <font class="keywordflow">return</font> me; 00089 } 00090 <a name="l00091"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a2">00091</a> <font class="keyword">const</font> SDL_Surface *<a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()<font class="keyword"> const </font>{ 00092 <a class="code" href="sdlmm__config_8h.html#a0">ASSERT</a>(me); 00093 <font class="keywordflow">return</font> me; 00094 } 00095 00098 <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a3">Lock</a>(); 00099 00101 <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a4">Unlock</a>(); 00102 00104 00105 00106 <a name="l00107"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a5">00107</a> <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a5">valid</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> me != 0; } 00108 <a name="l00110"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a6">00110</a> Uint32 <a class="code" href="classSDLmm_1_1BaseSurface.html#a6">flags</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()->flags; } 00111 <a name="l00113"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a7">00113</a> <font class="keyword">const</font> PixelFormat <a class="code" href="classSDLmm_1_1BaseSurface.html#a7">GetPixelFormat</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> PixelFormat(<a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()->format); } <a name="l00114"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a8">00114</a> PixelFormat <a class="code" href="classSDLmm_1_1BaseSurface.html#a7">GetPixelFormat</a>()<font class="keyword"> </font>{ <font class="keywordflow">return</font> PixelFormat(<a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()->format); } 00115 <a name="l00117"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a9">00117</a> <font class="keywordtype">int</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a9">w</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()->w; } 00118 <a name="l00120"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a10">00120</a> <font class="keywordtype">int</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a10">h</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()->h; } 00121 <a name="l00123"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a11">00123</a> Uint16 <a class="code" href="classSDLmm_1_1BaseSurface.html#a11">pitch</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()->pitch; } 00124 <a name="l00126"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a12">00126</a> <font class="keyword">const</font> SRect <a class="code" href="classSDLmm_1_1BaseSurface.html#a12">clip_rect</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> SRect(<a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()->clip_rect); } 00127 00129 <a name="l00132"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a13">00132</a> <font class="keywordtype">void</font> *<a class="code" href="classSDLmm_1_1BaseSurface.html#a13">pixels</a>()<font class="keyword"> </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()->pixels; } 00133 00135 <a name="l00138"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a14">00138</a> <font class="keyword">const</font> <font class="keywordtype">void</font> *<a class="code" href="classSDLmm_1_1BaseSurface.html#a13">pixels</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()->pixels; } 00139 <a name="l00141"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a15">00141</a> <font class="keyword">struct </font>private_hwdata *hwdata() const { <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a1">GetSurface</a>()->hwdata; } 00143 00145 00148 <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a16">SetPixel</a>(<font class="keywordtype">int</font> x, <font class="keywordtype">int</font> y, Color color); 00149 00151 00155 <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a17">SetPixel1</a>(<font class="keywordtype">int</font> x, <font class="keywordtype">int</font> y, Color color); 00156 00158 00162 <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a18">SetPixel2</a>(<font class="keywordtype">int</font> x, <font class="keywordtype">int</font> y, Color color); 00163 00165 00169 <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a19">SetPixel3</a>(<font class="keywordtype">int</font> x, <font class="keywordtype">int</font> y, Color color); 00170 00172 00176 <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a20">SetPixel4</a>(<font class="keywordtype">int</font> x, <font class="keywordtype">int</font> y, Color color); 00177 00179 <a name="l00182"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a21">00182</a> <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a16">SetPixel</a>(<font class="keyword">const</font> SRect& point, Color color)<font class="keyword"> </font>{ <a class="code" href="classSDLmm_1_1BaseSurface.html#a16">SetPixel</a>(point.x, point.y, color); } 00183 00185 00188 Color <a class="code" href="classSDLmm_1_1BaseSurface.html#a22">GetPixel</a>(<font class="keywordtype">int</font> x, <font class="keywordtype">int</font> y) <font class="keyword">const</font>; 00189 00191 <a name="l00194"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a23">00194</a> Color <a class="code" href="classSDLmm_1_1BaseSurface.html#a22">GetPixel</a>(<font class="keyword">const</font> SRect& point)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a22">GetPixel</a>(point.x, point.y); } 00195 00198 00207 <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a24">SetColorKey</a>(Uint32 flag, Color key); 00208 00210 00232 <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a25">SetAlpha</a>(Uint32 flag, Uint8 alpha); 00233 00235 00236 00237 00241 <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a26">ResetClipRect</a>(); 00242 00244 00255 <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a27">SetClipRect</a>(<font class="keyword">const</font> <a class="code" href="structSDL__Rect.html">SDL_Rect</a>& rect); 00256 00258 00267 <font class="keywordtype">void</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a28">GetClipRect</a>(<a class="code" href="structSDL__Rect.html">SDL_Rect</a>& rect) <font class="keyword">const</font>; 00269 00271 00272 00273 00287 <font class="keywordtype">int</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a29">Blit</a>(<font class="keyword">const</font> BaseSurface& src); 00288 00291 00309 <font class="keywordtype">int</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a29">Blit</a>(<font class="keyword">const</font> BaseSurface& src, <a class="code" href="structSDL__Rect.html">SDL_Rect</a>& dstrect); 00310 00313 <a name="l00330"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a31">00330</a> <font class="keywordtype">int</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a29">Blit</a>(<font class="keyword">const</font> BaseSurface& src, <font class="keyword">const</font> SPoint& dstpoint, <a class="code" href="structSDL__Rect.html">SDL_Rect</a>& dstrect)<font class="keyword"> </font>{ dstrect.x = dstpoint.x; dstrect.y = dstpoint.y; <a class="code" href="classSDLmm_1_1BaseSurface.html#a29">Blit</a>(src, dstrect); } 00331 00334 00349 <font class="keywordtype">int</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a29">Blit</a>(<font class="keyword">const</font> BaseSurface& src, <font class="keyword">const</font> SPoint& dstpoint); 00350 00353 00374 <font class="keywordtype">int</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a29">Blit</a>(<font class="keyword">const</font> BaseSurface& src, <font class="keyword">const</font> <a class="code" href="structSDL__Rect.html">SDL_Rect</a>& srcrect, <a class="code" href="structSDL__Rect.html">SDL_Rect</a>& dstrect); 00375 00378 <a name="l00398"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a34">00398</a> <font class="keywordtype">int</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a29">Blit</a>(<font class="keyword">const</font> BaseSurface& src, <font class="keyword">const</font> <a class="code" href="structSDL__Rect.html">SDL_Rect</a>& srcrect, <font class="keyword">const</font> SPoint& dstpoint, <a class="code" href="structSDL__Rect.html">SDL_Rect</a>& dstrect)<font class="keyword"> </font>{ dstrect.x = dstpoint.x; dstrect.y = dstpoint.y; <a class="code" href="classSDLmm_1_1BaseSurface.html#a29">Blit</a>(src, srcrect, dstrect); } 00399 00402 00419 <font class="keywordtype">int</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a29">Blit</a>(<font class="keyword">const</font> BaseSurface& src, <font class="keyword">const</font> <a class="code" href="structSDL__Rect.html">SDL_Rect</a>& srcrect, <font class="keyword">const</font> SPoint& dstpoint); 00420 00422 00428 <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a36">Fill</a>(Color color); 00429 00431 <a name="l00437"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a37">00437</a> <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a36">Fill</a>(Uint8 r, Uint8 g, Uint8 b)<font class="keyword"> </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a36">Fill</a>(<a class="code" href="classSDLmm_1_1BaseSurface.html#a7">GetPixelFormat</a>().MapRGB(r, g, b)); } 00438 00440 <a name="l00447"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a38">00447</a> <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a36">Fill</a>(Uint8 r, Uint8 g, Uint8 b, Uint8 a)<font class="keyword"> </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a36">Fill</a>(<a class="code" href="classSDLmm_1_1BaseSurface.html#a7">GetPixelFormat</a>().MapRGBA(r, g, b, a)); } 00448 00450 00459 <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a39">FillRect</a>(<a class="code" href="structSDL__Rect.html">SDL_Rect</a>& dstrect, Color color); 00460 00462 <a name="l00471"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a40">00471</a> <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a39">FillRect</a>(<a class="code" href="structSDL__Rect.html">SDL_Rect</a>& dstrect, Uint8 r, Uint8 g, Uint8 b)<font class="keyword"> </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a39">FillRect</a>(dstrect, <a class="code" href="classSDLmm_1_1BaseSurface.html#a7">GetPixelFormat</a>().MapRGB(r, g, b)); } 00472 00474 <a name="l00484"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a41">00484</a> <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a39">FillRect</a>(<a class="code" href="structSDL__Rect.html">SDL_Rect</a>& dstrect, Uint8 r, Uint8 g, Uint8 b, Uint8 a)<font class="keyword"> </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a39">FillRect</a>(dstrect, <a class="code" href="classSDLmm_1_1BaseSurface.html#a7">GetPixelFormat</a>().MapRGBA(r, g, b, a)); } 00485 00487 00489 00508 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a42">SetDisplayFormat</a>() = 0; 00509 00511 00530 <font class="keyword">virtual</font> <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a43">SetDisplayFormatAlpha</a>() = 0; 00531 00533 00537 <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a44">SaveBMP</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *file) <font class="keyword">const</font>; 00538 00540 <a name="l00544"></a><a class="code" href="classSDLmm_1_1BaseSurface.html#a45">00544</a> <font class="keywordtype">bool</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a44">SaveBMP</a>(<font class="keyword">const</font> std::string& file)<font class="keyword"> const </font>{ <font class="keywordflow">return</font> <a class="code" href="classSDLmm_1_1BaseSurface.html#a44">SaveBMP</a>(file.c_str()); } 00545 00546 }; 00547 } 00548 00549 <font class="preprocessor">#endif // SDLMM_BASESURFACE_H</font> 00550 <font class="preprocessor"></font> </pre></div><hr> <table cellspacing=10 cellpadding=0 border=0 width=100%> <tr valign=middle><td><font size=-1>Documentation automatically generated by <a href="http://www.stack.nl/~dimitri/doxygen/"><img border=0 align=center src="doxygen.gif" alt="doxygen"></a> written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>.</font></td> <td align=right><font size=-1>Project hosted at <br><a href="http://sourceforge.net"><img align=middle src="http://sourceforge.net/sflogo.php?group_id=25445&type=1" width="88" height="31" border="0" alt="Hosted by SourceForge"></a></font></td></tr></table>