Browse Source

Added bgfx::dbgTextImage API for drawing directly into debug text buffer.

Branimir Karadžić 11 years ago
parent
commit
254efb5a3d
7 changed files with 417 additions and 14 deletions
  1. 9 0
      examples/00-helloworld/helloworld.cpp
  2. 336 0
      examples/00-helloworld/logo.h
  3. 12 0
      include/bgfx.c99.h
  4. 11 0
      include/bgfx.h
  5. 21 10
      src/bgfx.cpp
  6. 25 1
      src/bgfx_p.h
  7. 3 3
      src/glcontext_ios.h

+ 9 - 0
examples/00-helloworld/helloworld.cpp

@@ -5,6 +5,8 @@
 
 
 #include "common.h"
 #include "common.h"
 #include <bgfx.h>
 #include <bgfx.h>
+#include <bx/uint32_t.h>
+#include "logo.h"
 
 
 int _main_(int /*_argc*/, char** /*_argv*/)
 int _main_(int /*_argc*/, char** /*_argv*/)
 {
 {
@@ -38,6 +40,13 @@ int _main_(int /*_argc*/, char** /*_argv*/)
 
 
 		// Use debug font to print information about this example.
 		// Use debug font to print information about this example.
 		bgfx::dbgTextClear();
 		bgfx::dbgTextClear();
+		bgfx::dbgTextImage(bx::uint16_max(width/2/8, 20)-20
+						 , bx::uint16_max(height/2/16, 6)-6
+						 , 40
+						 , 12
+						 , s_logo
+						 , 160
+						 );
 		bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/00-helloworld");
 		bgfx::dbgTextPrintf(0, 1, 0x4f, "bgfx/examples/00-helloworld");
 		bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Initialization and debug text.");
 		bgfx::dbgTextPrintf(0, 2, 0x6f, "Description: Initialization and debug text.");
 
 

+ 336 - 0
examples/00-helloworld/logo.h

@@ -0,0 +1,336 @@
+/* TheDraw C Screen Image.  Date: 12/01/14 */
+static char s_logo[] = {
+    'ワ', 0x03,  'ワ', 0x03,  'ワ', 0x03,  'ワ', 0x03,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  'ワ', 0x08,
+    'ワ', 0x03,  'ワ', 0x07,  'ワ', 0x07,  'ワ', 0x08,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  '゙', 0x03,  'ー', 0x3B,  'ア', 0x3B,  'イ', 0x3B,
+    'ロ', 0x3B,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  'ワ', 0x03,
+    'ア', 0x3B,  'イ', 0x3B,  'ロ', 0x3B,  '゚', 0x03,  '゚', 0x3B,  'イ', 0x3F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  'ア', 0x3B,
+    'ア', 0x3B,  'イ', 0x3B,  'イ', 0x3F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  'ア', 0x3B,  'ア', 0x3B,  'イ', 0x3B,  'イ', 0x3F,  ' ', 0x0F,
+    ' ', 0x0F,  '゚', 0x03,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  'ア', 0x3B,  'ア', 0x3B,  'ア', 0x3B,  'ア', 0x3F,  'ワ', 0x0B,
+    'ワ', 0x03,  'ワ', 0x03,  'ワ', 0x03,  'ワ', 0x03,  ' ', 0x0F,  ' ', 0x0F,
+    'ワ', 0x08,  'ワ', 0x03,  'ワ', 0x03,  'ワ', 0x03,  'ワ', 0x03,  'ワ', 0x03,
+    'ワ', 0x03,  'ワ', 0x08,  ' ', 0x0F,  'ア', 0x3B,  'ア', 0x3B,  'ア', 0x3B,
+    'ア', 0x3F,  'ア', 0x3F,  'イ', 0x0B,  ' ', 0x0F,  ' ', 0x0F,  'ワ', 0x03,
+    'ワ', 0x03,  'ワ', 0x03,  ' ', 0x0F,  ' ', 0x0F,  'ワ', 0x03,  'ワ', 0x03,
+    'ワ', 0x03,  ' ', 0x0F,  ' ', 0x01,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  'イ', 0x3B,  'ア', 0x3B,  'ー', 0x3B,
+    'ー', 0x3F,  ' ', 0x0F,  '゙', 0x03,  'ー', 0x3F,  'ア', 0x3F,  'イ', 0x3F,
+    'ン', 0x03,  '゙', 0x03,  'ロ', 0x03,  'ロ', 0x03,  'イ', 0x3F,  ' ', 0x0F,
+    ' ', 0x0F,  'ー', 0x3F,  'ア', 0x3F,  'イ', 0x3F,  '゙', 0x38,  'イ', 0x3B,
+    'ア', 0x3B,  'ー', 0x3B,  'ー', 0x3F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    'ー', 0x3B,  'ア', 0x3B,  'イ', 0x3B,  'イ', 0x3F,  'ン', 0x03,  '゙', 0x03,
+    'ー', 0x3F,  'ア', 0x3F,  'イ', 0x3F,  'ン', 0x03,  ' ', 0x01,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  'イ', 0x3B,
+    'ア', 0x3B,  'ー', 0x3B,  'ー', 0x3F,  ' ', 0x0F,  ' ', 0x0F,  'ロ', 0x03,
+    'ー', 0x3F,  'ア', 0x3F,  'ン', 0x03,  'ア', 0x3B,  'ー', 0x3B,  'ロ', 0x03,
+    'ア', 0x3F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x3F,  'ー', 0x3F,  'ア', 0x3F,
+    'ー', 0x3B,  'イ', 0x3B,  'ア', 0x3B,  'ー', 0x3B,  'ー', 0x3F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  'ワ', 0x08,  'ワ', 0x3B,  'ア', 0x3B,  'ア', 0x3F,
+    'ア', 0x3B,  'ー', 0x3B,  'イ', 0x3B,  'ー', 0x3F,  'ワ', 0x03,  ' ', 0x0F,
+    ' ', 0x01,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  'イ', 0x3B,  'ア', 0x3B,  'ー', 0x3B,  'ー', 0x3F,  'ワ', 0x0B,
+    'ワ', 0x07,  'ロ', 0x03,  'ロ', 0x03,  'ワ', 0x38,  ' ', 0x0F,  '゚', 0x03,
+    'ア', 0x3B,  'ー', 0x3B,  'ー', 0x3F,  'ワ', 0x03,  'ワ', 0x07,  'ー', 0x3F,
+    'ア', 0x3F,  'イ', 0x3F,  'ン', 0x3B,  'イ', 0x3B,  'ア', 0x3B,  'ワ', 0x78,
+    '゚', 0x08,  ' ', 0x0F,  ' ', 0x0F,  '゙', 0x08,  'イ', 0x3B,  'ア', 0x3B,
+    'ー', 0x3B,  'ー', 0x3F,  ' ', 0x0F,  '゚', 0x03,  'ア', 0x3B,  'イ', 0x3B,
+    'ロ', 0x03,  'ン', 0x03,  ' ', 0x01,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  'ワ', 0x08,  'ワ', 0x08,  'ワ', 0x08,  ' ', 0x0F,
+    ' ', 0x0F,  'ー', 0x3F,  'ー', 0x3F,  'ア', 0x3F,  'ン', 0x3B,  'ロ', 0x0B,
+    '゚', 0x03,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    '゚', 0x08,  '゚', 0x03,  '゚', 0x03,  '゚', 0x08,  ' ', 0x0F,  ' ', 0x0F,
+    '゚', 0x08,  '゚', 0x03,  '゚', 0x03,  ' ', 0x0F,  ' ', 0x01,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  'ロ', 0x08,  'イ', 0x38,
+    'ア', 0x38,  'ワ', 0x03,  'ワ', 0x07,  'ー', 0x3B,  'ア', 0x3B,  '゚', 0x3B,
+    '゚', 0x08,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,  ' ', 0x0B,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  '-', 0x08,  '=', 0x08,  ' ', 0x0A,  'C', 0x0B,
+    'r', 0x0B,  'o', 0x0B,  's', 0x0B,  's', 0x0B,  '-', 0x0B,  'p', 0x0B,
+    'l', 0x0B,  'a', 0x0B,  't', 0x0B,  'f', 0x0B,  'o', 0x0B,  'r', 0x0B,
+    'm', 0x0B,  ' ', 0x0B,  'r', 0x0B,  'e', 0x0B,  'n', 0x0B,  'd', 0x0B,
+    'e', 0x0B,  'r', 0x0B,  'i', 0x0B,  'n', 0x0B,  'g', 0x0B,  ' ', 0x0B,
+    'l', 0x0B,  'i', 0x0B,  'b', 0x0B,  'r', 0x0B,  'a', 0x0B,  'r', 0x0B,
+    'y', 0x0B,  ' ', 0x0F,  '=', 0x08,  '-', 0x08,  ' ', 0x01,  ' ', 0x0F,
+    ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,
+    ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,
+    ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,
+    ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,
+    ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,
+    ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,
+    ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0A,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,  ' ', 0x0F,
+    ' ', 0x0F,  ' ', 0x0F};

+ 12 - 0
include/bgfx.c99.h

@@ -639,6 +639,18 @@ BGFX_C_API void bgfx_dbg_text_clear(uint8_t _attr, bool _small);
  */
  */
 BGFX_C_API void bgfx_dbg_text_printf(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, ...);
 BGFX_C_API void bgfx_dbg_text_printf(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, ...);
 
 
+/**
+ *  Draw image into internal debug text buffer.
+ *
+ *  @param _x      X position from top-left.
+ *  @param _y      Y position from top-left.
+ *  @param _width  Image width.
+ *  @param _height Image height.
+ *  @param _data   Raw image data (character/attribute raw encoding).
+ *  @param _pitch  Image pitch in bytes.
+ */
+BGFX_C_API void bgfx_dbg_text_image(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void* _data, uint16_t _pitch);
+
 /**
 /**
  *  Create static index buffer.
  *  Create static index buffer.
  *
  *

+ 11 - 0
include/bgfx.h

@@ -599,6 +599,17 @@ namespace bgfx
 	/// Print into internal debug text buffer.
 	/// Print into internal debug text buffer.
 	void dbgTextPrintf(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, ...);
 	void dbgTextPrintf(uint16_t _x, uint16_t _y, uint8_t _attr, const char* _format, ...);
 
 
+	/// Draw image into internal debug text buffer.
+	/// 
+	/// @param _x      X position from top-left.
+	/// @param _y      Y position from top-left.
+	/// @param _width  Image width.
+	/// @param _height Image height.
+	/// @param _data   Raw image data (character/attribute raw encoding).
+	/// @param _pitch  Image pitch in bytes.
+	///
+	void dbgTextImage(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void* _data, uint16_t _pitch);
+
 	/// Create static index buffer.
 	/// Create static index buffer.
 	///
 	///
 	/// @remarks
 	/// @remarks

+ 21 - 10
src/bgfx.cpp

@@ -47,12 +47,12 @@ namespace bgfx
 		g_bgfxHwnd = _window;
 		g_bgfxHwnd = _window;
 	}
 	}
 #elif BX_PLATFORM_WINRT
 #elif BX_PLATFORM_WINRT
-    ::IUnknown* g_bgfxCoreWindow = NULL;
+	::IUnknown* g_bgfxCoreWindow = NULL;
 
 
-    void winrtSetWindow(::IUnknown* _window)
-    {
-        g_bgfxCoreWindow = _window;
-    }
+	void winrtSetWindow(::IUnknown* _window)
+	{
+		g_bgfxCoreWindow = _window;
+	}
 #endif // BX_PLATFORM_*
 #endif // BX_PLATFORM_*
 
 
 #if BGFX_CONFIG_USE_TINYSTL
 #if BGFX_CONFIG_USE_TINYSTL
@@ -426,7 +426,7 @@ namespace bgfx
 		uint32_t xx = 0;
 		uint32_t xx = 0;
 
 
 		const float texelWidth = 1.0f/2048.0f;
 		const float texelWidth = 1.0f/2048.0f;
-		const float texelWidthHalf = texelWidth*0.5f;
+		const float texelWidthHalf = RendererType::Direct3D9 == g_caps.rendererType ? 0.0f : texelWidth*0.5f;
 		const float texelHeight = 1.0f/24.0f;
 		const float texelHeight = 1.0f/24.0f;
 		const float texelHeightHalf = RendererType::Direct3D9 == g_caps.rendererType ? texelHeight*0.5f : 0.0f;
 		const float texelHeightHalf = RendererType::Direct3D9 == g_caps.rendererType ? texelHeight*0.5f : 0.0f;
 		const float utop = (_mem.m_small ? 0.0f : 8.0f)*texelHeight + texelHeightHalf;
 		const float utop = (_mem.m_small ? 0.0f : 8.0f)*texelHeight + texelHeightHalf;
@@ -1393,10 +1393,10 @@ again:
 			{
 			{
 				_type = RendererType::OpenGLES;
 				_type = RendererType::OpenGLES;
 			}
 			}
-            else if (BX_ENABLED(BX_PLATFORM_WINRT))
-            {
-                _type = RendererType::Direct3D11;
-            }
+			else if (BX_ENABLED(BX_PLATFORM_WINRT))
+			{
+				_type = RendererType::Direct3D11;
+			}
 			else
 			else
 			{
 			{
 				_type = RendererType::OpenGL;
 				_type = RendererType::OpenGL;
@@ -2041,6 +2041,12 @@ again:
 		va_end(argList);
 		va_end(argList);
 	}
 	}
 
 
+	void dbgTextImage(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void* _data, uint16_t _pitch)
+	{
+		BGFX_CHECK_MAIN_THREAD();
+		s_ctx->dbgTextImage(_x, _y, _width, _height, _data, _pitch);
+	}
+
 	IndexBufferHandle createIndexBuffer(const Memory* _mem)
 	IndexBufferHandle createIndexBuffer(const Memory* _mem)
 	{
 	{
 		BGFX_CHECK_MAIN_THREAD();
 		BGFX_CHECK_MAIN_THREAD();
@@ -2917,6 +2923,11 @@ BGFX_C_API void bgfx_dbg_text_printf(uint16_t _x, uint16_t _y, uint8_t _attr, co
 	va_end(argList);
 	va_end(argList);
 }
 }
 
 
+BGFX_C_API void bgfx_dbg_text_image(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void* _data, uint16_t _pitch)
+{
+	bgfx::dbgTextImage(_x, _y, _width, _height, _data, _pitch);
+}
+
 BGFX_C_API bgfx_index_buffer_handle_t bgfx_create_index_buffer(const bgfx_memory_t* _mem)
 BGFX_C_API bgfx_index_buffer_handle_t bgfx_create_index_buffer(const bgfx_memory_t* _mem)
 {
 {
 	union { bgfx_index_buffer_handle_t c; bgfx::IndexBufferHandle cpp; } handle;
 	union { bgfx_index_buffer_handle_t c; bgfx::IndexBufferHandle cpp; } handle;

+ 25 - 1
src/bgfx_p.h

@@ -199,7 +199,7 @@ namespace bgfx
 #elif BX_PLATFORM_WINDOWS
 #elif BX_PLATFORM_WINDOWS
 	extern ::HWND g_bgfxHwnd;
 	extern ::HWND g_bgfxHwnd;
 #elif BX_PLATFORM_WINRT
 #elif BX_PLATFORM_WINRT
-    extern ::IUnknown* g_bgfxCoreWindow;
+	extern ::IUnknown* g_bgfxCoreWindow;
 #endif // BX_PLATFORM_*
 #endif // BX_PLATFORM_*
 
 
 	struct Clear
 	struct Clear
@@ -410,6 +410,25 @@ namespace bgfx
 			va_end(argList);
 			va_end(argList);
 		}
 		}
 
 
+		void image(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void* _data, uint16_t _pitch)
+		{
+			if (_x < m_width && _y < m_height)
+			{
+				uint8_t* dst = &m_mem[(_y*m_width+_x)*2];
+				const uint8_t* src = (const uint8_t*)_data;
+				const uint32_t width  = (bx::uint32_min(m_width,  _width +_x)-_x)*2;
+				const uint32_t height =  bx::uint32_min(m_height, _height+_y)-_y;
+				const uint32_t dstPitch = m_width*2;
+
+				for (uint32_t yy = 0; yy < height; ++yy)
+				{
+					memcpy(dst, src, width);
+					dst += dstPitch;
+					src += _pitch;
+				}
+			}
+		}
+
 		uint8_t* m_mem;
 		uint8_t* m_mem;
 		uint32_t m_size;
 		uint32_t m_size;
 		uint16_t m_width;
 		uint16_t m_width;
@@ -1837,6 +1856,11 @@ namespace bgfx
 			m_submit->m_textVideoMem->printfVargs(_x, _y, _attr, _format, _argList);
 			m_submit->m_textVideoMem->printfVargs(_x, _y, _attr, _format, _argList);
 		}
 		}
 
 
+		BGFX_API_FUNC(void dbgTextImage(uint16_t _x, uint16_t _y, uint16_t _width, uint16_t _height, const void* _data, uint16_t _pitch) )
+		{
+			m_submit->m_textVideoMem->image(_x, _y, _width, _height, _data, _pitch);
+		}
+
 		BGFX_API_FUNC(const HMD* getHMD() )
 		BGFX_API_FUNC(const HMD* getHMD() )
 		{
 		{
 			if (m_submit->m_hmdEnabled)
 			if (m_submit->m_hmdEnabled)

+ 3 - 3
src/glcontext_ios.h

@@ -16,18 +16,18 @@ namespace bgfx
 			: m_context(0)
 			: m_context(0)
 		{
 		{
 		}
 		}
-        
+
 		void create(uint32_t _width, uint32_t _height);
 		void create(uint32_t _width, uint32_t _height);
 		void destroy();
 		void destroy();
 		void resize(uint32_t _width, uint32_t _height, bool _vsync);
 		void resize(uint32_t _width, uint32_t _height, bool _vsync);
 		void swap();
 		void swap();
 		void import();
 		void import();
-        
+
 		bool isValid() const
 		bool isValid() const
 		{
 		{
 			return 0 != m_context;
 			return 0 != m_context;
 		}
 		}
-        
+
 		void* m_view;
 		void* m_view;
 		void* m_context;
 		void* m_context;
 	};
 	};