mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-22 09:49:11 +00:00
103 lines
3.3 KiB
C++
103 lines
3.3 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* This file is based on WME Lite.
|
|
* http://dead-code.org/redir.php?target=wmelite
|
|
* Copyright (c) 2011 Jan Nedoma
|
|
*/
|
|
|
|
#include "FontGlyphCache.h"
|
|
|
|
namespace WinterMute {
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
FontGlyphCache::FontGlyphCache() {
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
FontGlyphCache::~FontGlyphCache() {
|
|
GlyphInfoMap::iterator it;
|
|
|
|
for (it = _glyphs.begin(); it != _glyphs.end(); ++it) {
|
|
delete it->_value;
|
|
it->_value = NULL;
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
bool FontGlyphCache::HasGlyph(wchar_t ch) {
|
|
return (_glyphs.find(ch) != _glyphs.end());
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void FontGlyphCache::Initialize() {
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
GlyphInfo *FontGlyphCache::GetGlyph(wchar_t ch) {
|
|
GlyphInfoMap::const_iterator it;
|
|
it = _glyphs.find(ch);
|
|
if (it == _glyphs.end()) return NULL;
|
|
|
|
return it->_value;
|
|
}
|
|
/*
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void FontGlyphCache::AddGlyph(wchar_t ch, int glyphIndex, FT_GlyphSlot glyphSlot, size_t width, size_t height, byte *pixels, size_t stride) {
|
|
if (stride == 0) stride = width;
|
|
|
|
_glyphs[ch] = new GlyphInfo(glyphIndex);
|
|
_glyphs[ch]->SetGlyphInfo(glyphSlot->advance.x / 64.f, glyphSlot->advance.y / 64.f, glyphSlot->bitmap_left, glyphSlot->bitmap_top);
|
|
_glyphs[ch]->SetGlyphImage(width, height, stride, pixels);
|
|
}
|
|
*/
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void GlyphInfo::SetGlyphImage(size_t width, size_t height, size_t stride, byte *pixels) {
|
|
warning("GlyphInfo::SetGlyphImage - Not ported yet");
|
|
#if 0
|
|
if (_image) SDL_FreeSurface(_image);
|
|
|
|
_image = SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000);
|
|
SDL_LockSurface(_image);
|
|
|
|
Uint8 *buf = (Uint8 *)_image->pixels;
|
|
|
|
for (int y = 0; y < height; y++) {
|
|
Uint32 *buf32 = (Uint32 *)buf;
|
|
|
|
for (int x = 0; x < width; x++) {
|
|
byte alpha = pixels[y * stride + x];
|
|
Uint32 color = SDL_MapRGBA(_image->format, 255, 255, 255, alpha);
|
|
buf32[x] = color;
|
|
}
|
|
|
|
buf += _image->pitch;
|
|
}
|
|
|
|
SDL_UnlockSurface(_image);
|
|
#endif
|
|
}
|
|
|
|
} // end of namespace WinterMute
|