54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
|
|
import os
|
|
from os.path import join
|
|
|
|
from panda3d.core import Filename
|
|
from panda3d.lui import LUIFontPool, LUIAtlasPool
|
|
|
|
class LUISkin:
|
|
|
|
""" Abstract class, each skin derives from this class """
|
|
|
|
skin_location = ""
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
def load(self):
|
|
""" Skins should override this. Each skin should at least provide the fonts
|
|
'default' and 'label', and at least one atlas named 'skin' """
|
|
raise NotImplementedError()
|
|
|
|
def get_resource(self, pth):
|
|
""" Turns a relative path into an absolute one, using the skin_location """
|
|
return Filename.from_os_specific(join(self.skin_location, pth)).get_fullpath()
|
|
|
|
|
|
class LUIDefaultSkin(LUISkin):
|
|
|
|
""" The default skin which comes with LUI """
|
|
|
|
skin_location = os.path.join(os.path.dirname(os.path.abspath(__file__)), "../Skins/Default/")
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
def load(self):
|
|
LUIFontPool.get_global_ptr().register_font(
|
|
"default", loader.loadFont(self.get_resource("font/SourceSansPro-Semibold.ttf")))
|
|
|
|
labelFont = loader.loadFont(self.get_resource("font/SourceSansPro-Semibold.ttf"))
|
|
labelFont.setPixelsPerUnit(32)
|
|
|
|
LUIFontPool.get_global_ptr().register_font(
|
|
"label", labelFont)
|
|
|
|
headerFont = loader.loadFont(self.get_resource("font/SourceSansPro-Light.ttf"))
|
|
headerFont.setPixelsPerUnit(80)
|
|
|
|
LUIFontPool.get_global_ptr().register_font("header", headerFont)
|
|
|
|
LUIAtlasPool.get_global_ptr().load_atlas("skin",
|
|
self.get_resource("res/atlas.txt"),
|
|
self.get_resource("res/atlas.png"))
|