/* _______ __ __ __ ______ __ __ _______ __ __ * / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___ /\ / |\/ /\ * / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / / * / / /__ / / // / // / // / / / ___ / // ___ / // /| ' / / * / /_// /\ / /_// / // / // /_/_ / / // / // /\_/ / // / | / / * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ / * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/ * * Copyright (c) 2004, 2005, 2006, 2007 Olof Naessén and Per Larsson * * Js_./ * Per Larsson a.k.a finalman _RqZ{a<^_aa * Olof Naessén a.k.a jansem/yakslem _asww7!uY`> )\a// * _Qhm`] _f "'c 1!5m * Visit: http://guichan.darkbits.org )Qk

ws?a-?' ._/L #' * binary forms, with or without )4d[#7r, . ' )d`)[ * modification, are permitted provided _Q-5'5W..j/?' -?!\)cam' * that the following conditions are met: j<. a J@\ * this list of conditions and the j(]1uw; } int SDLImage::getHeight() const { if (mSurface == NULL) { throw GCN_EXCEPTION("Trying to get the height of a non loaded image."); } return mSurface->h; } Color SDLImage::getPixel(int x, int y) { if (mSurface == NULL) { throw GCN_EXCEPTION("Trying to get a pixel from a non loaded image."); } return SDLgetPixel(mSurface, x, y); } void SDLImage::putPixel(int x, int y, const Color& color) { if (mSurface == NULL) { throw GCN_EXCEPTION("Trying to put a pixel in a non loaded image."); } SDLputPixel(mSurface, x, y, color); } void SDLImage::convertToDisplayFormat() { if (mSurface == NULL) { throw GCN_EXCEPTION("Trying to convert a non loaded image to display format."); } int i; bool hasPink = false; bool hasAlpha = false; for (i = 0; i < mSurface->w * mSurface->h; ++i) { if (((unsigned int*)mSurface->pixels)[i] == SDL_MapRGB(mSurface->format,255,0,255)) { hasPink = true; break; } } for (i = 0; i < mSurface->w * mSurface->h; ++i) { Uint8 r, g, b, a; SDL_GetRGBA(((unsigned int*)mSurface->pixels)[i], mSurface->format, &r, &g, &b, &a); if (a != 255) { hasAlpha = true; break; } } SDL_Surface *tmp; if (hasAlpha) { tmp = SDL_DisplayFormatAlpha(mSurface); SDL_FreeSurface(mSurface); mSurface = NULL; } else { tmp = SDL_DisplayFormat(mSurface); SDL_FreeSurface(mSurface); mSurface = NULL; } if (hasPink) { SDL_SetColorKey(tmp, SDL_SRCCOLORKEY, SDL_MapRGB(tmp->format,255,0,255)); } if (hasAlpha) { SDL_SetAlpha(tmp, SDL_SRCALPHA, 255); } mSurface = tmp; } void SDLImage::free() { SDL_FreeSurface(mSurface); } }