📄 wg__painter_8cpp-source.html
字号:
00223 <span class="keywordflow">switch</span> (<a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>->format->BytesPerPixel)00224 {00225 <span class="keywordflow">case</span> 1: <span class="comment">// 8 bpp</span>00226 PixelColor = *reinterpret_cast<Uint8*>(PixelOffset);00227 <span class="keywordflow">break</span>;00228 <span class="keywordflow">case</span> 2: <span class="comment">// 16 bpp</span>00229 PixelColor = *reinterpret_cast<Uint16*>(PixelOffset);00230 <span class="keywordflow">break</span>;00231 <span class="keywordflow">case</span> 3: <span class="comment">// 24 bpp</span>00232 {00233 Uint8* pPixelDest = reinterpret_cast<Uint8*>(&PixelColor);00234 Uint8* pPixelSource = reinterpret_cast<Uint8*>(PixelOffset);00235 *pPixelDest = *pPixelSource;00236 *(++pPixelDest) = *(++pPixelSource);00237 *(++pPixelDest) = *(++pPixelSource);00238 <span class="keywordflow">break</span>;00239 }00240 <span class="keywordflow">case</span> 4: <span class="comment">// 32 bpp</span>00241 PixelColor = *reinterpret_cast<Uint32*>(PixelOffset);00242 <span class="keywordflow">break</span>;00243 <span class="keywordflow">default</span>:00244 <span class="keywordflow">throw</span>(<a class="code" href="classwGui_1_1Wg__Ex__SDL.html">Wg_Ex_SDL</a>(<span class="stringliteral">"CPainter::DrawPoint : Unrecognized BytesPerPixel."</span>));00245 <span class="keywordflow">break</span>;00246 }00247 }00248 <span class="keywordflow">return</span> <a class="code" href="classwGui_1_1CRGBColor.html">CRGBColor</a>(&PixelColor, <a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>->format);00249 }00250 00251 <a name="l00252"></a><a class="code" href="classwGui_1_1CPainter.html#b0">00252</a> <span class="keywordtype">void</span> CPainter::LockSurface(<span class="keywordtype">void</span>)00253 {00254 <span class="keywordflow">if</span> (SDL_MUSTLOCK(<a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>))00255 {00256 <span class="keywordflow">if</span> (SDL_LockSurface(<a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>) < 0)00257 {00258 SDL_Delay(10);00259 <span class="keywordflow">if</span> (SDL_LockSurface(<a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>) < 0)00260 {00261 <span class="keywordflow">throw</span>(<a class="code" href="classwGui_1_1Wg__Ex__SDL.html">Wg_Ex_SDL</a>(<span class="stringliteral">"Unable to lock surface."</span>));00262 }00263 }00264 }00265 }00266 00267 <a name="l00268"></a><a class="code" href="classwGui_1_1CPainter.html#b1">00268</a> <span class="keywordtype">void</span> CPainter::UnlockSurface(<span class="keywordtype">void</span>)00269 {00270 <span class="keywordflow">if</span> (SDL_MUSTLOCK(<a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>))00271 {00272 SDL_UnlockSurface(<a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>);00273 }00274 }00275 00276 <a name="l00277"></a><a class="code" href="classwGui_1_1CPainter.html#b2">00277</a> <a class="code" href="classwGui_1_1CRGBColor.html">CRGBColor</a> CPainter::MixColor(<span class="keyword">const</span> <a class="code" href="classwGui_1_1CRGBColor.html">CRGBColor</a>& ColorBase, <span class="keyword">const</span> <a class="code" href="classwGui_1_1CRGBColor.html">CRGBColor</a>& ColorAdd)00278 {00279 <a class="code" href="classwGui_1_1CRGBColor.html">CRGBColor</a> MixedColor(COLOR_TRANSPARENT);00280 <span class="keywordflow">switch</span> (m_PaintMode)00281 {00282 <span class="keywordflow">case</span> <a class="code" href="classwGui_1_1CPainter.html#s6s0">PAINT_IGNORE</a>:00283 MixedColor = ColorBase;00284 <span class="keywordflow">break</span>;00285 <span class="keywordflow">case</span> <a class="code" href="classwGui_1_1CPainter.html#s6s1">PAINT_REPLACE</a>:00286 MixedColor = ColorAdd;00287 <span class="keywordflow">break</span>;00288 <span class="keywordflow">case</span> <a class="code" href="classwGui_1_1CPainter.html#s6s2">PAINT_NORMAL</a>:00289 MixedColor = ColorBase + ColorAdd;00290 <span class="keywordflow">break</span>;00291 <span class="keywordflow">case</span> <a class="code" href="classwGui_1_1CPainter.html#s6s4">PAINT_AND</a>:00292 MixedColor = ColorBase & ColorAdd;00293 <span class="keywordflow">break</span>;00294 <span class="keywordflow">case</span> <a class="code" href="classwGui_1_1CPainter.html#s6s3">PAINT_OR</a>:00295 MixedColor = ColorBase | ColorAdd;00296 <span class="keywordflow">break</span>;00297 <span class="keywordflow">case</span> <a class="code" href="classwGui_1_1CPainter.html#s6s5">PAINT_XOR</a>:00298 MixedColor = ColorBase ^ ColorAdd;00299 <span class="keywordflow">break</span>;00300 }00301 00302 <span class="keywordflow">return</span> MixedColor;00303 }00304 00305 <a name="l00306"></a><a class="code" href="classwGui_1_1CPainter.html#a9">00306</a> <span class="keywordtype">void</span> CPainter::ReplaceColor(<span class="keyword">const</span> <a class="code" href="classwGui_1_1CRGBColor.html">CRGBColor</a>& NewColor, <span class="keyword">const</span> <a class="code" href="classwGui_1_1CRGBColor.html">CRGBColor</a>& OldColor)00307 {00308 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> y = 0; y < <a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>->h; ++y)00309 {00310 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> x = 0; x < <a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>->w; ++x)00311 {00312 <a class="code" href="classwGui_1_1CPoint.html">CPoint</a> point(x, y);00313 <span class="keywordflow">if</span>(<a class="code" href="classwGui_1_1CPainter.html#a8">ReadPoint</a>(point) == OldColor)00314 {00315 <a class="code" href="classwGui_1_1CPainter.html#a7">DrawPoint</a>(point, NewColor);00316 }00317 }00318 }00319 }00320 00321 <a name="l00322"></a><a class="code" href="classwGui_1_1CPainter.html#a10">00322</a> <span class="keywordtype">void</span> CPainter::TransparentColor(<span class="keyword">const</span> <a class="code" href="classwGui_1_1CRGBColor.html">CRGBColor</a>& TransparentColor)00323 {00324 SDL_SetColorKey(<a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>, SDL_SRCCOLORKEY, TransparentColor.<a class="code" href="classwGui_1_1CRGBColor.html#a2">SDLColor</a>(<a class="code" href="classwGui_1_1CPainter.html#n0">m_pSurface</a>->format));00325 }00326 00327 }00328 </pre></div><hr><address style="align: right;"><small>Generated on Sat Oct 25 12:43:24 2003 for wGui by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.18 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -