bool Sprite::loadData() { std::cout << "Sprite " << m_filename << std::endl << std::flush; SDL_Surface * image = IMG_Load(m_filename.c_str()); if (image == NULL) { tex_id = Texture::getDefault(); m_w = Texture::getDefaultWidth(); m_h = Texture::getDefaultHeight(); m_pw = (float)m_w / (float)twoN((unsigned int)m_w); m_ph = (float)m_h / (float)twoN((unsigned int)m_h); loadedp = true; return true; } const unsigned int textur_w = twoN(image->w); const unsigned int textur_h = twoN(image->h); const unsigned int sprite_w = image->w; const unsigned int sprite_h = image->h; SDL_Surface * texImage = SDL_CreateRGBSurface(SDL_SWSURFACE, textur_w, textur_h, 32, #if SDL_BYTEORDER == SDL_LIL_ENDIAN 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 #else 0xFF000000, 0x00FF0000, 0x0000FF00, 0x000000FF #endif ); SDL_SetAlpha(image, 0, 0); SDL_Rect dest = { 0, textur_h - sprite_h, sprite_w, sprite_h }; SDL_BlitSurface(image, NULL, texImage, &dest); SDL_FreeSurface(image); image = Texture::imageTransform(texImage); if (image == NULL) { SDL_FreeSurface(texImage); return false; } tex_id = Texture::loadTexture(image, false); m_w = sprite_w; m_h = sprite_h; m_pw = (float)sprite_w / textur_w; m_ph = (float)sprite_h / textur_h; SDL_FreeSurface(image); loadedp = true; return true; }
tr1::shared_ptr<AbstractNumber> E::add(tr1::shared_ptr<AbstractNumber>number){ if (number -> getName() == "E") { if (number -> getSign() == '+' && getSign() == '+') { vector<tr1::shared_ptr<AbstractNumber> > M; tr1::shared_ptr<AbstractNumber> two(new SmartInteger(2)); M.push_back(two); M.push_back(shared_from_this()); tr1::shared_ptr<AbstractNumber> output(new MultExpression(M, '+')); return output; } else if (number -> getSign() == '-' && getSign() == '-') { vector<tr1::shared_ptr<AbstractNumber> > N; tr1::shared_ptr<AbstractNumber> twoN(new SmartInteger(-2)); N.push_back(twoN); tr1::shared_ptr<AbstractNumber> me(new E()); N.push_back(me); tr1::shared_ptr<AbstractNumber> output1(new MultExpression(N, '+')); return output1; } else { tr1::shared_ptr<AbstractNumber> zero(new SmartInteger(0)); return zero; } } else if(number->getName() == "MultExpression" || number->getName() == "SumExpression") { return number->add(shared_from_this()); } vector<tr1::shared_ptr<AbstractNumber> > N; N.push_back(number); N.push_back(shared_from_this()); tr1::shared_ptr<AbstractNumber> output1(new SumExpression(N)); return output1; }
bool Tile::load(const std::string & filename) { // cout << "Tile " << filename << endl << flush; SDL_Surface * image = IMG_Load(filename.c_str()); if (image == NULL) { return false; } const unsigned int textur_w = twoN(image->w); const unsigned int textur_h = twoN(image->h); const unsigned int sprite_w = image->w; unsigned int sprite_h = image->h; SDL_Surface * texImage = SDL_CreateRGBSurface(SDL_SWSURFACE, textur_w, textur_h, 32, #if SDL_BYTEORDER == SDL_LIL_ENDIAN 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 #else 0xFF000000, 0x00FF0000, 0x0000FF00, 0x000000FF #endif ); SDL_SetAlpha(image, 0, 0); SDL_Rect dest = { 0, textur_h - sprite_h, sprite_w, sprite_h }; SDL_BlitSurface(image, NULL, texImage, &dest); SDL_FreeSurface(image); image = Texture::imageTransform(texImage); if (image == NULL) { SDL_FreeSurface(texImage); return false; } tex_id = Texture::loadTexture(image); //m_w = (float)sprite_w; //m_h = (float)sprite_h; if (sprite_w == 70) { tileSize = 1; if (sprite_h > 36) { sprite_h = 36; } } else if (sprite_w == 142) { tileSize = 2; if (sprite_h > 72) { sprite_h = 72; } } else if (sprite_w == 214) { tileSize = 3; if (sprite_h > 108) { sprite_h = 108; } } else if (sprite_w == 430) { tileSize = 6; if (sprite_h > 216) { sprite_h = 216; } } else { std::cout << "Tile size is unknown " << filename << "," << sprite_w << std::endl << std::flush; tileSize = 0; } m_pw = (float)sprite_w / textur_w; m_ph = (float)sprite_h / textur_h; SDL_FreeSurface(image); if (tex_id == -1) { return false; } m_name = filename; return true; }