Mercurial > fife-parpg
view engine/python/fife/extensions/pychan/fonts.py @ 642:6e2151325017
* Added the ability to query the current running screen mode
* Added a method to detect the closest supported screen mode (not complete yet). If no matching screen modes are detected an exception is thrown.
* Small change to the way the screen is initialized. The screen mode now MUST be in the supported screen mode list before the screen will initialize.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Fri, 08 Oct 2010 21:22:02 +0000 |
parents | 64738befdf3b |
children |
line wrap: on
line source
# -*- coding: utf-8 -*- # #################################################################### # Copyright (C) 2005-2009 by the FIFE team # http://www.fifengine.de # This file is part of FIFE. # # FIFE is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the # Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA # #################################################################### # Font handling from exceptions import * class Font(object): def __init__(self,name,get): from internal import get_manager self.font = None self.name = name self.typename = get("type") self.source = get("source") self.row_spacing = int(get("row_spacing",0)) self.glyph_spacing = int(get("glyph_spacing",0)) if self.typename == "truetype": self.size = int(get("size")) self.antialias = int(get("antialias",1)) self.color = map(int,get("color","255,255,255").split(',')) self.font = get_manager().hook.engine.getGuiManager().createFont(self.source,self.size,"") if self.font is None: raise InitializationError("Could not load font %s" % name) self.font.setAntiAlias(self.antialias) self.font.setColor(*self.color) else: raise InitializationError("Unsupported font type %s" % self.typename) self.font.setRowSpacing( self.row_spacing ) self.font.setGlyphSpacing( self.glyph_spacing ) @staticmethod def loadFromFile(filename): """ Static method to load font definitions out of a PyChan config file. """ import ConfigParser fontdef = ConfigParser.ConfigParser() fontdef.read(filename) sections = [section for section in fontdef.sections() if section.startswith("Font/")] fonts = [] for section in sections: name = section[5:] def _get(name,default=None): if fontdef.has_option(section,name): return fontdef.get(section,name) return default fonts.append( Font(name,_get) ) return fonts def __str__(self): return "Font(source='%s')" % self.source def __repr__(self): return "<Font(source='%s') at %x>" % (self.source,id(self)) def loadFonts(filename): """ Load fonts from a config file. These are then available via their name. """ from internal import get_manager for font in Font.loadFromFile(filename): get_manager().addFont(font)