5e1a2ef64a7dec5a6dc4b2173b760c7c794eef35
[blender.git] / doc / python_api / examples / blf.py
1 """
2 Hello World Text Example
3 ++++++++++++++++++++++++
4
5 Example of using the blf module. For this module to work we
6 need to use the OpenGL wrapper :class:`~bgl` as well.
7 """
8 # import stand alone modules
9 import bgl
10 import blf
11 import bpy
12
13 font_info = {
14     "font_id": 0,
15     "handler": None,
16 }
17
18
19 def init():
20     """init function - runs once"""
21     import os
22     # Create a new font object, use external ttf file.
23     font_path = bpy.path.abspath('//Zeyada.ttf')
24     # Store the font indice - to use later.
25     if os.path.exists(font_path):
26         font_info["font_id"] = blf.load(font_path)
27     else:
28         # Default font.
29         font_info["font_id"] = 0
30
31     # set the font drawing routine to run every frame
32     font_info["handler"] = bpy.types.SpaceView3D.draw_handler_add(
33         draw_callback_px, (None, None), 'WINDOW', 'POST_PIXEL')
34
35
36 def draw_callback_px(self, context):
37     """Draw on the viewports"""
38     # BLF drawing routine
39     font_id = font_info["font_id"]
40     blf.position(font_id, 2, 80, 0)
41     blf.size(font_id, 50, 72)
42     blf.draw(font_id, "Hello World")
43
44
45 if __name__ == '__main__':
46     init()