[Bf-blender-cvs] [c558d8fa7c8] master: bpy blf api example update

Dalai Felinto noreply at git.blender.org
Tue Apr 17 12:47:19 CEST 2018


Commit: c558d8fa7c8d5a42c926731e0478e6347ee29202
Author: Dalai Felinto
Date:   Tue Apr 17 12:25:51 2018 +0200
Branches: master
https://developer.blender.org/rBc558d8fa7c8d5a42c926731e0478e6347ee29202

bpy blf api example update

With changes from Campbell Barton as well.

===================================================================

M	doc/python_api/examples/blf.py

===================================================================

diff --git a/doc/python_api/examples/blf.py b/doc/python_api/examples/blf.py
index f6e87cf488d..e288ac9db66 100644
--- a/doc/python_api/examples/blf.py
+++ b/doc/python_api/examples/blf.py
@@ -2,43 +2,44 @@
 Hello World Text Example
 ++++++++++++++++++++++++
 
-Blender Game Engine example of using the blf module. For this module to work we
+Example of using the blf module. For this module to work we
 need to use the OpenGL wrapper :class:`~bgl` as well.
 """
-# import game engine modules
-from bge import render
-from bge import logic
 # import stand alone modules
 import bgl
 import blf
+import bpy
 
+font_info = {
+    "font_id": 0,
+    "handler": None,
+}
 
 def init():
     """init function - runs once"""
-    # create a new font object, use external ttf file
-    font_path = logic.expandPath('//Zeyada.ttf')
-    # store the font indice - to use later
-    logic.font_id = blf.load(font_path)
+    import os
+    # Create a new font object, use external ttf file.
+    font_path = bpy.path.abspath('//Zeyada.ttf')
+    # Store the font indice - to use later.
+    if os.path.exists(font_path):
+        font_info["font_id"] = blf.load(font_path)
+    else:
+        # Default font.
+        font_info["font_id"] = 0
 
     # set the font drawing routine to run every frame
-    scene = logic.getCurrentScene()
-    scene.post_draw = [write]
+    font_info["handler"] = bpy.types.SpaceView3D.draw_handler_add(
+        draw_callback_px, (None, None), 'WINDOW', 'POST_PIXEL')
 
 
-def write():
-    """write on screen"""
-    width = render.getWindowWidth()
-    height = render.getWindowHeight()
-
-    # OpenGL setup
-    bgl.glMatrixMode(bgl.GL_PROJECTION)
-    bgl.glLoadIdentity()
-    bgl.gluOrtho2D(0, width, 0, height)
-    bgl.glMatrixMode(bgl.GL_MODELVIEW)
-    bgl.glLoadIdentity()
-
+def draw_callback_px(self, context):
+    """Draw on the viewports"""
     # BLF drawing routine
-    font_id = logic.font_id
-    blf.position(font_id, (width * 0.2), (height * 0.3), 0)
+    font_id = font_info["font_id"]
+    blf.position(font_id, 2, 80, 0)
     blf.size(font_id, 50, 72)
     blf.draw(font_id, "Hello World")
+
+
+if __name__ == '__main__':
+    init()



More information about the Bf-blender-cvs mailing list