demo06.pas 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. program demo06;
  2. // RU: Включение UTF8 для данной страницы.
  3. // EN: Enable UTF8 for this page.
  4. {$Codepage UTF8}
  5. {$I zglCustomConfig.cfg}
  6. {$I zgl_config.cfg}
  7. uses
  8. {$IF defined(LINUX) or defined (MACOSX)}
  9. cthreads,
  10. {$IfEnd}
  11. {$IFDEF USE_ZENGL_STATIC}
  12. zgl_screen,
  13. zgl_window,
  14. zgl_timers,
  15. zgl_keyboard,
  16. zgl_render_2d,
  17. zgl_fx,
  18. zgl_primitives_2d,
  19. zgl_textures,
  20. zgl_textures_png,
  21. zgl_textures_jpg,
  22. zgl_font,
  23. zgl_text,
  24. zgl_file,
  25. zgl_types,
  26. gegl_color,
  27. zgl_utils
  28. {$ELSE}
  29. zglHeader
  30. {$ENDIF}
  31. ;
  32. var
  33. // dirRes : UTF8String {$IFNDEF MACOSX} = 'data/' {$ENDIF}; // вне демо-версий
  34. dirRes : UTF8String {$IFNDEF MACOSX} = '../data/' {$ENDIF}; // в демо-версиях!!!
  35. fntMain : LongWord;
  36. procedure Init;
  37. begin
  38. // RU: Загружаем данные о шрифте.
  39. // EN: Load the font.
  40. fntMain := font_LoadFromFile( dirRes + 'font.zfi' );
  41. // RU: Если же текстуры именуются без использования маски вида "$(имя_шрифта)FontName-page$(номер).$(расширение)", то загрузку можно произвести следующим образом(для png):
  42. // EN: If textures were named without special mask - "$(font_name)-page$(number).$(extension)", then use this method to load them(for png):
  43. //for i := 0 to fntMain.Count.Pages - 1 do
  44. // fntMain.Pages[ i ] := tex_LoadFromFile( dirRes + 'font-page' + u_IntToStr( i ) + '.png' );
  45. setFontTextScale(15, fntMain); // установка шкалы размерности шрифта
  46. end;
  47. procedure Draw;
  48. var
  49. r : zglTRect2D;
  50. s : UTF8String;
  51. begin
  52. batch2d_Begin();
  53. // RU: ZenGL работает исключительно с кодировкой UTF-8, поэтому весь текст должен быть в UTF-8.
  54. // EN: ZenGL works only with UTF-8 encoding, so all text should be encoded with UTF-8.
  55. text_Draw( fntMain, 400, 25, 'String with center alignment', TEXT_HALIGN_CENTER );
  56. text_DrawEx( fntMain, 400, 65, 3, 0, 'Scaling', cl_White, TEXT_HALIGN_CENTER );
  57. fx2d_SetVCA( $FF0000, $00FF00, $0000FF, $FFFFFF, 255, 255, 255, 255 );
  58. text_Draw( fntMain, 400, 125, 'Gradient color for every symbol', TEXT_FX_VCA or TEXT_HALIGN_CENTER );
  59. r.X := 0;
  60. r.Y := 300 - 128;
  61. r.W := 192;
  62. r.H := 256;
  63. pr2d_Rect( r.X, r.Y, r.W, r.H, cl_Aqua );
  64. text_DrawInRect( fntMain, r, 'Simple text rendering in rectangle' + #10 + 'Текст написанный в квадрате');
  65. // для использования другой кодировки надо указать Lazarus что страница в кодировке UTF-8 BOM!!!
  66. // File setting -> encoding -> UTF-8 with BOM
  67. r.X := 800 - 192;
  68. r.Y := 300 - 128;
  69. r.W := 192;
  70. r.H := 256;
  71. pr2d_Rect( r.X, r.Y, r.W, r.H, cl_Yellow );
  72. text_DrawInRect( fntMain, r, 'Text rendering using horizontal right alignment and vertical bottom alignment', TEXT_HALIGN_RIGHT or TEXT_VALIGN_BOTTOM );
  73. r.X := 400 - 192;
  74. r.Y := 300 - 128;
  75. r.W := 384;
  76. r.H := 256;
  77. pr2d_Rect( r.X, r.Y, r.W, r.H, cl_Red );
  78. text_DrawInRect( fntMain, r, 'This text uses justify alignment and centered vertically. Text which doesn''t fit inside the rectangle will be cropped.',
  79. TEXT_HALIGN_JUSTIFY or TEXT_VALIGN_CENTER );
  80. r.X := 400 - 320;
  81. r.Y := 300 + 160;
  82. r.W := 640;
  83. r.H := 128;
  84. pr2d_Rect( r.X, r.Y, r.W, r.H, cl_Blue );
  85. text_DrawInRect( fntMain, r, 'For starting new line LF symbol can be used' + #10 + 'code of which is equal to 10 and named in Unicode as "Line Feed"',
  86. TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER );
  87. // RU: Выводим количество FPS в правом углу, используя text_GetWidth.
  88. // EN: Render FPS in the top right corner using text_GetWidth.
  89. s := 'FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) );
  90. text_Draw( fntMain, 800 - text_GetWidth( fntMain, s ), 0, s );
  91. batch2d_End();
  92. end;
  93. Begin
  94. {$IFNDEF USE_ZENGL_STATIC}
  95. if not zglLoad( libZenGL ) Then exit;
  96. {$ENDIF}
  97. randomize();
  98. zgl_Reg( SYS_LOAD, @Init );
  99. zgl_Reg( SYS_DRAW, @Draw );
  100. wnd_SetCaption(utf8_Copy('06 - Text'));
  101. zgl_Init();
  102. End.