demo06.lpr 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. library demo06;
  2. {$I zglCustomConfig.cfg}
  3. {$I zgl_config.cfg}
  4. uses
  5. zgl_application,
  6. zgl_file,
  7. zgl_screen,
  8. zgl_window,
  9. zgl_timers,
  10. zgl_render_2d,
  11. zgl_fx,
  12. zgl_primitives_2d,
  13. zgl_textures,
  14. zgl_textures_png,
  15. zgl_font,
  16. zgl_text,
  17. zgl_types,
  18. {$IfNDef OLD_METHODS}
  19. gegl_color,
  20. {$EndIf}
  21. zgl_utils
  22. ;
  23. var
  24. dirRes : UTF8String = 'assets/';
  25. fntMain : LongWord;
  26. procedure Init;
  27. begin
  28. zgl_Enable( CORRECT_RESOLUTION );
  29. scr_CorrectResolution( 800, 600 );
  30. file_OpenArchive( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
  31. // RU: Загружаем данные о шрифте.
  32. // EN: Load the font.
  33. fntMain := font_LoadFromFile( dirRes + 'font.zfi' );
  34. // RU: Если же текстуры именуются без использования маски вида "$(имя_шрифта)FontName-page$(номер).$(расширение)", то загрузку можно произвести следующим образом(для png):
  35. // EN: If textures were named without special mask - "$(font_name)-page$(number).$(extension)", then use this method to load them(for png):
  36. //for i := 0 to fntMain.Count.Pages - 1 do
  37. // fntMain.Pages[ i ] := tex_LoadFromFile( dirRes + 'font-page' + u_IntToStr( i ) + '.png' );
  38. file_CloseArchive();
  39. setFontTextScale(20, fntMain); // установка двойного размера шрифта
  40. end;
  41. procedure Draw;
  42. var
  43. r : zglTRect2D;
  44. s : UTF8String;
  45. begin
  46. batch2d_Begin();
  47. // RU: ZenGL работает исключительно с кодировкой UTF-8, поэтому весь текст должен быть в UTF-8.
  48. // EN: ZenGL works only with UTF-8 encoding, so all text should be encoded with UTF-8.
  49. text_Draw( fntMain, 400, 25, 'String with center alignment', TEXT_HALIGN_CENTER );
  50. text_DrawEx( fntMain, 400, 65, 3, 0, 'Scaling', {$IfDef OLD_METHODS}255, $FFFFFF, {$Else}cl_White,{$EndIf}TEXT_HALIGN_CENTER );
  51. fx2d_SetVCA( $FF0000, $00FF00, $0000FF, $FFFFFF, 255, 255, 255, 255 );
  52. text_Draw( fntMain, 400, 125, 'Gradient color for every symbol', TEXT_FX_VCA or TEXT_HALIGN_CENTER );
  53. r.X := 0;
  54. r.Y := 300 - 128;
  55. r.W := 192;
  56. r.H := 256;
  57. // выставить кодировку страницы на UTF-8 с BOM
  58. text_DrawInRect( fntMain, r, 'Simple text rendering in rectangle ' + ' Текст в квадрате на русском )))');
  59. pr2d_Rect( r.X, r.Y, r.W, r.H, {$IfDef OLD_METHODS} $FF0000 {$Else}cl_Aqua{$EndIf} );
  60. r.X := 800 - 192;
  61. r.Y := 300 - 128;
  62. r.W := 192;
  63. r.H := 256;
  64. text_DrawInRect( fntMain, r, 'Text rendering using horizontal right alignment and vertical bottom alignment', TEXT_HALIGN_RIGHT or TEXT_VALIGN_BOTTOM );
  65. pr2d_Rect( r.X, r.Y, r.W, r.H, {$IfDef OLD_METHODS} $FF0000 {$Else}cl_Yellow{$EndIf} );
  66. r.X := 400 - 192;
  67. r.Y := 300 - 128;
  68. r.W := 384;
  69. r.H := 256;
  70. text_DrawInRect( fntMain, r, 'This text uses justify alignment and centered vertically. Text which doesn''t fit inside the rectangle will be cropped.',
  71. TEXT_HALIGN_JUSTIFY or TEXT_VALIGN_CENTER );
  72. pr2d_Rect( r.X, r.Y, r.W, r.H, {$IfDef OLD_METHODS} $FF0000 {$Else}cl_Red{$EndIf} );
  73. r.X := 400 - 320;
  74. r.Y := 300 + 160;
  75. r.W := 640;
  76. r.H := 128;
  77. 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"',
  78. TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER );
  79. pr2d_Rect( r.X, r.Y, r.W, r.H, {$IfDef OLD_METHODS} $FF0000 {$Else}cl_Blue{$EndIf} );
  80. // RU: Выводим количество FPS в правом углу, используя text_GetWidth.
  81. // EN: Render FPS in the top right corner using text_GetWidth.
  82. s := 'FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) );
  83. text_Draw( fntMain, 800 - text_GetWidth( fntMain, s ), 0, s );
  84. batch2d_End();
  85. end;
  86. procedure Restore;
  87. begin
  88. file_OpenArchive( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
  89. font_RestoreFromFile( fntMain, dirRes + 'font.zfi' );
  90. file_CloseArchive();
  91. end;
  92. procedure Java_zengl_android_ZenGL_Main( var env; var thiz ); cdecl;
  93. begin
  94. randomize();
  95. zgl_Reg( SYS_LOAD, @Init );
  96. zgl_Reg( SYS_DRAW, @Draw );
  97. zgl_Reg( SYS_ANDROID_RESTORE, @Restore );
  98. scr_SetOptions();
  99. end;
  100. exports
  101. Java_zengl_android_ZenGL_Main,
  102. {$I android_export.inc}
  103. End.