aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/FontGlyphCache.cpp
blob: ea0acd4c1927be26388cf53dcc340649d692e9d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/* 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