Jelajahi Sumber

Update ZenGL

Mirrel 2 tahun lalu
induk
melakukan
05e76a5f22
100 mengubah file dengan 1915 tambahan dan 917 penghapusan
  1. 158 62
      Zengl_SRC/Update_ZenGL.txt
  2. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/arm64-v8a/libjpeg_turbo.so
  3. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/arm64-v8a/libogg.so
  4. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/arm64-v8a/libopenal.so
  5. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/armeabi-v7a/libjpeg_turbo.so
  6. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/armeabi-v7a/libogg.so
  7. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/armeabi-v7a/libopenal.so
  8. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/armv5/libGLU.so
  9. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/armv6/libGLU.so
  10. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/x86/libjpeg_turbo.so
  11. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/x86/libogg.so
  12. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/x86/libopenal.so
  13. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/x86_64/libjpeg_turbo.so
  14. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/x86_64/libogg.so
  15. TEMPAT SAMPAH
      Zengl_SRC/bin/Android/x86_64/libopenal.so
  16. 0 1
      Zengl_SRC/demos/Android/01 - Initialization/assets/res.txt
  17. 0 95
      Zengl_SRC/demos/Android/01 - Initialization/jni/demo01.lpr
  18. 0 7
      Zengl_SRC/demos/Android/01 - Initialization/jni/windows_prebuild.bat
  19. 0 1
      Zengl_SRC/demos/Android/01 - Initialization/libs/armeabi/0.txt
  20. 9 0
      Zengl_SRC/demos/Android/01-Initialization/.classpath
  21. 33 0
      Zengl_SRC/demos/Android/01-Initialization/.project
  22. 0 0
      Zengl_SRC/demos/Android/01-Initialization/AndroidManifest.xml
  23. 11 8
      Zengl_SRC/demos/Android/01-Initialization/jni/demo01.lpi
  24. 96 95
      Zengl_SRC/demos/Android/01-Initialization/jni/demo01.lpr
  25. 152 0
      Zengl_SRC/demos/Android/01-Initialization/jni/demo01.lps
  26. 2 1
      Zengl_SRC/demos/Android/01-Initialization/jni/prebuild.sh
  27. 0 0
      Zengl_SRC/demos/Android/01-Initialization/project.properties
  28. 0 0
      Zengl_SRC/demos/Android/01-Initialization/res/drawable-hdpi/ic_launcher.png
  29. 0 0
      Zengl_SRC/demos/Android/01-Initialization/res/drawable-ldpi/ic_launcher.png
  30. 0 0
      Zengl_SRC/demos/Android/01-Initialization/res/drawable-mdpi/ic_launcher.png
  31. 0 0
      Zengl_SRC/demos/Android/01-Initialization/res/drawable-xhdpi/ic_launcher.png
  32. 0 0
      Zengl_SRC/demos/Android/01-Initialization/res/values/strings.xml
  33. 34 31
      Zengl_SRC/demos/Android/01-Initialization/src/zengl/android/ZenGL.java
  34. 0 0
      Zengl_SRC/demos/Android/01-Initialization/src/zengl/demo01/Demo01Activity.java
  35. 0 1
      Zengl_SRC/demos/Android/02 - Resources/assets/res.txt
  36. 0 12
      Zengl_SRC/demos/Android/02 - Resources/jni/windows_prebuild.bat
  37. 0 1
      Zengl_SRC/demos/Android/02 - Resources/libs/armeabi/0.txt
  38. 9 0
      Zengl_SRC/demos/Android/02-Resources/.classpath
  39. 33 0
      Zengl_SRC/demos/Android/02-Resources/.project
  40. 0 0
      Zengl_SRC/demos/Android/02-Resources/AndroidManifest.xml
  41. 13 10
      Zengl_SRC/demos/Android/02-Resources/jni/demo02.lpi
  42. 174 0
      Zengl_SRC/demos/Android/02-Resources/jni/demo02.lpr
  43. 195 0
      Zengl_SRC/demos/Android/02-Resources/jni/demo02.lps
  44. 4 2
      Zengl_SRC/demos/Android/02-Resources/jni/prebuild.sh
  45. 0 0
      Zengl_SRC/demos/Android/02-Resources/project.properties
  46. 0 0
      Zengl_SRC/demos/Android/02-Resources/res/drawable-hdpi/ic_launcher.png
  47. 0 0
      Zengl_SRC/demos/Android/02-Resources/res/drawable-ldpi/ic_launcher.png
  48. 0 0
      Zengl_SRC/demos/Android/02-Resources/res/drawable-mdpi/ic_launcher.png
  49. 0 0
      Zengl_SRC/demos/Android/02-Resources/res/drawable-xhdpi/ic_launcher.png
  50. 0 0
      Zengl_SRC/demos/Android/02-Resources/res/values/strings.xml
  51. 34 31
      Zengl_SRC/demos/Android/02-Resources/src/zengl/android/ZenGL.java
  52. 0 0
      Zengl_SRC/demos/Android/02-Resources/src/zengl/demo02/Demo02Activity.java
  53. 0 1
      Zengl_SRC/demos/Android/03 - Input/assets/res.txt
  54. 0 12
      Zengl_SRC/demos/Android/03 - Input/jni/windows_prebuild.bat
  55. 0 1
      Zengl_SRC/demos/Android/03 - Input/libs/armeabi/0.txt
  56. 9 0
      Zengl_SRC/demos/Android/03-Input/.classpath
  57. 33 0
      Zengl_SRC/demos/Android/03-Input/.project
  58. 4 0
      Zengl_SRC/demos/Android/03-Input/.settings/org.eclipse.jdt.core.prefs
  59. 0 0
      Zengl_SRC/demos/Android/03-Input/AndroidManifest.xml
  60. 17 11
      Zengl_SRC/demos/Android/03-Input/jni/demo03.lpi
  61. 90 74
      Zengl_SRC/demos/Android/03-Input/jni/demo03.lpr
  62. 415 0
      Zengl_SRC/demos/Android/03-Input/jni/demo03.lps
  63. 4 2
      Zengl_SRC/demos/Android/03-Input/jni/prebuild.sh
  64. 0 0
      Zengl_SRC/demos/Android/03-Input/project.properties
  65. 0 0
      Zengl_SRC/demos/Android/03-Input/res/drawable-hdpi/ic_launcher.png
  66. 0 0
      Zengl_SRC/demos/Android/03-Input/res/drawable-ldpi/ic_launcher.png
  67. 0 0
      Zengl_SRC/demos/Android/03-Input/res/drawable-mdpi/ic_launcher.png
  68. 0 0
      Zengl_SRC/demos/Android/03-Input/res/drawable-xhdpi/ic_launcher.png
  69. 0 0
      Zengl_SRC/demos/Android/03-Input/res/values/strings.xml
  70. 34 31
      Zengl_SRC/demos/Android/03-Input/src/zengl/android/ZenGL.java
  71. 0 0
      Zengl_SRC/demos/Android/03-Input/src/zengl/demo03/Demo03Activity.java
  72. 0 1
      Zengl_SRC/demos/Android/04 - Screen Settings/assets/res.txt
  73. 0 10
      Zengl_SRC/demos/Android/04 - Screen Settings/jni/windows_prebuild.bat
  74. 0 1
      Zengl_SRC/demos/Android/04 - Screen Settings/libs/armeabi/0.txt
  75. 9 0
      Zengl_SRC/demos/Android/04-ScreenSettings/.classpath
  76. 33 0
      Zengl_SRC/demos/Android/04-ScreenSettings/.project
  77. 0 0
      Zengl_SRC/demos/Android/04-ScreenSettings/AndroidManifest.xml
  78. 9 6
      Zengl_SRC/demos/Android/04-ScreenSettings/jni/demo04.lpi
  79. 11 9
      Zengl_SRC/demos/Android/04-ScreenSettings/jni/demo04.lpr
  80. 182 0
      Zengl_SRC/demos/Android/04-ScreenSettings/jni/demo04.lps
  81. 4 2
      Zengl_SRC/demos/Android/04-ScreenSettings/jni/prebuild.sh
  82. 0 0
      Zengl_SRC/demos/Android/04-ScreenSettings/project.properties
  83. 0 0
      Zengl_SRC/demos/Android/04-ScreenSettings/res/drawable-hdpi/ic_launcher.png
  84. 0 0
      Zengl_SRC/demos/Android/04-ScreenSettings/res/drawable-ldpi/ic_launcher.png
  85. 0 0
      Zengl_SRC/demos/Android/04-ScreenSettings/res/drawable-mdpi/ic_launcher.png
  86. 0 0
      Zengl_SRC/demos/Android/04-ScreenSettings/res/drawable-xhdpi/ic_launcher.png
  87. 0 0
      Zengl_SRC/demos/Android/04-ScreenSettings/res/values/strings.xml
  88. 34 31
      Zengl_SRC/demos/Android/04-ScreenSettings/src/zengl/android/ZenGL.java
  89. 0 0
      Zengl_SRC/demos/Android/04-ScreenSettings/src/zengl/demo04/Demo04Activity.java
  90. 0 1
      Zengl_SRC/demos/Android/05 - Primitives/assets/res.txt
  91. 0 80
      Zengl_SRC/demos/Android/05 - Primitives/jni/demo05.lpr
  92. 0 7
      Zengl_SRC/demos/Android/05 - Primitives/jni/windows_prebuild.bat
  93. 0 1
      Zengl_SRC/demos/Android/05 - Primitives/libs/armeabi/0.txt
  94. 0 270
      Zengl_SRC/demos/Android/05 - Primitives/src/zengl/android/ZenGL.java
  95. 9 0
      Zengl_SRC/demos/Android/05-Primitives/.classpath
  96. 33 0
      Zengl_SRC/demos/Android/05-Primitives/.project
  97. 4 0
      Zengl_SRC/demos/Android/05-Primitives/.settings/org.eclipse.jdt.core.prefs
  98. 0 0
      Zengl_SRC/demos/Android/05-Primitives/AndroidManifest.xml
  99. 11 0
      Zengl_SRC/demos/Android/05-Primitives/jni/.project
  100. 13 8
      Zengl_SRC/demos/Android/05-Primitives/jni/demo05.lpi

+ 158 - 62
Zengl_SRC/Update_ZenGL.txt

@@ -1,97 +1,193 @@
+14.03.2023
+	Исправления для статической сборки OGG, Vorbis - убраны динамические зависимости.
+	Исправлены проблемы работы виртуальной клавиатуры в мобильных системах.
+	Включена поддержка виртуальной клавиатуры для мобильных систем, её можно включить и в настольных системах (может быть больше глюков чем для мобильных систем).
+
+10.03.2023
+	Корректировка ZenGL для MacOS.
+
+06.03.2023
+	Удаление libGLU.so для мобильных систем.
+	Корректирование демоверсий для Android.
+
+07.02.2023
+Модуль "zgl_screen"
+	Для Linux перебрана процедура "scr_GetResList". Не доделана до конца. Обрабатывает только одно окно, а ZenGL при этом может отображать окно на другом мониторе.
+	
+12.01.2023
+	Исправления файлов "windows_prebuild.bat" и "linux_prebuild.sh" - теперь создаются папки для копирования динамических библиотек и файлов данных (спасибо github он удаляет пустые папки).	
+
+02.01.2023
+Модуль "zgl_opengles_all"
+	Использующаяся процедура "glColor4f" переименована в "_glColor4f". Все вызовы данной процедуры так же переименованы (нужно только внутри ZenGL).
+	Процедура "glColor4f" была возвращена как стандартная для OpenGL ES (не путать с переименованной выше!).
+
+хх.12.2022
+Исправлена ошибка при первичном создании полноэкранного окна.
+
+20.10.2022
+Модуль "zgl_utils".
+	Процедуре "utf8_toUnicode" возвращено прежнее название "utf8_GetID", а процедура "Unicode_toUTF8" переименована в "ID_toUTF8".
+	Работа процедур не изменилась.
+	
+	Инициализации текста (текстурного текста) - теперь шкала приближена к пиксельной составляющей. 1 пиксель примерно равен 1 пикселю при индексации.
+	Это важно в процедурах setFontTextScale и setTextFontScaleEx - напрямую работающими с установкой размера шрифта.
+
+03.09.2022
+Модуль "zgl_tiles_2d"
+	Убран код конфликтующий при работе с камерой. Этот код или пересмотреть или убрать (больше не восстанавливать).
+
+02.09.2022
+Модуль "zgl_camera_2d".
+	Процедура "cam2d_Init" переименована в "cam2d_DefInit".
+	Добавлена новая процедура с возможностью задания данных камере "procedure cam2d_Init(x, y, angle, zoom: Single; out Camera: zglTCamera2D);"
+	Добавлена процедура "procedure cam2d_CenterSet(Camera: zglPCamera2D; x, y: Single);" - с её помощью можно задать координаты центра камеры. Но вы должны их или точно вычислить перед этим или точно знать заданную точку!
+	Правки к коде, корректирующие работу камеры.
+
+30.08.2022
+Модуль "zglmouse".
+	Добавлена функция "mouse_Move", возвращающая булев результат.
+
+26.08.2022
+Модуль "zglmouse".
+"mouse_Lock(X: Integer = - 1; Y: Integer = - 1)" - переименована в "mouse_LockInXY(X: Integer = - 1; Y: Integer = - 1)".
+
+30.07.2022
+Модуль "zgl_mouse".
+	Добавлена булева переменнная "mouseMove" и "function mouse_Move: Boolean;" - показывающие движется мышь или нет.
+
+25.07.2022
+Добавлен новый модуль "zgl_primitives_2dEX" - расширенные примитивы.
+	На данное время позволяют рисовать широкие линии, цепочку широких линий и квадрат/параллелограм (с прямыми углами) с широким бордюром. Параллелограм прозрачный или залитый внутри. У залитого можно отметить возможность флага "FX2D_VCA" либо для бордюра, либо для внутренней части.
+
+Модуль "zgl_text"
+	добавлена функция "text_GetXY(fnt: LongWord; const Rect: zglTRect2D; const Text: UTF8String; Flags: LongWord = TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER): zglTPoint2D;" - для тех моментов, когда текст идёт в одну строку и статичен (либо перемещается вместе с кватратом/прямоугольником). Достаточно для текста вызвать данную процедуру и получить координаты начала прорисовки текста (теперь вызывать каждый раз "text_drawInRect" не нужно) и прорисовывать вызовом "text_Draw".
+	Данная функция не решает проблем с переносом текста на другую строку.
+
+------------------------------------------------------------------------------------------
 ZenGL 3.29 - обновления:
+	добавлена процедура перехвата клавиши Escape, для выхода из программы:
+	"procedure app_PKeyEscape" - регистрируется с помощью "zgl_Reg" и флага "SYS_KEYESCAPE".
 
-Обновлены демки под Android.
-Изменён java-код.
-Виртуальная клавиатура настроена под Android. (виртуальные джойстики не редактировались, это в процессе).
-Исправлены ошибки при работе с виртуальной клавиатурой.
-Введены процедуры для показа/скрытия клавиатуры (для поля ввода не обязательно, там это происходит автоматически).
+Модуль gegl_color:
+	"procedure Set_numColor(numColor: LongWord)" заменена на "procedure Set_ToNumColor(numColor: LongWord)"
+	
+	добавлены функции для работы с каждым элементом цвета в отдельности: 
+	"function Get_ElColor(num, El: LongWord): LongWord;"
+	"function Set_ElColor(num, El: LongWord; value: Byte): Boolean;"
 
-!!! Обратить внимание, для мобильных систем поле ввода будет активироваться только с первого касания. Остальные пальцы не активируют поле ввода. Если это необходимо, то можно будет этот момент доработать.
+	исправлены: 
+	"procedure Correct_Color(num, Color: LongWord)"
+	"function Get_Color(num: LongWord): LongWord" 
+	- при работе с ними была была не верно обрабатываемая информация.
 
-Исправлены ошибки поля ввода.
+В модуль "zgl_utils" добавлены функции:
+	"function u_FloatToStr(Value: Double; Digits: Integer = 2): UTF8String"
+	"function u_StrToFloat(const Value: UTF8String): Double"
+	для работы с числами двойной точности.
 
---------------------------------------------------------------------------------
-Всё что связано с дисплейными списками было удалено из минимальной версии OpenGL. И теперь относится только к основной-устаревшей.
+	Процедура "procedure fx2d_SetVertexes(x1, y1, x2, y2, x3, y3, x4, y4: Single)" заменена на "procedure fx2d_SetVertexes(xLeft, yUp, xRight, yDown: Single)" и теперь работает только с параллелограммами.
+	Причина изменения: ускорение работы программы. Для работы с произвольными четырёхугольниками, надо работать с треугольниками.
+	Требует дальнейших изменений?! Добавить обработку подобным образом треугольников?!
 
-Внимание!!! Нижеследующие изменения не затрагивали demo12!!! И при её использовании (render_target) я не гарантирую точной работы вашего кода для OpenGL. Нужно знать, требуется это или нет. Потому что 12-я демка была создана именно для 2D.
---------------------------------------------------------------------------------
-ZenGL 3.29 - обновления:
+	Добавлен дефайн "KEYBOARD_OLD_FUNCTION". Позволяет работать со старыми функциями клавиатуры и полем ввода. Смотрите третью демку.
+
+	Поле ввода теперь более самодостаточное. Для работы с ним нужно только загрузить шрифт и указать его для поля ввода. Размер шрифта зависит от самого поля ввода.
+
+	Обновлены демки под Android.
+	Изменён java-код.
+	Виртуальная клавиатура настроена под Android. (виртуальные джойстики не редактировались, это в процессе).
+	Исправлены ошибки при работе с виртуальной клавиатурой.
+	Введены процедуры для показа/скрытия клавиатуры (для поля ввода не обязательно, там это происходит автоматически).
 
-Процедура "scr_SetViewPort" заменена на "scr_SetViewPort2D".
-Введена динамическая процедура "SetViewPort". По умолчанию она использует процедуру "scr_SetViewPort2D".
-Добавлен флаг "OGL_VIEW_PORT" для регистрации посредством "zgl_Reg" динамической процедуры "SetViewPort".
+	!!! Обратить внимание, для мобильных систем поле ввода будет активироваться только с первого касания. Остальные пальцы не активируют поле ввода. Если это необходимо, то можно будет этот момент доработать.
 
-Модифицирована работа с LCL. При сильном желании, теперь размеры формы можно менять. Смотрите процедуру "FormResize".
+	Исправлены ошибки поля ввода.
 
-Добавлена пользовательская объявляемая процедура для MatrixMode - "SetUserMode".
-Изменена процедура установки для MatrixMode. "procedure SetCurrentMode(mode: LongWord = Mode2D);"
-Изменена процедура "SetCurrentMode" - теперь можно выбирать режим для MatrixMode (2D, 3D, пользовательский).
-Добавлены рабочие флаги "ModeUser", "Mode2D" и "Mode3D" для процедуры "SetCurrentMode".
-Добавлен флаг "OGL_USER_MODE" для регистации посредством "zgl_Reg" пользовательской процедуры "SetUserMode".
-Теперь пользователь может создать сам нужную ему процедуру для использования используемойвидовой модели в OpenGL.
+------------------------------------------------------------------------------------------
+Всё что связано с дисплейными списками было удалено из минимальной версии OpenGL. Теперь относится только к основной-устаревшей.
 
---------------------------------------------------------------------------------
+Внимание!!! Нижеследующие изменения не затрагивали demo12!!! И при её использовании (render_target) я не гарантирую точной работы вашего кода для OpenGL. Нужно знать, требуется это или нет. Потому что 12-я демка была создана именно для 2D.
+
+------------------------------------------------------------------------------------------
+ZenGL 3.29 - обновления:
+Модуль "zgl_screen"
+	"procedure scr_SetViewPort" заменена на "procedure scr_SetViewPort2D".
+	Введена динамическая "procedure SetViewPort". По умолчанию она использует "procedure scr_SetViewPort2D".
+	Добавлен флаг "OGL_VIEW_PORT" для регистрации, посредством "procedure zgl_Reg", динамической "procedure SetViewPort".
+
+	Модифицирована работа с LCL. При сильном желании, теперь размеры формы можно менять.
+	Смотрите "procedure FormResize".
+
+Модуль "zgl_render"
+	Добавлена пользовательская объявляемая процедура для MatrixMode - "SetUserMode".
+	Изменена процедура установки для MatrixMode - "procedure SetCurrentMode(mode: LongWord = Mode2D);" - теперь можно выбирать режим для MatrixMode (2D, 3D, пользовательский).
+	Добавлены рабочие флаги "ModeUser", "Mode2D" и "Mode3D" для "procedure SetCurrentMode".
+	Добавлен флаг "OGL_USER_MODE" для регистации, посредством "procedure zgl_Reg", пользовательской "procedure SetUserMode".
+	Теперь пользователь может создать сам нужную ему процедуру для использования используемой видовой модели в OpenGL.
+
+------------------------------------------------------------------------------------------
 ZenGL 3.29
 
 Добавлено:
-- процедура сброса таймера. zgl_Reg(SYS_RESET, @gameReset) - задействована для режима паузы. Если вы работаете с физикой и с точным временем.
-- добавлены прорисовываемые примитивы. Циклическая или ломанная линии pr2d_LineSORL (Strip or Loop line). Треугольник pr2d_Triangle. Произвольный четырёхугольник pr2d_quad.
-- добавлена функция пересечения двух прямоугольников (вертикальных или горизонтальных) по двум точкам col2d_RectBPEP (Begin point - End point).
+	- процедура сброса таймера. zgl_Reg(SYS_RESET, @gameReset) - задействована для режима паузы. Если вы работаете с физикой и с точным временем.
+	- добавлены прорисовываемые примитивы. Циклическая или ломанная линии pr2d_LineSORL (Strip or Loop line). Треугольник pr2d_Triangle. Произвольный четырёхугольник pr2d_quad.
+	- добавлена функция пересечения двух прямоугольников (вертикальных или горизонтальных) по двум точкам col2d_RectBPEP (Begin point - End point).
 
-- добавлены комментарии и переводы к ним.
+	- добавлены комментарии и переводы к ним.
 
 Green Engine:
-- модуль gegl_Color - для ускоренной работы с цветом. Используется в основном для примитивов zgl_primitives_2d. Все значения 
-- в поле ввода добавлены ограничивающие функции. Так же есть возможность создать самим ограничивающие функции.
+	- модуль gegl_Color - для ускоренной работы с цветом. Используется в основном для примитивов zgl_primitives_2d. Все значения 
+	- в поле ввода добавлены ограничивающие функции. Так же есть возможность создать самим ограничивающие функции.
 
 Работа с экраном:
-- добавлена функция для установки дальности прорисовки для 2D - Set2DNearFar. И объекты можно располагать по "глубине" экрана (по координате Z). При включении теста глубины, дальние объекты будут перекрыты ближними (на данное время не проверял). Эту функцию можно использовать и для 3D, но учитывать что Near не должно быть меньше нуля.
-- при включении/выключении флага DEPTH_BUFFER (zgl_Enable/zgl_Disable), включается очистка GL_DEPTH_BUFFER_BIT. Что позволяет правильно работать с проверкой глубины "https://www.opengl.org/archives/resources/faq/technical/depthbuffer.htm" - для ознакомления.
-- в функциях zgl_Enable и zgl_Disable добавлен флаг XY_IN_CENTER_WINDOW. При его включении X = 0, Y = 0 будут в центре экрана. (внимание, процедуры прорисовки примитивов не перерабатывались под данный флаг, потому может быть смещение примитивов на 1 пиксель при прорисовке).
+	- добавлена функция для установки дальности прорисовки для 2D - Set2DNearFar. И объекты можно располагать по "глубине" экрана (по координате Z). При включении теста глубины, дальние объекты будут перекрыты ближними (на данное время не проверял). Эту функцию можно использовать и для 3D, но учитывать что Near не должно быть меньше нуля.
+	- при включении/выключении флага DEPTH_BUFFER (zgl_Enable/zgl_Disable), включается очистка GL_DEPTH_BUFFER_BIT. Что позволяет правильно работать с проверкой глубины "https://www.opengl.org/archives/resources/faq/technical/depthbuffer.htm" - для ознакомления.
+	- в функциях zgl_Enable и zgl_Disable добавлен флаг XY_IN_CENTER_WINDOW. При его включении X = 0, Y = 0 будут в центре экрана. (внимание, процедуры прорисовки примитивов не перерабатывались под данный флаг, потому может быть смещение примитивов на 1 пиксель при прорисовке).
 
 OpenGL
-- добавлены процедуры OpenGL для работы с дисплейными списками. Так же добавлены функции для работы с буферами в минимальную версию OpenGL.
-- добавлен модуль "zgl_GLX_WGL.pas" и отделены функции из модуля "zgl_opengl_all.pas" для работы с GLX и WGL. Всё обновлено в соответствии с окончанием 2021-го года, за исключением определённых заголовков.
-- добавлен модуль "zgl_GLU.pas", отделены функции из модуля "zgl_opengl_all.pas" для работы с GLU.
-- добавлен модуль "zgl_pasOpenGL.pas". Он обновлён согласно последним изменениям на конец 2021 года (возможны ошибки, требуется тестирование). По умолчанию включен минимальный набор OpenGL спользуемый в ZenGL.
-- добавлен файл конфигурации для модулей "zgl_GLX_WGL.pas", "zgl_pasOpenGL.pas" - "GLdefine.cfg" и файл с константами и типами "zgl_gltypeconst.pas".
-- добавлена процедура procedure "SetGLVersionAndFlags({$IfNDef MAC_COCOA}major, minor: Integer; flag: LongWord = COMPATIBILITY_VERSION{$Else}mode: LongWord{$EndIf});" для Linux и Windows введена возможность создания контекста для OpenGL 3+ (в MacOS она была сразу, изменено название).
+	- добавлены процедуры OpenGL для работы с дисплейными списками. Так же добавлены функции для работы с буферами в минимальную версию OpenGL.
+	- добавлен модуль "zgl_GLX_WGL.pas" и отделены функции из модуля "zgl_opengl_all.pas" для работы с GLX и WGL. Всё обновлено в соответствии с окончанием 2021-го года, за исключением определённых заголовков.
+	- добавлен модуль "zgl_GLU.pas", отделены функции из модуля "zgl_opengl_all.pas" для работы с GLU.
+	- добавлен модуль "zgl_pasOpenGL.pas". Он обновлён согласно последним изменениям на конец 2021 года (возможны ошибки, требуется тестирование). По умолчанию включен минимальный набор OpenGL спользуемый в ZenGL.
+	- добавлен файл конфигурации для модулей "zgl_GLX_WGL.pas", "zgl_pasOpenGL.pas" - "GLdefine.cfg" и файл с константами и типами "zgl_gltypeconst.pas".
+	- добавлена процедура procedure "SetGLVersionAndFlags({$IfNDef MAC_COCOA}major, minor: Integer; flag: LongWord = COMPATIBILITY_VERSION{$Else}mode: LongWord{$EndIf});" для Linux и Windows введена возможность создания контекста для OpenGL 3+ (в MacOS она была сразу, изменено название).
 
-- многие типы перенесены в модуль zgl_types.
-- структуры разделены на 2D и 3D. И примитивы так же разделены на 2D и 3D. Точнее в конце структур/примитивов они добавлены - изменения не значительны (как пример: zglTRect -> zglTRect2D).
+	- многие типы перенесены в модуль zgl_types.
+	- структуры разделены на 2D и 3D. И примитивы так же разделены на 2D и 3D. Точнее в конце структур/примитивов они добавлены - изменения не значительны (как пример: zglTRect -> zglTRect2D).
 
 Изменено:
-- для таймеров изменены рабочие константы на t_Start, t_SleepToStart, t_Stop, t_SleepToStop. Во избежание случайных совпадений.
-- для мыши возращены изначальные функции и константы (работа функций не изменена), для совместимости и удобства.
-- для тачпада тоже изменено, но не проверено.
+	- для таймеров изменены рабочие константы на t_Start, t_SleepToStart, t_Stop, t_SleepToStop. Во избежание случайных совпадений.
+	- для мыши возращены изначальные функции и константы (работа функций не изменена), для совместимости и удобства.
+	- для тачпада тоже изменено, но не проверено.
 
 Недоработки!
-Проблемы работы когда у вас два монитора.
-Linux: решить проблему при переключении разрешений экрана. Используется XRandr - поэтому надо делать проверку на количество мониторов и местоположение на мониторе. Полноэкранный режим - это окно для двух мониторов? Или особое свойство работы XRandr? Поиск решения проблемы отложен.
+	Проблемы работы когда у вас два монитора.
+	Linux: решить проблему при переключении разрешений экрана. Используется XRandr - поэтому надо делать проверку на количество мониторов и местоположение на мониторе. Полноэкранный режим - это окно для двух мониторов? Или особое свойство работы XRandr? Поиск решения проблемы отложен.
 
---------------------------------------------------------------------------------
+------------------------------------------------------------------------------------------
 Изменения в версии 3.28.
-- Добавлена библиотека Green Engine собственной разработки. Это вроде как дополнительное API для библиотеки ZenGL. Разрабатывалась ранее и клавиатура из Green Engine была добавлена в более ранние версии. Внимание!!! Работает только с ZenGL!!!
-- В данной версии GE создано независимое от платформы поле ввода. Должно работать на всех платформах, но на мобильных платформах и MacOS не проверено. Будет проверено и добавлено в исправления.
+	- Добавлена библиотека Green Engine собственной разработки. Это вроде как дополнительное API для библиотеки ZenGL. Разрабатывалась ранее и клавиатура из Green Engine была добавлена в более ранние версии. Внимание!!! Работает только с ZenGL!!!
+    - В данной версии GE создано независимое от платформы поле ввода. Должно работать на всех платформах, но на мобильных платформах и MacOS не проверено. Будет проверено и добавлено в исправления.
 
-- В дальнейшем ожидается доработка библиотеки GE.
+    - В дальнейшем ожидается доработка библиотеки GE.
 
-- изменены названия малой части процедур/функций, для более визуального восприятия. В частности utf8_GetID заменена на utf8_toUnicode так как она как раз переводит UTF8 в юникод.
+	- изменены названия малой части процедур/функций, для более визуального восприятия. В частности utf8_GetID заменена на utf8_toUnicode так как она как раз переводит UTF8 в юникод.
 
-- добавлена функция function Unicode_toUTF8(Symb: LongWord): UTF8String; перевода из юникода в UTF8.
+	- добавлена функция function Unicode_toUTF8(Symb: LongWord): UTF8String; перевода из юникода в UTF8.
 
-- изменена и ускорена работа с текстом.
-  - теперь вы не получите ошибку кода, если символа не существует при загруженном шрифте. Все не существующие символы будут отмечены знаком "?".
-  - вы сможете писать на любом языке, но, если шрифт для этого не предназначен, все "не печатаемые" (не определённые в шрифте) символы будут так же отмечены знаком "?". При сохранинии такого текста в файл, вероятнее всего он будет выведен правильно.
-  - в демонстрационной версии 6, показана работа со шрифтами. Если вам нужен шрифт определённого размера, вы должны с ним работать через procedure setFontTextScale(Index: LongWord; fnt: Byte);, она позволит вам более быстро работать с данным шрифтом. Если не постоянно, то смотрите демонстрационную версию.
-- дополнен ряд функций для работы с текстом-шрифтами. Смотрите в файле zgl_text.pas.
-- созданы процедуры для загрузки/сохранения текста procedure txt_LoadFromFile(const FileName: UTF8String; out Buf: UTF8String);, procedure txt_SaveFromFile(const FileName: UTF8String; const Buf: UTF8String);.
+	- изменена и ускорена работа с текстом.
+	- теперь вы не получите ошибку кода, если символа не существует при загруженном шрифте. Все не существующие символы будут отмечены знаком "?".
+	- вы сможете писать на любом языке, но, если шрифт для этого не предназначен, все "не печатаемые" (не определённые в шрифте) символы будут так же отмечены знаком "?". При сохранинии такого текста в файл, вероятнее всего он будет выведен правильно.
+	- в демонстрационной версии 6, показана работа со шрифтами. Если вам нужен шрифт определённого размера, вы должны с ним работать через procedure setFontTextScale(Index: LongWord; fnt: Byte);, она позволит вам более быстро работать с данным шрифтом. Если не постоянно, то смотрите демонстрационную версию.
+	- дополнен ряд функций для работы с текстом-шрифтами. Смотрите в файле zgl_text.pas.
+	- созданы процедуры для загрузки/сохранения текста procedure txt_LoadFromFile(const FileName: UTF8String; out Buf: UTF8String);, procedure txt_SaveFromFile(const FileName: UTF8String; const Buf: UTF8String);.
 
-- были исправлены некоторые ошибки в коде и изменены части работы с клавиатурой. keysLast (bold) - сейчас работает только для печатаемых клавиш.
+	- были исправлены некоторые ошибки в коде и изменены части работы с клавиатурой. keysLast (bold) - сейчас работает только для печатаемых клавиш.
 
-- введена процедура постотрисовки. Регистрируется с помощью zgl_Reg и флагом SYS_POSTDRAW. Срабатываете данная функция только после того как выведется всё в окно. Бывает нужно, когда нужно работать с видеокартой, но не нужно ни чего выводить.
+	- введена процедура постотрисовки. Регистрируется с помощью zgl_Reg и флагом SYS_POSTDRAW. Срабатываете данная функция только после того как выведется всё в окно. Бывает нужно, когда нужно работать с видеокартой, но не нужно ни чего выводить.
 
-- теперь обработка клавиатуры/мыши/тачпада необходимо производить с помощью регистрируемой процедуры и флагом SYS_EVENTS. Производить их "очистку" больше  нет необходимости.
-- добавленны комментарии в некоторые модули. Постарался сразу же добавить и на английском языке.
+	- теперь обработка клавиатуры/мыши/тачпада необходимо производить с помощью регистрируемой процедуры и флагом SYS_EVENTS. Производить их "очистку" больше  нет необходимости.
+	- добавленны комментарии в некоторые модули. Постарался сразу же добавить и на английском языке.
 
-- были исправления в части кода, о которых уже забыл... )))
+	- были исправления в части кода, о которых уже забыл... )))

TEMPAT SAMPAH
Zengl_SRC/bin/Android/arm64-v8a/libjpeg_turbo.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/arm64-v8a/libogg.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/arm64-v8a/libopenal.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/armeabi-v7a/libjpeg_turbo.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/armeabi-v7a/libogg.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/armeabi-v7a/libopenal.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/armv5/libGLU.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/armv6/libGLU.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/x86/libjpeg_turbo.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/x86/libogg.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/x86/libopenal.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/x86_64/libjpeg_turbo.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/x86_64/libogg.so


TEMPAT SAMPAH
Zengl_SRC/bin/Android/x86_64/libopenal.so


+ 0 - 1
Zengl_SRC/demos/Android/01 - Initialization/assets/res.txt

@@ -1 +0,0 @@
-folder res

+ 0 - 95
Zengl_SRC/demos/Android/01 - Initialization/jni/demo01.lpr

@@ -1,95 +0,0 @@
-library demo01;
-
-// RU: Этот файл содержит некоторые настройки(например использовать ли статическую компиляцию) и определения ОС под которую происходит
-// компиляция.
-// EN: This file contains some options(e.g. whether to use static compilation) and defines of OS for which is compilation going.
-{$I zglCustomConfig.cfg}
-
-uses
-  zgl_application,
-  zgl_screen,
-  zgl_window,
-  zgl_timers,
-  zgl_utils,
-  zgl_log
-  ;
-
-var
-  DirApp  : UTF8String;
-  DirHome : UTF8String;
-
-  TimeStart  : LongWord = 0;
-
-procedure Init;
-begin
-  // RU: Тут можно выполнять загрузку основных ресурсов.
-  // EN: Here can be loading of main resources.
-
-end;
-
-procedure Draw;
-begin
-  // RU: Тут "рисуем" что угодно :)
-  // EN: Here "draw" anything :)
-end;
-
-procedure Update( dt : Double );
-begin
-  // RU: Эта функция наземенима для реализация плавного движения чего-либо, т.к. точность таймеров ограничена FPS.
-  // EN: This function is the best way to implement smooth moving of something, because accuracy of timers are restricted by FPS.
-end;
-
-procedure Timer;
-begin
-  //
-end;
-
-procedure Restore;
-begin
-  // RU: Восстановление ресурсов нужно реализовывать тут.
-  // EN: Restoring of resources should be implemented here.
-end;
-
-procedure Java_zengl_android_ZenGL_Main( var env; var thiz ); cdecl;
-begin
-  // RU: Для загрузки/создания каких-то своих настроек/профилей/etc. можно получить путь к домашенему каталогу пользователя, или к исполняемому
-  //     файлу(для GNU/Linux - изменено, если будет программа содержать свой собственный путь, то путь до самого исполняемого файла будет прописан).
-  //     На Android DIRECTORY_APPLICATION возвращает полный путь к apk-файлу
-
-  // EN: For loading/creating your own options/profiles/etc. you can get path to user home directory, or to executable file(not works for GNU/Linux).
-  //     On Android DIRECTORY_APPLICATION returns full path to apk-file
-  DirApp  := utf8_Copy( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
-  DirHome := utf8_Copy( PAnsiChar( zgl_Get( DIRECTORY_HOME ) ) );
-
-  // RU: Создаем таймер с интервалом 1000мс.
-  // EN: Create a timer with interval 1000ms.
-  TimeStart := timer_Add( @Timer, 100, t_Start);
-
-  // RU: Регистрируем процедуру, что выполнится сразу после инициализации ZenGL.
-  // EN: Register the procedure, that will be executed after ZenGL initialization.
-  zgl_Reg( SYS_LOAD, @Init );
-  // RU: Регистрируем процедуру, где будет происходить рендер.
-  // EN: Register the render procedure.
-  zgl_Reg( SYS_DRAW, @Draw );
-  // RU: Регистрируем процедуру, которая будет принимать разницу времени между кадрами.
-  // EN: Register the procedure, that will get delta time between the frames.
-  zgl_Reg( SYS_UPDATE, @Update );
-  // RU: Очень важная для Android функция, которая вызывается при возврате фокуса приложению если необходимо восстановить ресурсы.
-  // EN: Very important function for Android, which will be called every time when application gets the focus and resources need to restore.
-  zgl_Reg( SYS_ANDROID_RESTORE, @Restore );
-
-  // RU: Указываем первоначальные настройки.
-  //     изменено, указывать ни чего не надо, либо можем указать размеры экрана с которым будем работать.
-  // EN: Set screen options.
-  scr_SetOptions();
-end;
-
-exports
-  // RU: Эта функция должна быть реализована проектом, который использует ZenGL.
-  // EN: This function should be implemented by project which is use ZenGL.
-  Java_zengl_android_ZenGL_Main,
-
-  // RU: Функции реализуемые ZenGL, которые должны быть экспортированы.
-  // EN: Functions which are implemented by ZenGL and should be exported.
-  {$I android_export.inc}
-End.

+ 0 - 7
Zengl_SRC/demos/Android/01 - Initialization/jni/windows_prebuild.bat

@@ -1,7 +0,0 @@
-copy ..\..\..\..\bin\Android\armv6\libzenjpeg.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libopenal.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libogg.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libvorbis.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libtheoradec.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libchipmunk.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libGLU.so ..\libs\armeabi\

+ 0 - 1
Zengl_SRC/demos/Android/01 - Initialization/libs/armeabi/0.txt

@@ -1 +0,0 @@
-folder libs

+ 9 - 0
Zengl_SRC/demos/Android/01-Initialization/.classpath

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>

+ 33 - 0
Zengl_SRC/demos/Android/01-Initialization/.project

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>01 - Initialization</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

+ 0 - 0
Zengl_SRC/demos/Android/01 - Initialization/AndroidManifest.xml → Zengl_SRC/demos/Android/01-Initialization/AndroidManifest.xml


+ 11 - 8
Zengl_SRC/demos/Android/01 - Initialization/jni/demo01.lpi → Zengl_SRC/demos/Android/01-Initialization/jni/demo01.lpi

@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <CONFIG>
   <ProjectOptions>
-    <Version Value="11"/>
+    <Version Value="12"/>
     <PathDelim Value="\"/>
     <General>
       <Flags>
         <MainUnitHasCreateFormStatements Value="False"/>
         <MainUnitHasTitleStatement Value="False"/>
         <MainUnitHasScaledStatement Value="False"/>
+        <CompatibilityMode Value="True"/>
       </Flags>
       <SessionStorage Value="InProjectDir"/>
-      <MainUnit Value="0"/>
       <Title Value="demo01"/>
       <UseAppBundle Value="False"/>
       <ResourceType Value="res"/>
@@ -24,7 +24,6 @@
     </PublishOptions>
     <RunParams>
       <FormatVersion Value="2"/>
-      <Modes Count="0"/>
     </RunParams>
     <Units Count="1">
       <Unit0>
@@ -40,18 +39,17 @@
       <Filename Value="..\libs\armeabi\demo01"/>
     </Target>
     <SearchPaths>
-      <IncludeFiles Value="..\..\..\..\headers;..\..\..\..\headers\android;$(ProjOutDir);..\..\..\..\src;..\..\..\..\srcGL;..\..\..\..\srcGEGL"/>
-      <Libraries Value="..\..\..\..\bin\Android\armv6;C:\codetyphon\binLibraries\android-4.0.2-api14-arm"/>
-      <OtherUnitFiles Value="..\..\..\..\src;..\..\..\..\srcGL;..\..\..\..\srcGEGL;..\..\..\..\lib\zlib\arm-linux;..\..\..\..\lib\zip\arm-linux;..\..\..\..\lib\ogg\arm-linux;..\..\..\..\lib\theora\arm-linux"/>
+      <IncludeFiles Value="..\..\..\..\headers;..\..\..\..\headers\android;$(ProjOutDir);..\..\..\..\srcGEGL;..\..\..\..\src;..\..\..\..\srcGL"/>
+      <Libraries Value="..\..\..\..\bin\Android\armv6"/>
+      <OtherUnitFiles Value="..\..\..\..\src;..\..\..\..\srcGEGL;..\..\..\..\srcGL;..\..\..\..\lib\zlib\arm-linux;..\..\..\..\lib\zip\arm-linux;..\..\..\..\lib\ogg\arm-linux;..\..\..\..\lib\theora\arm-linux;..\..\..\..\bin\Android\armv5"/>
       <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
     </SearchPaths>
     <CodeGeneration>
       <SmartLinkUnit Value="True"/>
-      <RelocatableUnit Value="True"/>
       <TargetCPU Value="arm"/>
       <TargetOS Value="android"/>
       <Optimizations>
-        <OptimizationLevel Value="2"/>
+        <OptimizationLevel Value="3"/>
       </Optimizations>
     </CodeGeneration>
     <Linking>
@@ -63,6 +61,11 @@
         <ExecutableType Value="Library"/>
       </Options>
     </Linking>
+    <Other>
+      <ExecuteBefore>
+        <Command Value="sh prebuild.sh"/>
+      </ExecuteBefore>
+    </Other>
   </CompilerOptions>
   <Debugging>
     <Exceptions Count="3">

+ 96 - 95
Zengl_SRC/demos/Android/02 - Resources/jni/demo02.lpr → Zengl_SRC/demos/Android/01-Initialization/jni/demo01.lpr

@@ -1,95 +1,96 @@
-library demo01;
-
-// RU: Этот файл содержит некоторые настройки(например использовать ли статическую компиляцию) и определения ОС под которую происходит
-// компиляция.
-// EN: This file contains some options(e.g. whether to use static compilation) and defines of OS for which is compilation going.
-{$I zglCustomConfig.cfg}
-
-uses
-  zgl_application,
-  zgl_screen,
-  zgl_window,
-  zgl_timers,
-  zgl_utils,
-  zgl_log
-  ;
-
-var
-  DirApp  : UTF8String;
-  DirHome : UTF8String;
-
-  TimeStart  : LongWord = 0;
-
-procedure Init;
-begin
-  // RU: Тут можно выполнять загрузку основных ресурсов.
-  // EN: Here can be loading of main resources.
-
-end;
-
-procedure Draw;
-begin
-  // RU: Тут "рисуем" что угодно :)
-  // EN: Here "draw" anything :)
-end;
-
-procedure Update( dt : Double );
-begin
-  // RU: Эта функция наземенима для реализация плавного движения чего-либо, т.к. точность таймеров ограничена FPS.
-  // EN: This function is the best way to implement smooth moving of something, because accuracy of timers are restricted by FPS.
-end;
-
-procedure Timer;
-begin
-  //
-end;
-
-procedure Restore;
-begin
-  // RU: Восстановление ресурсов нужно реализовывать тут.
-  // EN: Restoring of resources should be implemented here.
-end;
-
-procedure Java_zengl_android_ZenGL_Main( var env; var thiz ); cdecl;
-begin
-  // RU: Для загрузки/создания каких-то своих настроек/профилей/etc. можно получить путь к домашенему каталогу пользователя, или к исполняемому
-  //     файлу(для GNU/Linux - изменено, если будет программа содержать свой собственный путь, то путь до самого исполняемого файла будет прописан).
-  //     На Android DIRECTORY_APPLICATION возвращает полный путь к apk-файлу
-
-  // EN: For loading/creating your own options/profiles/etc. you can get path to user home directory, or to executable file(not works for GNU/Linux).
-  //     On Android DIRECTORY_APPLICATION returns full path to apk-file
-  DirApp  := utf8_Copy( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
-  DirHome := utf8_Copy( PAnsiChar( zgl_Get( DIRECTORY_HOME ) ) );
-
-  // RU: Создаем таймер с интервалом 1000мс.
-  // EN: Create a timer with interval 1000ms.
-  TimeStart := timer_Add( @Timer, 100, t_Start);
-
-  // RU: Регистрируем процедуру, что выполнится сразу после инициализации ZenGL.
-  // EN: Register the procedure, that will be executed after ZenGL initialization.
-  zgl_Reg( SYS_LOAD, @Init );
-  // RU: Регистрируем процедуру, где будет происходить рендер.
-  // EN: Register the render procedure.
-  zgl_Reg( SYS_DRAW, @Draw );
-  // RU: Регистрируем процедуру, которая будет принимать разницу времени между кадрами.
-  // EN: Register the procedure, that will get delta time between the frames.
-  zgl_Reg( SYS_UPDATE, @Update );
-  // RU: Очень важная для Android функция, которая вызывается при возврате фокуса приложению если необходимо восстановить ресурсы.
-  // EN: Very important function for Android, which will be called every time when application gets the focus and resources need to restore.
-  zgl_Reg( SYS_ANDROID_RESTORE, @Restore );
-
-  // RU: Указываем первоначальные настройки.
-  //     изменено, указывать ни чего не надо, либо можем указать размеры экрана с которым будем работать.
-  // EN: Set screen options.
-  scr_SetOptions();
-end;
-
-exports
-  // RU: Эта функция должна быть реализована проектом, который использует ZenGL.
-  // EN: This function should be implemented by project which is use ZenGL.
-  Java_zengl_android_ZenGL_Main,
-
-  // RU: Функции реализуемые ZenGL, которые должны быть экспортированы.
-  // EN: Functions which are implemented by ZenGL and should be exported.
-  {$I android_export.inc}
-End.
+library demo01;
+
+// RU: Этот файл содержит некоторые настройки(например использовать ли статическую компиляцию) и определения ОС под которую происходит
+// компиляция
+// EN: This file contains some options(e.g. whether to use static compilation) and defines of OS for which is compilation going.
+{$I zglCustomConfig.cfg}
+
+uses
+  zgl_application,
+  zgl_screen,
+  zgl_window,
+  zgl_timers,
+  zgl_utils,
+  zgl_types,
+  zgl_log
+  ;
+
+var
+  DirApp  : UTF8String;
+  DirHome : UTF8String;
+
+  TimeStart  : Byte = 0;
+
+procedure Init;
+begin
+  //  RU: Тут можно выполнять загрузку основных ресурсов.
+  // EN: Here can be loading of main resources.
+
+end;
+
+procedure Draw;
+begin
+  // RU: Тут "рисуем" что угодно :)
+  // EN: Here "draw" anything :)
+end;
+
+procedure Update( dt : Double );
+begin
+  // RU:  Эта функция наземенима для реализация плавного движения чего-либо, т.к. точность таймеров ограничена FPS.
+  // EN: This function is the best way to implement smooth moving of something, because accuracy of timers are restricted by FPS.
+end;
+
+procedure Timer;
+begin
+  //
+end;
+
+procedure Restore;
+begin
+  // RU: Восстановление ресурсов нужно реализовывать тут.
+  // EN: Restoring of resources should be implemented here.
+end;
+
+procedure Java_zengl_android_ZenGL_Main( var env; var thiz ); cdecl;
+begin
+  // Для загрузки/создания каких-то своих настроек/профилей/etc. можно получить путь к домашенему каталогу пользователя, или к исполняемому
+  // файлу(для GNU/Linux - изменено, если будет программа содержать свой собственный путь, то путь до самого исполняемого файла будет прописан).
+   //     На Android DIRECTORY_APPLICATION возвращает полный путь к apk-файлу
+
+  // EN: For loading/creating your own options/profiles/etc. you can get path to user home directory, or to executable file(not works for GNU/Linux).
+  //     On Android DIRECTORY_APPLICATION returns full path to apk-file
+  DirApp  := utf8_Copy( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
+  DirHome := utf8_Copy( PAnsiChar( zgl_Get( DIRECTORY_HOME ) ) );
+
+  // RU: Создаем таймер с интервалом 1000мс.
+  // EN: Create a timer with interval 1000ms.
+  TimeStart := timer_Add( @Timer, 100, t_Start);
+
+  // RU:  Регистрируем процедуру, что выполнится сразу после инициализации ZenGL.
+  // EN: Register the procedure, that will be executed after ZenGL initialization.
+  zgl_Reg( SYS_LOAD, @Init );
+  // RU:  Регистрируем процедуру, где будет происходить рендер.
+  // EN: Register the render procedure.
+  zgl_Reg( SYS_DRAW, @Draw );
+  // RU: Регистрируем процедуру, которая будет принимать разницу времени между кадрами.
+  // EN: Register the procedure, that will get delta time between the frames.
+  zgl_Reg( SYS_UPDATE, @Update );
+  // RU: Очень важная для Android функция, которая вызывается при возврате фокуса приложению если необходимо восстановить ресурсы.
+  // EN: Very important function for Android, which will be called every time when application gets the focus and resources need to restore.
+  zgl_Reg( SYS_ANDROID_RESTORE, @Restore );
+
+  // RU:  Указываем первоначальные настройки.
+  // изменено, указывать ни чего не надо, либо можем указать размеры экрана с которым будем работать.
+  // EN: Set screen options.
+  scr_SetOptions();
+end;
+
+exports
+  // RU: Эта функция должна быть реализована проектом, который использует ZenGL
+  // EN: This function should be implemented by project which is use ZenGL
+  Java_zengl_android_ZenGL_Main,
+
+  // RU: Функции реализуемые ZenGL, которые должны быть экспортированы
+  // EN: Functions which are implemented by ZenGL and should be exported
+  {$I android_export.inc}
+End.

+ 152 - 0
Zengl_SRC/demos/Android/01-Initialization/jni/demo01.lps

@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectSession>
+    <PathDelim Value="\"/>
+    <Version Value="12"/>
+    <BuildModes Active="Default"/>
+    <Units Count="15">
+      <Unit0>
+        <Filename Value="demo01.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <IsVisibleTab Value="True"/>
+        <TopLine Value="37"/>
+        <CursorPos X="47" Y="67"/>
+        <UsageCount Value="28"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="..\..\..\..\src\zgl_application.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="159"/>
+        <CursorPos X="22" Y="180"/>
+        <UsageCount Value="13"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="..\..\..\..\src\zgl_main.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="426"/>
+        <CursorPos X="39" Y="449"/>
+        <UsageCount Value="11"/>
+      </Unit2>
+      <Unit3>
+        <Filename Value="..\..\..\..\src\zgl_screen.pas"/>
+        <EditorIndex Value="-1"/>
+        <CursorPos X="2" Y="29"/>
+        <UsageCount Value="13"/>
+      </Unit3>
+      <Unit4>
+        <Filename Value="..\..\..\..\src\zgl_window.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="23"/>
+        <CursorPos X="3" Y="53"/>
+        <UsageCount Value="11"/>
+      </Unit4>
+      <Unit5>
+        <Filename Value="..\..\..\..\src\zgl_opengles.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="290"/>
+        <CursorPos X="73" Y="293"/>
+        <UsageCount Value="11"/>
+      </Unit5>
+      <Unit6>
+        <Filename Value="..\..\..\..\src\zgl_opengles_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="897"/>
+        <CursorPos X="3" Y="912"/>
+        <UsageCount Value="12"/>
+      </Unit6>
+      <Unit7>
+        <Filename Value="..\..\..\..\src\zgl_config.cfg"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="100"/>
+        <CursorPos X="35" Y="110"/>
+        <UsageCount Value="13"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit7>
+      <Unit8>
+        <Filename Value="..\..\..\..\src\zgl_log.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="97"/>
+        <CursorPos X="28" Y="119"/>
+        <UsageCount Value="11"/>
+      </Unit8>
+      <Unit9>
+        <Filename Value="..\..\..\..\src\zgl_utils.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="85"/>
+        <CursorPos X="29" Y="104"/>
+        <UsageCount Value="11"/>
+      </Unit9>
+      <Unit10>
+        <Filename Value="..\..\..\..\src\zgl_text.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="47"/>
+        <CursorPos X="13" Y="71"/>
+        <UsageCount Value="12"/>
+      </Unit10>
+      <Unit11>
+        <Filename Value="..\..\..\..\src\zgl_textures.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="155"/>
+        <CursorPos X="12" Y="170"/>
+        <UsageCount Value="12"/>
+      </Unit11>
+      <Unit12>
+        <Filename Value="..\..\..\..\src\zgl_font.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="91"/>
+        <CursorPos X="46" Y="92"/>
+        <UsageCount Value="12"/>
+      </Unit12>
+      <Unit13>
+        <Filename Value="..\..\..\Lazarus\01 - Initialization\demo01.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="90"/>
+        <CursorPos X="25" Y="34"/>
+        <UsageCount Value="12"/>
+      </Unit13>
+      <Unit14>
+        <Filename Value="..\..\..\..\headers\zgl_config.cfg"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="174"/>
+        <CursorPos X="4" Y="207"/>
+        <UsageCount Value="10"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit14>
+    </Units>
+    <JumpHistory Count="7" HistoryIndex="6">
+      <Position1>
+        <Filename Value="demo01.lpr"/>
+        <Caret Line="9" Column="21"/>
+      </Position1>
+      <Position2>
+        <Filename Value="demo01.lpr"/>
+        <Caret Line="66" Column="45" TopLine="49"/>
+      </Position2>
+      <Position3>
+        <Filename Value="demo01.lpr"/>
+        <Caret Line="23" TopLine="2"/>
+      </Position3>
+      <Position4>
+        <Filename Value="demo01.lpr"/>
+        <Caret Line="14" Column="36" TopLine="2"/>
+      </Position4>
+      <Position5>
+        <Filename Value="demo01.lpr"/>
+        <Caret Line="23"/>
+      </Position5>
+      <Position6>
+        <Filename Value="demo01.lpr"/>
+        <Caret Line="22" Column="45"/>
+      </Position6>
+      <Position7>
+        <Filename Value="demo01.lpr"/>
+        <Caret Line="67" Column="40" TopLine="38"/>
+      </Position7>
+    </JumpHistory>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes ActiveMode=""/>
+    </RunParams>
+  </ProjectSession>
+</CONFIG>

+ 2 - 1
Zengl_SRC/demos/Android/01 - Initialization/jni/linux_prebuild.sh → Zengl_SRC/demos/Android/01-Initialization/jni/prebuild.sh

@@ -1,8 +1,9 @@
 # copy libraries
+mkdir ../libs
+mkdir ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libzenjpeg.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libopenal.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libogg.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libvorbis.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libtheoradec.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libchipmunk.so ../libs/armeabi/
-cp ../../../../bin/Android/armv6/libGLU.so ../libs/armeabi/

+ 0 - 0
Zengl_SRC/demos/Android/01 - Initialization/project.properties → Zengl_SRC/demos/Android/01-Initialization/project.properties


+ 0 - 0
Zengl_SRC/demos/Android/01 - Initialization/res/drawable-hdpi/ic_launcher.png → Zengl_SRC/demos/Android/01-Initialization/res/drawable-hdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/01 - Initialization/res/drawable-ldpi/ic_launcher.png → Zengl_SRC/demos/Android/01-Initialization/res/drawable-ldpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/01 - Initialization/res/drawable-mdpi/ic_launcher.png → Zengl_SRC/demos/Android/01-Initialization/res/drawable-mdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/01 - Initialization/res/drawable-xhdpi/ic_launcher.png → Zengl_SRC/demos/Android/01-Initialization/res/drawable-xhdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/01 - Initialization/res/values/strings.xml → Zengl_SRC/demos/Android/01-Initialization/res/values/strings.xml


+ 34 - 31
Zengl_SRC/demos/Android/01 - Initialization/src/zengl/android/ZenGL.java → Zengl_SRC/demos/Android/01-Initialization/src/zengl/android/ZenGL.java

@@ -21,7 +21,7 @@
  *  3. This notice may not be removed or altered from any
  *     source distribution.
  *  
- *  modifing by Serge 06.05.2020
+ *  modifing by Serge 08.08.2020
 */
 package zengl.android;
 
@@ -52,14 +52,10 @@ public class ZenGL extends GLSurfaceView
 	private native void zglNativeDrawFrame();
 	private native void zglNativeActivate( boolean Activate );
 	private native void zglNativeCloseQuery();
-	private native void zglNativeTouch( int ID, float X, float Y, int Pressure );
+	private native void zglNativeTouch( int ID, float X, float Y, float Pressure );
 	private native void zglNativeInputText( String Text );
 	private native void zglNativeBackspace();
 
-	// add function
-	private native byte[] byteArrPasToJava();
-	private native void byteArrJavaToPas(byte[] arr);
-	
 	private zglCRenderer Renderer;
 	private String SourceDir;
 	private String DataDir;
@@ -75,7 +71,6 @@ public class ZenGL extends GLSurfaceView
 		System.loadLibrary( "vorbis" );
 		System.loadLibrary( "theoradec" );
 		System.loadLibrary( "chipmunk" );
-		System.loadLibrary( "GLU" );
 		System.loadLibrary( appName );
 
 		SourceDir = appSourceDir;
@@ -116,50 +111,58 @@ public class ZenGL extends GLSurfaceView
 
 		switch ( actionType )
 		{
-			// это событие срабатывает один раз
 			case MotionEvent.ACTION_DOWN:
 			{
-				int pointerID = event.getPointerId(0);
-				zglNativeTouch( pointerID, event.getX( 0 ), event.getY( 0 ), 1 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), event.getPressure( i ) );
+				}
 				break;
 			}
-			// и это событие срабатывает один раз
-			case MotionEvent.ACTION_POINTER_DOWN:
+
+			case MotionEvent.ACTION_UP:
 			{
-				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
-				int pointerIndex = event.getPointerId( pointerID );
-				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
-					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 3 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), 0 );
+				}
 				break;
 			}
-	
-			case MotionEvent.ACTION_UP:
+
+			case MotionEvent.ACTION_MOVE:
 			{
-				int pointerID = event.getPointerId(0);
-				zglNativeTouch( pointerID, event.getX( 0 ), event.getY( 0 ), 0 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), event.getPressure( i ) );
+				}
 				break;
 			}
-			
-			case MotionEvent.ACTION_POINTER_UP:
+
+			case MotionEvent.ACTION_POINTER_DOWN:
 			{
 				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
 				int pointerIndex = event.getPointerId( pointerID );
 				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
-					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 2 );
+					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), event.getPressure( pointerID ) );
 				break;
 			}
-	
-			case MotionEvent.ACTION_MOVE:
+
+			case MotionEvent.ACTION_POINTER_UP:
 			{
-				int count = event.getPointerCount();
-				for ( int i = 0; i < count; i++ )
-				{
-					int pointerID = event.getPointerId( i );
-					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), 5 );
-				}
+				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
+				int pointerIndex = event.getPointerId( pointerID );
+				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
+					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 0 );
 				break;
 			}
 		}
+
 		return true;
 	}
 

+ 0 - 0
Zengl_SRC/demos/Android/01 - Initialization/src/zengl/demo01/Demo01Activity.java → Zengl_SRC/demos/Android/01-Initialization/src/zengl/demo01/Demo01Activity.java


+ 0 - 1
Zengl_SRC/demos/Android/02 - Resources/assets/res.txt

@@ -1 +0,0 @@
-folder res

+ 0 - 12
Zengl_SRC/demos/Android/02 - Resources/jni/windows_prebuild.bat

@@ -1,12 +0,0 @@
-copy ..\..\..\..\bin\Android\armv6\libzenjpeg.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libopenal.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libogg.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libvorbis.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libtheoradec.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libchipmunk.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libGLU.so ..\libs\armeabi\
-
-copy ..\..\..\..\bin\data\font* ..\assets
-copy ..\..\..\..\bin\data\zengl.png ..\assets
-copy ..\..\..\..\bin\data\click.wav ..\assets
-copy ..\..\..\..\bin\data\back01.jpg ..\assets

+ 0 - 1
Zengl_SRC/demos/Android/02 - Resources/libs/armeabi/0.txt

@@ -1 +0,0 @@
-folder libs

+ 9 - 0
Zengl_SRC/demos/Android/02-Resources/.classpath

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>

+ 33 - 0
Zengl_SRC/demos/Android/02-Resources/.project

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>02 - Resources</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

+ 0 - 0
Zengl_SRC/demos/Android/02 - Resources/AndroidManifest.xml → Zengl_SRC/demos/Android/02-Resources/AndroidManifest.xml


+ 13 - 10
Zengl_SRC/demos/Android/02 - Resources/jni/demo02.lpi → Zengl_SRC/demos/Android/02-Resources/jni/demo02.lpi

@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <CONFIG>
   <ProjectOptions>
-    <Version Value="11"/>
+    <Version Value="12"/>
     <PathDelim Value="\"/>
     <General>
       <Flags>
         <MainUnitHasCreateFormStatements Value="False"/>
         <MainUnitHasTitleStatement Value="False"/>
         <MainUnitHasScaledStatement Value="False"/>
+        <CompatibilityMode Value="True"/>
       </Flags>
       <SessionStorage Value="InProjectDir"/>
-      <MainUnit Value="0"/>
-      <Title Value="demo01"/>
+      <Title Value="demo02"/>
       <UseAppBundle Value="False"/>
       <ResourceType Value="res"/>
     </General>
@@ -24,11 +24,10 @@
     </PublishOptions>
     <RunParams>
       <FormatVersion Value="2"/>
-      <Modes Count="0"/>
     </RunParams>
     <Units Count="1">
       <Unit0>
-        <Filename Value="demo01.lpr"/>
+        <Filename Value="demo02.lpr"/>
         <IsPartOfProject Value="True"/>
       </Unit0>
     </Units>
@@ -37,17 +36,16 @@
     <Version Value="11"/>
     <PathDelim Value="\"/>
     <Target>
-      <Filename Value="..\libs\armeabi\demo01"/>
+      <Filename Value="..\libs\armeabi\demo02"/>
     </Target>
     <SearchPaths>
-      <IncludeFiles Value="..\..\..\..\headers;..\..\..\..\headers\android;$(ProjOutDir);..\..\..\..\src;..\..\..\..\srcGL;..\..\..\..\srcGEGL"/>
-      <Libraries Value="..\..\..\..\bin\Android\armv6;C:\codetyphon\binLibraries\android-4.0.2-api14-arm"/>
-      <OtherUnitFiles Value="..\..\..\..\src;..\..\..\..\srcGL;..\..\..\..\srcGEGL;..\..\..\..\lib\zlib\arm-linux;..\..\..\..\lib\zip\arm-linux;..\..\..\..\lib\ogg\arm-linux;..\..\..\..\lib\theora\arm-linux"/>
+      <IncludeFiles Value="..\..\..\..\headers;..\..\..\..\headers\android;$(ProjOutDir);..\..\..\..\srcGL;..\..\..\..\srcGEGL;..\..\..\..\src"/>
+      <Libraries Value="..\libs\armeabi;C:\codetyphon\binLibraries\android-4.0-api14-arm"/>
+      <OtherUnitFiles Value="..\..\..\..\src;..\..\..\..\srcGEGL;..\..\..\..\srcGL;..\..\..\..\lib\zlib\arm-linux;..\..\..\..\lib\zip\arm-linux;..\..\..\..\lib\theora\arm-linux;..\..\..\..\lib\ogg\arm-linux"/>
       <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
     </SearchPaths>
     <CodeGeneration>
       <SmartLinkUnit Value="True"/>
-      <RelocatableUnit Value="True"/>
       <TargetCPU Value="arm"/>
       <TargetOS Value="android"/>
       <Optimizations>
@@ -63,6 +61,11 @@
         <ExecutableType Value="Library"/>
       </Options>
     </Linking>
+    <Other>
+      <ExecuteBefore>
+        <Command Value="sh prebuild.sh"/>
+      </ExecuteBefore>
+    </Other>
   </CompilerOptions>
   <Debugging>
     <Exceptions Count="3">

+ 174 - 0
Zengl_SRC/demos/Android/02-Resources/jni/demo02.lpr

@@ -0,0 +1,174 @@
+library demo02;
+
+{$I zglCustomConfig.cfg}
+
+uses
+  zgl_application,
+  zgl_types,
+  zgl_screen,
+  zgl_window,
+  zgl_timers,
+  // RU: Модули для работы с файлами, файлами в памяти и zip-архивами.
+  // EN: Units for using files, files in memory and zip archives.
+  zgl_file,
+  zgl_memory,
+  // RU: Модуль для поддержки многопоточной загрузки ресурсов.
+  // EN: Unit for multithreaded resource loading.
+  zgl_resources,
+  // RU: Модуль для работы со шрифтами.
+  // EN: Unit for using fonts.
+  zgl_font,
+  // RU: Модули для работы с текстурами. zgl_textures является основным, следующие за ним предоставляют поддержку определённых форматов.
+  // EN: Units for using textures. zgl_textures is a main unit, next units provide support of different formats.
+  zgl_textures,
+  zgl_textures_tga, // TGA
+  zgl_textures_jpg, // JPG
+  zgl_textures_png, // PNG
+  // RU: Звуковая подсистема реализована в модулях ниже. Подход такой же как и с текстурами - основной модуль и модули поддержки форматов.
+  // EN: Sound subsystem implemented in units below. Idea the same as for textures - there is a main unit and units for support different formats.
+  zgl_sound,
+  zgl_sound_wav, // WAV
+  zgl_sound_ogg, // OGG
+
+  zgl_primitives_2d,
+  zgl_text,
+  zgl_sprite_2d,
+  zgl_utils
+  ;
+
+var
+  dirRes : UTF8String = 'assets/';
+
+  memory : zglTMemory;
+
+  // RU: У каждого ресурса есть свой определённый тип, который является указателем на структуру.
+  // EN: Every resource has its own typem which is just a pointer to structure.
+  fntMain  : LongWord;
+  //
+  texLogo  : zglPTexture;
+  texTest  : array[ 0..3 ] of zglPTexture;
+  //
+  sndClick : zglPSound;
+  sndMusic : zglPSound;
+
+  resLoaded : Boolean;
+
+procedure TextureCalcEffect( pData : PByteArray; Width, Height : Word );
+begin
+  u_Sleep( 1000 );
+end;
+
+procedure Init;
+  var
+    i : Integer;
+begin
+  zgl_Enable( CORRECT_RESOLUTION );
+  scr_CorrectResolution( 800, 600 );
+
+  // RU: Более детальное рассмотрение параметров функций загрузки ресурсов есть в соответствующих примерах, тут же показана лишь основная суть.
+  // EN: Description with more details about parameters of functions can be found in other demos, here is only main idea shown.
+
+  snd_Init();
+
+  // RU: Основное отличие приложений Android от других заключается в том, что все ресурсы хранятся зачастую хранятся внутри apk-файла(обычный zip-архив).
+  //     Поэтому перед загрузкой любых ресурсов необходимо сначала "открыть" этот apk-файл, а потом "закрыть".
+  // EN: Main difference between Android application and others is containing resources in apk-file(just a zip archive).
+  //     And that is why before loading of any resources this apk-file should be "opened" first, and then "closed".
+  file_OpenArchive( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
+
+  // RU: Функции загрузки ресурсов именуются в формате "$(префикс)_LoadFrom$(откуда)", где "$(префикс)" может быть tex, snd, font и т.д., а "$(откуда)" - File и Memory.
+  // EN: Functions for loading resources named in format "$(prefix)_LoadFrom$(where)", where "$(prefix)" can be tex, snd, font and so on, and $(where) - File and Memory.
+  fntMain  := font_LoadFromFile( dirRes + 'font.zfi' );
+  texLogo  := tex_LoadFromFile( dirRes + 'zengl.png' );
+  sndClick := snd_LoadFromFile( dirRes + 'click.wav' );
+
+  // RU: Не забываем "закрыть" apk-файл.
+  // EN: Don't forget to "close" apk-file.
+  file_CloseArchive();
+
+  // RU: Многопоточная загрузка ресурсов позволяет составить очередь и не ожидать загрузки выполняя другие операции, например рендеринг какой-то анимации.
+  //     Процесс загрузки в многопоточном режиме практически ничем не отличается от обычного за исключением вызова функций старта и окончания очереди.
+  // EN: Multithreaded resource loading allows to make queue and do something while loading, e.g. rendering some animation.
+  //     Loading resources in multithreaded mode has almost no difference with standard mode, except using functions for beginning and ending queues.
+  res_BeginQueue( 0 );
+  file_OpenArchive( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
+  // RU: Между res_BeginQueue и res_EndQueue могут использоваться все обычные функции загрузки ресурсов.
+  //     Для задержки экрана загрузки ресурсы будут загружены несколько раз, а для текстуры будет использована обработка с задержкой.
+  // EN: All standard functions for loading resources can be used between res_BeginQueue and res_EndQueue.
+  //     Just for holding loading screen resources will be loaded multiple times, and texture will be post-processed with delay.
+  zgl_Reg( TEXTURE_CURRENT_EFFECT, @TextureCalcEffect );
+  for i := 0 to 3 do
+    texTest[ i ]  := tex_LoadFromFile( dirRes + 'back01.jpg', TEX_NO_COLORKEY, TEX_DEFAULT_2D or TEX_CUSTOM_EFFECT );
+  file_CloseArchive();
+  res_EndQueue();
+end;
+
+procedure Draw;
+begin
+  // RU: К ресурсам, которые загружаются в многопоточном режиме, можно обращаться только после завершения загрузки. Код ниже рисует экран загрузки если ресурсы ещё не загрузились.
+  // EN: Resources which are loading in multithreaded mode can be used only after finishing the loading process. Code below renders loading screen if resources are not loaded yet.
+  if res_GetCompleted() < 100 Then
+    begin
+      ssprite2d_Draw( texLogo, ( 800 - texLogo^.Width ) / 2, ( 600 - texLogo^.Height ) / 2, texLogo^.Width, texLogo^.Height, 0 );
+      text_Draw( fntMain, 400, 300 + texLogo^.Height / 4, 'Loading... ' + u_IntToStr( res_GetCompleted() ) + '%', TEXT_HALIGN_CENTER );
+      exit;
+    end;
+
+  ssprite2d_Draw( texTest[ 0 ], 0, 0, 800, 600, 0 );
+  text_Draw( fntMain, 0, 0, 'FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) );
+  text_Draw( fntMain, 0, 16, 'VRAM Used: ' + u_FloatToStr( zgl_Get( RENDER_VRAM_USED ) / 1024 / 1024 ) + 'Mb' );
+end;
+
+procedure Activate( active : Boolean );
+begin
+  // RU: Из-за проблемы в OpenAL на платформе Android(в фоном режиме приложение продолжает грузить CPU), звуковую подсистему
+  //     необходимо останавливать и перезапускать, но только при потере/получении фокуса приложением.
+  // EN: Because of problem inside OpenAL on Android(application continue load CPU in background), sound susbsytem should be
+  //     stopped and reloaded when application loses/gets the focus.
+
+  if active Then
+    begin
+      // RU: Перезапускаем звуковую подсистему.
+      // EN: Reload sound subsystem.
+      snd_Init();
+
+      file_OpenArchive( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
+      sndClick := snd_LoadFromFile( dirRes + 'click.wav' );
+      file_CloseArchive();
+    end else
+      snd_Free();
+end;
+
+procedure Restore;
+  var
+    i : Integer;
+begin
+  file_OpenArchive( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
+
+  font_RestoreFromFile( fntMain, dirRes + 'font.zfi' );
+  tex_RestoreFromFile( texLogo, dirRes + 'zengl.png' );
+
+  file_CloseArchive();
+
+  res_BeginQueue( 0 );
+  file_OpenArchive( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
+  for i := 0 to 3 do
+    tex_RestoreFromFile( texTest[ i ], dirRes + 'back01.jpg' );
+  file_CloseArchive();
+  res_EndQueue();
+end;
+
+procedure Java_zengl_android_ZenGL_Main( var env; var thiz ); cdecl;
+begin
+  zgl_Reg( SYS_LOAD, @Init );
+  zgl_Reg( SYS_DRAW, @Draw );
+  zgl_Reg( SYS_ACTIVATE, @Activate );
+  zgl_Reg( SYS_ANDROID_RESTORE, @Restore );
+
+  scr_SetOptions();
+end;
+
+exports
+  Java_zengl_android_ZenGL_Main,
+  {$I android_export.inc}
+End.

+ 195 - 0
Zengl_SRC/demos/Android/02-Resources/jni/demo02.lps

@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectSession>
+    <PathDelim Value="\"/>
+    <Version Value="12"/>
+    <BuildModes Active="Default"/>
+    <Units Count="20">
+      <Unit0>
+        <Filename Value="demo02.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <IsVisibleTab Value="True"/>
+        <TopLine Value="46"/>
+        <CursorPos X="7" Y="46"/>
+        <UsageCount Value="28"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="..\..\..\..\src\zgl_opengles.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="15"/>
+        <CursorPos X="14" Y="26"/>
+        <UsageCount Value="14"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="..\..\..\..\src\zgl_opengles_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="752"/>
+        <CursorPos X="74" Y="770"/>
+        <UsageCount Value="14"/>
+      </Unit2>
+      <Unit3>
+        <Filename Value="C:\codetyphon\fpcsrc\packages\opengl\src\gl.pp"/>
+        <UnitName Value="GL"/>
+        <EditorIndex Value="-1"/>
+        <UsageCount Value="9"/>
+      </Unit3>
+      <Unit4>
+        <Filename Value="..\..\..\..\src\zgl_main.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="387"/>
+        <CursorPos X="61" Y="398"/>
+        <UsageCount Value="14"/>
+      </Unit4>
+      <Unit5>
+        <Filename Value="..\..\..\..\src\zgl_textures.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="347"/>
+        <CursorPos X="42" Y="355"/>
+        <UsageCount Value="14"/>
+      </Unit5>
+      <Unit6>
+        <Filename Value="..\..\..\..\src\zgl_sprite_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="248"/>
+        <CursorPos X="3" Y="252"/>
+        <UsageCount Value="14"/>
+      </Unit6>
+      <Unit7>
+        <Filename Value="..\..\..\..\src\zgl_config.cfg"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="102"/>
+        <CursorPos X="3" Y="112"/>
+        <UsageCount Value="13"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit7>
+      <Unit8>
+        <Filename Value="..\..\..\..\src\zgl_fpc.cfg"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="2"/>
+        <CursorPos X="20" Y="4"/>
+        <UsageCount Value="13"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit8>
+      <Unit9>
+        <Filename Value="..\..\..\..\src\zgl_primitives_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="55"/>
+        <CursorPos X="3" Y="71"/>
+        <UsageCount Value="13"/>
+      </Unit9>
+      <Unit10>
+        <Filename Value="..\..\..\..\src\zgl_resources.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="391"/>
+        <CursorPos X="3" Y="371"/>
+        <UsageCount Value="14"/>
+      </Unit10>
+      <Unit11>
+        <Filename Value="..\..\..\..\src\zgl_application.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1691"/>
+        <CursorPos X="7" Y="1629"/>
+        <UsageCount Value="14"/>
+      </Unit11>
+      <Unit12>
+        <Filename Value="..\..\..\..\src\zgl_screen.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="804"/>
+        <CursorPos Y="806"/>
+        <UsageCount Value="9"/>
+      </Unit12>
+      <Unit13>
+        <Filename Value="..\..\..\..\src\zgl_timers.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="152"/>
+        <CursorPos X="3" Y="158"/>
+        <UsageCount Value="14"/>
+      </Unit13>
+      <Unit14>
+        <Filename Value="..\..\..\..\src\zgl_file.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="297"/>
+        <CursorPos X="16" Y="313"/>
+        <UsageCount Value="14"/>
+      </Unit14>
+      <Unit15>
+        <Filename Value="..\..\..\..\src\zgl_log.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="22"/>
+        <CursorPos X="13" Y="34"/>
+        <UsageCount Value="13"/>
+      </Unit15>
+      <Unit16>
+        <Filename Value="..\..\..\..\src\zgl_font.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="151"/>
+        <CursorPos X="3" Y="140"/>
+        <UsageCount Value="11"/>
+      </Unit16>
+      <Unit17>
+        <Filename Value="..\..\..\..\src\zgl_textures_png.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="391"/>
+        <CursorPos X="9" Y="399"/>
+        <UsageCount Value="11"/>
+      </Unit17>
+      <Unit18>
+        <Filename Value="..\..\..\..\src\zgl_memory.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="50"/>
+        <CursorPos X="61" Y="66"/>
+        <UsageCount Value="11"/>
+      </Unit18>
+      <Unit19>
+        <Filename Value="..\..\..\..\src\zgl_sound.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="4"/>
+        <CursorPos X="15" Y="26"/>
+        <UsageCount Value="10"/>
+      </Unit19>
+    </Units>
+    <JumpHistory Count="9" HistoryIndex="8">
+      <Position1>
+        <Filename Value="demo02.lpr"/>
+        <Caret Line="79" Column="12" TopLine="60"/>
+      </Position1>
+      <Position2>
+        <Filename Value="demo02.lpr"/>
+        <Caret Line="82" Column="21" TopLine="72"/>
+      </Position2>
+      <Position3>
+        <Filename Value="demo02.lpr"/>
+        <Caret Line="83" Column="25" TopLine="72"/>
+      </Position3>
+      <Position4>
+        <Filename Value="demo02.lpr"/>
+        <Caret Line="27" Column="11" TopLine="3"/>
+      </Position4>
+      <Position5>
+        <Filename Value="demo02.lpr"/>
+        <Caret Line="83" Column="22" TopLine="70"/>
+      </Position5>
+      <Position6>
+        <Filename Value="demo02.lpr"/>
+        <Caret Line="78" Column="12" TopLine="64"/>
+      </Position6>
+      <Position7>
+        <Filename Value="demo02.lpr"/>
+        <Caret Line="7" Column="15"/>
+      </Position7>
+      <Position8>
+        <Filename Value="demo02.lpr"/>
+        <Caret Line="46" Column="18" TopLine="28"/>
+      </Position8>
+      <Position9>
+        <Filename Value="demo02.lpr"/>
+        <Caret Line="148" Column="27" TopLine="116"/>
+      </Position9>
+    </JumpHistory>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes ActiveMode=""/>
+    </RunParams>
+  </ProjectSession>
+</CONFIG>

+ 4 - 2
Zengl_SRC/demos/Android/02 - Resources/jni/linux_prebuild.sh → Zengl_SRC/demos/Android/02-Resources/jni/prebuild.sh

@@ -1,13 +1,15 @@
 # copy libraries
+mkdir ../libs
+mkdir ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libzenjpeg.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libopenal.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libogg.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libvorbis.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libtheoradec.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libchipmunk.so ../libs/armeabi/
-cp ../../../../bin/Android/armv6/libGLU.so ../libs/armeabi/
 # copy resources
+mkdir ../assets
 cp ../../../../bin/data/font* ../assets
 cp ../../../../bin/data/zengl.png ../assets
 cp ../../../../bin/data/click.wav ../assets
-cp ../../../../bin/data/back01.jpg ../assets
+cp ../../../../bin/data/back01.jpg ../assets

+ 0 - 0
Zengl_SRC/demos/Android/02 - Resources/project.properties → Zengl_SRC/demos/Android/02-Resources/project.properties


+ 0 - 0
Zengl_SRC/demos/Android/02 - Resources/res/drawable-hdpi/ic_launcher.png → Zengl_SRC/demos/Android/02-Resources/res/drawable-hdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/02 - Resources/res/drawable-ldpi/ic_launcher.png → Zengl_SRC/demos/Android/02-Resources/res/drawable-ldpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/02 - Resources/res/drawable-mdpi/ic_launcher.png → Zengl_SRC/demos/Android/02-Resources/res/drawable-mdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/02 - Resources/res/drawable-xhdpi/ic_launcher.png → Zengl_SRC/demos/Android/02-Resources/res/drawable-xhdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/02 - Resources/res/values/strings.xml → Zengl_SRC/demos/Android/02-Resources/res/values/strings.xml


+ 34 - 31
Zengl_SRC/demos/Android/04 - Screen Settings/src/zengl/android/ZenGL.java → Zengl_SRC/demos/Android/02-Resources/src/zengl/android/ZenGL.java

@@ -21,7 +21,7 @@
  *  3. This notice may not be removed or altered from any
  *     source distribution.
  *  
- *  modifing by Serge 06.05.2020
+ *  modifing by Serge 08.08.2020
 */
 package zengl.android;
 
@@ -52,14 +52,10 @@ public class ZenGL extends GLSurfaceView
 	private native void zglNativeDrawFrame();
 	private native void zglNativeActivate( boolean Activate );
 	private native void zglNativeCloseQuery();
-	private native void zglNativeTouch( int ID, float X, float Y, int Pressure );
+	private native void zglNativeTouch( int ID, float X, float Y, float Pressure );
 	private native void zglNativeInputText( String Text );
 	private native void zglNativeBackspace();
 
-	// add function
-	private native byte[] byteArrPasToJava();
-	private native void byteArrJavaToPas(byte[] arr);
-	
 	private zglCRenderer Renderer;
 	private String SourceDir;
 	private String DataDir;
@@ -75,7 +71,6 @@ public class ZenGL extends GLSurfaceView
 		System.loadLibrary( "vorbis" );
 		System.loadLibrary( "theoradec" );
 		System.loadLibrary( "chipmunk" );
-		System.loadLibrary( "GLU" );
 		System.loadLibrary( appName );
 
 		SourceDir = appSourceDir;
@@ -116,50 +111,58 @@ public class ZenGL extends GLSurfaceView
 
 		switch ( actionType )
 		{
-			// это событие срабатывает один раз
 			case MotionEvent.ACTION_DOWN:
 			{
-				int pointerID = event.getPointerId(0);
-				zglNativeTouch( pointerID, event.getX( 0 ), event.getY( 0 ), 1 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), event.getPressure( i ) );
+				}
 				break;
 			}
-			// и это событие срабатывает один раз
-			case MotionEvent.ACTION_POINTER_DOWN:
+
+			case MotionEvent.ACTION_UP:
 			{
-				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
-				int pointerIndex = event.getPointerId( pointerID );
-				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
-					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 3 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), 0 );
+				}
 				break;
 			}
-	
-			case MotionEvent.ACTION_UP:
+
+			case MotionEvent.ACTION_MOVE:
 			{
-				int pointerID = event.getPointerId(0);
-				zglNativeTouch( pointerID, event.getX( 0 ), event.getY( 0 ), 0 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), event.getPressure( i ) );
+				}
 				break;
 			}
-			
-			case MotionEvent.ACTION_POINTER_UP:
+
+			case MotionEvent.ACTION_POINTER_DOWN:
 			{
 				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
 				int pointerIndex = event.getPointerId( pointerID );
 				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
-					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 2 );
+					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), event.getPressure( pointerID ) );
 				break;
 			}
-	
-			case MotionEvent.ACTION_MOVE:
+
+			case MotionEvent.ACTION_POINTER_UP:
 			{
-				int count = event.getPointerCount();
-				for ( int i = 0; i < count; i++ )
-				{
-					int pointerID = event.getPointerId( i );
-					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), 5 );
-				}
+				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
+				int pointerIndex = event.getPointerId( pointerID );
+				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
+					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 0 );
 				break;
 			}
 		}
+
 		return true;
 	}
 

+ 0 - 0
Zengl_SRC/demos/Android/02 - Resources/src/zengl/demo02/Demo02Activity.java → Zengl_SRC/demos/Android/02-Resources/src/zengl/demo02/Demo02Activity.java


+ 0 - 1
Zengl_SRC/demos/Android/03 - Input/assets/res.txt

@@ -1 +0,0 @@
-folder res

+ 0 - 12
Zengl_SRC/demos/Android/03 - Input/jni/windows_prebuild.bat

@@ -1,12 +0,0 @@
-copy ..\..\..\..\bin\Android\armv6\libzenjpeg.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libopenal.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libogg.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libvorbis.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libtheoradec.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libchipmunk.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libGLU.so ..\libs\armeabi\
-
-copy ..\..\..\..\bin\data\font* ..\assets
-copy ..\..\..\..\bin\data\CalibriBold50pt* ..\assets
-copy ..\..\..\..\bin\data\arrow.png ..\assets
-copy ..\..\..\..\bin\data\Rus.dat ..\assets

+ 0 - 1
Zengl_SRC/demos/Android/03 - Input/libs/armeabi/0.txt

@@ -1 +0,0 @@
-folder libs

+ 9 - 0
Zengl_SRC/demos/Android/03-Input/.classpath

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>

+ 33 - 0
Zengl_SRC/demos/Android/03-Input/.project

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>03 - Input</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

+ 4 - 0
Zengl_SRC/demos/Android/03-Input/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6

+ 0 - 0
Zengl_SRC/demos/Android/03 - Input/AndroidManifest.xml → Zengl_SRC/demos/Android/03-Input/AndroidManifest.xml


+ 17 - 11
Zengl_SRC/demos/Android/03 - Input/jni/demo03.lpi → Zengl_SRC/demos/Android/03-Input/jni/demo03.lpi

@@ -1,15 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <CONFIG>
   <ProjectOptions>
-    <Version Value="11"/>
+    <Version Value="12"/>
+    <PathDelim Value="\"/>
     <General>
       <Flags>
         <MainUnitHasCreateFormStatements Value="False"/>
         <MainUnitHasTitleStatement Value="False"/>
         <MainUnitHasScaledStatement Value="False"/>
+        <CompatibilityMode Value="True"/>
       </Flags>
       <SessionStorage Value="InProjectDir"/>
-      <MainUnit Value="0"/>
       <Title Value="demo03"/>
       <UseAppBundle Value="False"/>
       <ResourceType Value="res"/>
@@ -23,29 +24,32 @@
     </PublishOptions>
     <RunParams>
       <FormatVersion Value="2"/>
-      <Modes Count="0"/>
     </RunParams>
-    <Units Count="1">
+    <Units Count="2">
       <Unit0>
         <Filename Value="demo03.lpr"/>
         <IsPartOfProject Value="True"/>
       </Unit0>
+      <Unit1>
+        <Filename Value="..\..\..\..\srcGEGL\gegl_button.pas"/>
+        <IsPartOfProject Value="True"/>
+      </Unit1>
     </Units>
   </ProjectOptions>
   <CompilerOptions>
     <Version Value="11"/>
+    <PathDelim Value="\"/>
     <Target>
-      <Filename Value="../libs/armeabi/demo03"/>
+      <Filename Value="..\libs\armeabi\demo03"/>
     </Target>
     <SearchPaths>
-      <IncludeFiles Value="../../../../headers;../../../../headers/android;$(ProjOutDir);../../../../srcGEGL;../../../../src;../../../../srcGL"/>
-      <Libraries Value="../libs/armeabi"/>
-      <OtherUnitFiles Value="../../../../src;../../../../srcGL;../../../../srcGEGL;../../../../lib/zlib/arm-linux;../../../../lib/zip/arm-linux;../../../../lib/theora/arm-linux;../../../../lib/ogg/arm-linux"/>
-      <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/>
+      <IncludeFiles Value="..\..\..\..\headers;..\..\..\..\headers\android;$(ProjOutDir);..\..\..\..\src;..\..\..\..\srcGL;..\..\..\..\srcGEGL"/>
+      <Libraries Value="..\libs\armeabi"/>
+      <OtherUnitFiles Value="..\..\..\..\src;..\..\..\..\srcGEGL;..\..\..\..\srcGL;..\..\..\..\lib\zlib\arm-linux;..\..\..\..\lib\zip\arm-linux;..\..\..\..\lib\theora\arm-linux;..\..\..\..\lib\ogg\arm-linux;..\..\..\..\extra"/>
+      <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
     </SearchPaths>
     <CodeGeneration>
       <SmartLinkUnit Value="True"/>
-      <RelocatableUnit Value="True"/>
       <TargetCPU Value="arm"/>
       <TargetOS Value="android"/>
       <Optimizations>
@@ -62,7 +66,9 @@
       </Options>
     </Linking>
     <Other>
-      <CustomOptions Value="-al"/>
+      <ExecuteBefore>
+        <Command Value="sh prebuild.sh"/>
+      </ExecuteBefore>
     </Other>
   </CompilerOptions>
   <Debugging>

+ 90 - 74
Zengl_SRC/demos/Android/03 - Input/jni/demo03.lpr → Zengl_SRC/demos/Android/03-Input/jni/demo03.lpr

@@ -1,7 +1,6 @@
 library demo03;
-
-{$I zglCustomConfig.cfg}
 {$I zgl_config.cfg}
+{$I zglCustomConfig.cfg}
 
 uses
   zgl_application,
@@ -18,42 +17,49 @@ uses
   zgl_textures,
   zgl_textures_png,
   zgl_types,
-  {$IfDef USE_VKEYBOARD}
-  gegl_draw_gui,
-  gegl_menu_gui,
-  {$EndIf}
+  zgl_log,
+  zgl_utils
   {$IfDef OLD_METHODS}
-  zgl_collision_2d,
-  {$Else}
+  zgl_collision_2d
+  {$else}
+  , gegl_draw_gui,
+  gegl_menu_gui,
   gegl_VElements,
   gegl_utils,
+  gegl_color
   {$EndIf}
-  gegl_color,
-  zgl_log,
-  zgl_utils
   ;
 
-var
-  dirRes  : UTF8String = 'assets/';
+  (* проблема данной демки, не в самой демке. Обработка клавиатуры - её проблема. Постоянные вызовы "setFontTextScale" убивают всю производительность
+     необходимо перевести все кнопки в текстуры. Текстуры нажатия и отжатия. Тогда работа клавиатуры/джойстиков станет выше.
+     Перевод в текстуры должен происходить однажды, при запуске программы и при восстановлении программы. Так как когда программа уходит в "спящий" режим
+     все текстуры уничтожаются (как я понимаю, контекст уничтожается и из-за этого приходится всё восстанавливать).
 
-  // Rus: номера шрифтов. Вся работа со шрифтами происходит именно от этих номеров.
-  // Eng: font numbers. All work with fonts comes from these numbers.
-  fntMain, fntEdit: LongWord;
+     У меня уже есть демка, где я делал меню, там есть перевод графических данных в текстуры.
 
-  // Rus: номер цвета. Работа с цветом происходит именно от этого номера.
-  // Eng: color number. Work with color comes from this number.
-  EditColor: LongWord;
+     не сделана обработка кругового джойстика.
+  *)
+
+var
+  dirRes  : UTF8String = 'assets/';
 
   // RU: строка для получения значения из поля ввода
   // EN: string to get value from input field
   userInput  : UTF8String;
   {$IfDef OLD_METHODS}
   trackInput : Boolean;
-  inputRect  : zglTRect2D;
+  inputRect  : zglTRect;
   lineAlpha  : LongWord;
 
   TimeStart  : LongWord;
   {$Else}
+  // Rus: номера шрифтов. Вся работа со шрифтами происходит именно от этих номеров.
+  // Eng: font numbers. All work with fonts comes from these numbers.
+  fntMain, fntEdit: LongWord;
+
+  // Rus: номер цвета. Работа с цветом происходит именно от этого номера.
+  // Eng: color number. Work with color comes from this number.
+  EditColor: LongWord;
   // RU: прямоугольник описывающий поле ввода
   // EN: rectangle describing the input field
   myRect: zglTRect2D;
@@ -71,8 +77,7 @@ begin
   //     Текст будет выведен поверх того, что вы здесь нарисуете.
   // EN: displacement and rotation will be done prior to performing the procedure. I am showing you how to draw a frame.
   //     The text will be drawn on top of what you draw here.
-
-  pr2d_Rect(- 2, - 1, myRect.W + 5, myRect.H, {$IfnDef OLD_METHODS}cl_White{$else}, $FFFFFF, 128{$EndIf}, PR2D_FILL);
+  pr2d_Rect(- 2, - 1, myRect.W + 5, myRect.H,  {$IfnDef OLD_METHODS}cl_White{$else}, $FFFFFF, 128{$EndIf}, PR2D_FILL);
 end;
   {$EndIf}
 
@@ -82,91 +87,93 @@ var
   EScale: LongWord;
 {$EndIf}
 begin
-
   zgl_Enable(CORRECT_RESOLUTION);
   scr_CorrectResolution( 800, 600 );
-  log_Add('winOn = ' + u_BoolToStr(winOn));
 
   file_OpenArchive(PAnsiChar(zgl_Get(DIRECTORY_APPLICATION)));
 
+  // RU: Загружаем данные о шрифтах.
+  // EN: Loading font data.
   fntMain := font_LoadFromFile( dirRes + 'font.zfi' );
+  fontUse := font_LoadFromFile( dirRes + 'CalibriBold50pt.zfi');
+  // note
+  // RU: Мы дважды загружаем один и тот же фонт для того, чтоб работать с ними по раздельности. Один фонт для клавиатуры, другой фонт для поля ввода.
+  // EN: We download the same font twice in order to work with them separately. One font for the keyboard, another font for the input field.
   {$IfNDef OLD_METHODS}
+  // обязательный код! Данные для отображения клавиатуры.
   // RU: Загружаем данные о шрифте.
   // EN: Load the font.
-  fntEdit := font_LoadFromFile( dirRes + 'CalibriBold50pt.zfi');
-  // Rus: для клавиатуры.
-  // Eng:
-  fontUse := font_LoadFromFile( dirRes + 'CalibriBold50pt.zfi');
-  JoyArrow := tex_LoadFromFile(dirRes + 'arrow.png');
-
-  if fLoadTextClearing then
-  begin
-    txt_LoadFromFile(dirRes + 'Rus.dat', LoadText);
-    set_FlagForLoadText(False);
-  end
-  else
-    log_Add('Rus.dat not loading. Global string false.');
+   fntEdit := font_LoadFromFile(dirRes + 'CalibriBold50pt.zfi');
+  JoyArrow := tex_LoadFromFile(dirRes + 'arrow.png');     // загрузили текстуру
+  tex_SetFrameSize(JoyArrow, 64, 64);                     // и разбили её на части, но в записях не будет указано количество полученных текстур
+  // RU: Данные для виртуальной клавиатуры.
+  // EN: Data for the virtual keyboard.
+  txt_LoadFromFile(dirRes + 'Rus.txt', LoadText);
+  // RU: Создаём виртуальную клавиатуру. Для мобильных систем это будет обязательным кодом в дальнейшем.
+  // EN: We create a virtual keyboard. For mobile systems, this will be a mandatory code in the future.
+  CreateTouchKeyboard;
   {$EndIf}
 
   file_CloseArchive();
-  {$IfNDef OLD_METHODS}
-  // Rus: очередной код для клавиатуры.
-  // Eng:
-  tex_SetFrameSize(JoyArrow, 64, 64);            // разбили текстуру на части, но в записях не будет указано количество полученных текстур
 
+  {$IfNDef OLD_METHODS}
+  // RU: устанавливаем размеры шрифтов
+  // EN: set font sizes
+  setFontTextScale(15, fntMain);
+  setFontTextScale(20, fntEdit);
   // RU: размер шрифта поля ввода (для понимания что происходит). Изменяя размер шрифта, мы должны менять и
   //     размеры поля ввода - myRect в данном случае. Сами они не изменятся.
   // EN: the font size of the input field (to understand what's going on). By changing the font size,
   //     we must also change the size of the input field - myRect in this case. They themselves will not change.
   EScale := 20;
   setFontTextScale(EScale, fntEdit);
-  // RU: указываем размеры поля ввода.
-  // EN: specify the size of the input field.
+  // RU: указываем размеры поля ввода
+  // EN: specify the size of the input field
   myRect.X := 200;
   myRect.Y := 150;
   myRect.W := 200;
   myRect.H := 33;
-  // RU: указываем точку вращения, в данном случае центр поля ввода (по необходимости) и угол поворота (например 45).
-  // EN: specify the point of rotation, in this case the center of the input field (if necessary) and the angle of rotation (for example 45).
+  // RU: указываем точку вращения, в данном случае центр поля ввода (по необходимости) и угол поворота (например 45)
+  // EN: specify the point of rotation, in this case the center of the input field (if necessary) and the angle of rotation (for example 45)
   SetOfRotateAngleAndPoint(myRect.x + myRect.W / 2, myRect.y + myRect.H / 2, 30);
 
   // RU: указываем цвет текста (добавляем новый номер цвета, хотя данная функция вам возвратит цвет, если он уже был прописан).
   // EN: specify the color of the text (we add a new color number, although this function will return the color to you if it
   //     has already been assigned).
-  EditColor := Color_FindOrAdd($40a055FF);
+  EditColor := Color_FindOrAdd($208055FF);
   // Ru: устанавливаем цвета по умолчанию для всех  элементов API. Эти цвета будут задействованы только при создании
   //     определённого элемента. Для изменения цвета в самом (уже созданном) элементе, ни чего не прилагается.
   //     Дальнейшие измениня этих значений цвета, ни как не скажется на уже созданных элементах.
   // En: set default colors for all API elements. These colors will only be used when creating a specific element.
   //     To change the color in the (already created) element itself, nothing is attached. Further changes to these
   //     color values will not affect the already created elements in any way.
-  SetDefColor(EditColor, cl_Black);
+  SetDefColor(EditColor, cl_Green, cl_Black);
 
-  // RU: создаём само поле ввода с данными указанными выше и передаваемыми данными.
-  // EN: create the input field itself with the data specified above and the data that needs to be transferred.
+  // RU: создаём само поле ввода с данными указанными выше и передаваемыми данными
+  // EN: create the input field itself with the data specified above and the data that needs to be transferred
   myEdit := CreateEdit(myRect, fntEdit, EScale, @EditCont);
 
-  // RU: корректируем курсор.
-  // EN: adjust the cursor.
+  // RU: корректируем курсор
+  // EN: adjust the cursor
   CorrectEditCursor(myEdit, 2);
 
+  // RU: задаём очистку экрана заданным цветом
+  // EN: set the screen to clear with a specified color
+  scr_SetClearColor(true, $7090af);
+
   {$Else}
   inputRect.X := 400 - 192;
   inputRect.Y := 300 - 100 - 32;
   inputRect.W := 384;
   inputRect.H := 96;
-  {$EndIf}
-  // RU: задаём очистку экрана заданным цветом.
-  // EN: set the screen to clear with a specified color.
-  scr_SetClearColor(true, $7090af);
-
-  CreateTouchKeyboard;
   setFontTextScale(15, fntMain);
+  {$EndIf}
+  log_Add('Initialization - end');
 end;
 
 procedure Draw;
-var
-  w : Single;
+  var
+    w : Single;
 begin
   batch2d_Begin;
   setTextColor(Get_Color(cl_Blue));
@@ -190,17 +197,17 @@ begin
   pr2d_Rect( inputRect.X, inputRect.Y, inputRect.W, inputRect.H, $FFFFFF, 255 );
   if trackInput Then
     begin
-      text_Draw( fntMain, 400, 300 - 100, 'Press Done to stop track text input:', TEXT_HALIGN_CENTER );
+      text_Draw( fntMain, 400, 300 - 100, 'Press Enter to stop track text input:', TEXT_HALIGN_CENTER );
       w := text_GetWidth( fntMain, userInput );
       pr2d_Rect( 400 + w / 2 + 2, 300 - 70, 10, 20, $FFFFFF, lineAlpha, PR2D_FILL );
     end else
-      text_Draw( fntMain, 400, 300 - 100, 'Tap here to enter text(maximum - 24 symbols):', TEXT_HALIGN_CENTER );
+      text_Draw( fntMain, 400, 300 - 100, 'Click here to enter text(maximum - 24 symbols):', TEXT_HALIGN_CENTER );
   text_Draw( fntMain, 400, 300 - 70, userInput, TEXT_HALIGN_CENTER );
   {$Else}
-{  text_Draw(fntMain, 0, 36, 'Press F5 to copy from Edit and draw');  // какой я нафиг англичанин? ))))
-  text_Draw(fntMain, 0, 54, 'Press F12 - Rus/Eng');                   // переделать для Android
+  text_Draw(fntMain, 0, 36, 'Press F5 to copy from Edit and draw');  // какой я нафиг англичанин? ))))
+  text_Draw(fntMain, 0, 54, 'Press F12 - Rus/Eng');
   if userInput <> '' then
-    text_Draw(fntMain, 400, 300 - 70, userInput, TEXT_HALIGN_CENTER);  }
+    text_Draw(fntMain, 400, 300 - 70, userInput, TEXT_HALIGN_CENTER);
   {$EndIf}
   batch2d_End;
 end;
@@ -212,7 +219,12 @@ begin
     DEC( lineAlpha, 10 )
   else
     lineAlpha := 255;
+end;
+{$EndIf}
 
+procedure KeyMouseEvent;
+begin
+  {$IfDef OLD_METHODS}
   // RU: Проверить тапнул ли пользователь в пределах inputRect и начать отслеживать ввод текста.
   // EN: Check if there was tap inside inputRect and start to track text input.
   if touch_Tap( 0 ) and col2d_PointInRect( touch_X( 0 ), touch_Y( 0 ), inputRect ) Then
@@ -233,30 +245,34 @@ begin
   // EN: Get inputted by user text.
   if trackInput Then
     userInput := key_GetText();
-
-  // RU: Обязательно очищаем состояния всех подсистем ввода.
-  // EN: Necessarily clear all the states of input subsystems.
-  touch_ClearState();
-  key_ClearState();
+  {$Else}
+  // RU: по нажатию F5 копируем то, что написано в поле ввода
+  // EN: by pressing F5, copy what is written in the input field
+  if keysDown[K_F5] then
+  begin
+    userInput := GetEditToText(myEdit);
+  end;
+  {$EndIf}
 end;
-{$EndIf}
 
 procedure Restore;
 begin
   file_OpenArchive( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
   font_RestoreFromFile( fntMain, dirRes + 'font.zfi' );
-  font_RestoreFromFile( fntEdit, dirRes + 'CalibriBold50pt.zfi' );
-  tex_RestoreFromFile(JoyArrow, dirRes + 'arrow.png');
+  {$IfNDef OLD_METHODS}
+  font_RestoreFromFile( fntMain, dirRes + 'CalibriBold50pt.zfi' );
+  tex_RestoreFromFile( JoyArrow, dirRes + 'arrow.png' );
+  {$EndIf}
   file_CloseArchive();
-  log_Add('Restored true!!!');
 end;
 
 procedure Java_zengl_android_ZenGL_Main( var env; var thiz ); cdecl;
 begin
   {$IfDef OLD_METHODS}
-  TimerStart := timer_Add( @Timer, 16, t_Start );
+  TimerStart := timer_Add( @Timer, 16, Start );
   {$EndIf}
 
+  zgl_Reg(SYS_EVENTS, @KeyMouseEvent);
   zgl_Reg( SYS_LOAD, @Init );
   zgl_Reg( SYS_DRAW, @Draw );
   zgl_Reg( SYS_ANDROID_RESTORE, @Restore );

+ 415 - 0
Zengl_SRC/demos/Android/03-Input/jni/demo03.lps

@@ -0,0 +1,415 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectSession>
+    <PathDelim Value="\"/>
+    <Version Value="12"/>
+    <BuildModes Active="Default"/>
+    <Units Count="53">
+      <Unit0>
+        <Filename Value="demo03.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <IsVisibleTab Value="True"/>
+        <CursorPos X="10" Y="8"/>
+        <UsageCount Value="137"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="..\..\..\..\srcGEGL\gegl_button.pas"/>
+        <IsPartOfProject Value="True"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="97"/>
+        <CursorPos X="3" Y="99"/>
+        <UsageCount Value="93"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="..\..\..\..\src\zgl_keyboard.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="323"/>
+        <CursorPos X="18" Y="358"/>
+        <UsageCount Value="56"/>
+      </Unit2>
+      <Unit3>
+        <Filename Value="..\..\..\..\src\zgl_application.pas"/>
+        <EditorIndex Value="-1"/>
+        <WindowIndex Value="1"/>
+        <TopLine Value="2050"/>
+        <CursorPos X="98" Y="2059"/>
+        <UsageCount Value="33"/>
+      </Unit3>
+      <Unit4>
+        <Filename Value="..\..\..\..\src\zgl_threads.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="91"/>
+        <CursorPos X="36" Y="102"/>
+        <UsageCount Value="10"/>
+      </Unit4>
+      <Unit5>
+        <Filename Value="D:\lazarus\fpc\3.0.4\source\rtl\linux\sysosh.inc"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="2"/>
+        <CursorPos X="50" Y="23"/>
+        <UsageCount Value="10"/>
+      </Unit5>
+      <Unit6>
+        <Filename Value="D:\lazarus\fpc\3.0.4\source\rtl\inc\threadh.inc"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="148"/>
+        <CursorPos X="11" Y="163"/>
+        <UsageCount Value="10"/>
+      </Unit6>
+      <Unit7>
+        <Filename Value="D:\lazarus\fpc\3.0.4\source\rtl\inc\thread.inc"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="406"/>
+        <CursorPos X="28" Y="421"/>
+        <UsageCount Value="10"/>
+      </Unit7>
+      <Unit8>
+        <Filename Value="..\..\..\..\src\zgl_utils.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="372"/>
+        <CursorPos X="3" Y="372"/>
+        <UsageCount Value="33"/>
+      </Unit8>
+      <Unit9>
+        <Filename Value="..\..\01 - Initialization\jni\demo01.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="58"/>
+        <UsageCount Value="1"/>
+      </Unit9>
+      <Unit10>
+        <Filename Value="..\..\02 - Resources\jni\demo02.lpr"/>
+        <EditorIndex Value="-1"/>
+        <CursorPos X="25" Y="9"/>
+        <UsageCount Value="10"/>
+      </Unit10>
+      <Unit11>
+        <Filename Value="..\..\..\Lazarus\05 - Primitives\demo05.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="56"/>
+        <UsageCount Value="10"/>
+      </Unit11>
+      <Unit12>
+        <Filename Value="..\..\..\Lazarus\01 - Initialization\demo01.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="88"/>
+        <UsageCount Value="1"/>
+      </Unit12>
+      <Unit13>
+        <Filename Value="..\..\..\Lazarus\03 - Input\demo03.lpr"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="130"/>
+        <CursorPos X="10" Y="44"/>
+        <UsageCount Value="10"/>
+      </Unit13>
+      <Unit14>
+        <Filename Value="..\..\..\..\src\zgl_primitives_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="33"/>
+        <CursorPos X="20" Y="41"/>
+        <UsageCount Value="10"/>
+      </Unit14>
+      <Unit15>
+        <Filename Value="..\..\..\..\src\zgl_main.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="654"/>
+        <CursorPos X="57" Y="665"/>
+        <UsageCount Value="3"/>
+      </Unit15>
+      <Unit16>
+        <Filename Value="..\..\..\..\src\zgl_screen.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1018"/>
+        <CursorPos X="8" Y="1021"/>
+        <UsageCount Value="28"/>
+      </Unit16>
+      <Unit17>
+        <Filename Value="..\..\..\..\src\zgl_window.pas"/>
+        <EditorIndex Value="-1"/>
+        <WindowIndex Value="1"/>
+        <TopLine Value="128"/>
+        <CursorPos X="50" Y="151"/>
+        <UsageCount Value="36"/>
+      </Unit17>
+      <Unit18>
+        <Filename Value="..\..\..\..\extra\sw_touch_menu.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1081"/>
+        <CursorPos X="19" Y="894"/>
+        <UsageCount Value="2"/>
+      </Unit18>
+      <Unit19>
+        <Filename Value="..\..\..\..\extra\sw_draw_gui.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="125"/>
+        <CursorPos Y="3"/>
+        <UsageCount Value="3"/>
+      </Unit19>
+      <Unit20>
+        <Filename Value="..\..\..\..\src\zgl_opengl_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="308"/>
+        <CursorPos X="122" Y="324"/>
+        <UsageCount Value="2"/>
+      </Unit20>
+      <Unit21>
+        <Filename Value="..\..\..\..\src\zgl_config.cfg"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="97"/>
+        <CursorPos X="3" Y="113"/>
+        <UsageCount Value="2"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit21>
+      <Unit22>
+        <Filename Value="..\..\..\..\headers\zglCustomConfig.cfg"/>
+        <EditorIndex Value="-1"/>
+        <CursorPos X="11" Y="29"/>
+        <UsageCount Value="12"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit22>
+      <Unit23>
+        <Filename Value="..\..\..\..\src\zgl_file.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="85"/>
+        <CursorPos X="11" Y="115"/>
+        <UsageCount Value="43"/>
+      </Unit23>
+      <Unit24>
+        <Filename Value="C:\Projects\workspace\FilePathPr\jni\filerw.lpr"/>
+        <EditorIndex Value="-1"/>
+        <CursorPos X="40" Y="10"/>
+        <UsageCount Value="3"/>
+      </Unit24>
+      <Unit25>
+        <Filename Value="..\..\..\..\src\zgl_opengles.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="347"/>
+        <CursorPos X="44" Y="365"/>
+        <UsageCount Value="3"/>
+      </Unit25>
+      <Unit26>
+        <Filename Value="..\..\..\..\src\zgl_text.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="378"/>
+        <CursorPos X="13" Y="427"/>
+        <UsageCount Value="34"/>
+      </Unit26>
+      <Unit27>
+        <Filename Value="..\..\..\..\src\zgl_font.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="160"/>
+        <CursorPos X="3" Y="140"/>
+        <UsageCount Value="3"/>
+      </Unit27>
+      <Unit28>
+        <Filename Value="..\..\..\..\src\zgl_opengles_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1741"/>
+        <CursorPos X="24" Y="1764"/>
+        <UsageCount Value="9"/>
+      </Unit28>
+      <Unit29>
+        <Filename Value="..\..\..\..\src\zgl_touch.pas"/>
+        <EditorIndex Value="-1"/>
+        <CursorPos X="60" Y="49"/>
+        <UsageCount Value="54"/>
+      </Unit29>
+      <Unit30>
+        <Filename Value="..\..\..\..\headers\zgl_config.cfg"/>
+        <EditorIndex Value="-1"/>
+        <WindowIndex Value="1"/>
+        <TopLine Value="102"/>
+        <CursorPos X="39" Y="115"/>
+        <UsageCount Value="36"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit30>
+      <Unit31>
+        <Filename Value="..\..\..\..\srcGEGL\gegl_config.cfg"/>
+        <EditorIndex Value="-1"/>
+        <WindowIndex Value="1"/>
+        <UsageCount Value="30"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit31>
+      <Unit32>
+        <Filename Value="..\..\..\..\srcGEGL\gegl_draw_gui.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="239"/>
+        <CursorPos X="13" Y="262"/>
+        <UsageCount Value="54"/>
+      </Unit32>
+      <Unit33>
+        <Filename Value="..\..\..\..\srcGEGL\gegl_VElements.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="555"/>
+        <CursorPos X="37" Y="567"/>
+        <UsageCount Value="46"/>
+      </Unit33>
+      <Unit34>
+        <Filename Value="..\..\..\..\srcGEGL\gegl_menu_gui.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1022"/>
+        <CursorPos X="7" Y="917"/>
+        <UsageCount Value="47"/>
+      </Unit34>
+      <Unit35>
+        <Filename Value="..\..\..\..\..\..\..\FPC_3_2\lazarus\lcl\interfaces\gtk2\gtk2cellrenderer.pas"/>
+        <UnitName Value="Gtk2CellRenderer"/>
+        <EditorIndex Value="-1"/>
+        <CursorPos X="3" Y="30"/>
+        <UsageCount Value="3"/>
+      </Unit35>
+      <Unit36>
+        <Filename Value="..\..\..\..\src\zgl_fpc.cfg"/>
+        <EditorIndex Value="-1"/>
+        <UsageCount Value="4"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit36>
+      <Unit37>
+        <Filename Value="..\..\..\..\..\..\..\FPC_3_2\fpcsrc\rtl\inc\system.inc"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1961"/>
+        <CursorPos X="11" Y="1991"/>
+        <UsageCount Value="3"/>
+      </Unit37>
+      <Unit38>
+        <Filename Value="..\..\..\..\srcGEGL\gegl_types.pas"/>
+        <UnitName Value="gegl_Types"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="111"/>
+        <CursorPos X="3" Y="169"/>
+        <UsageCount Value="45"/>
+      </Unit38>
+      <Unit39>
+        <Filename Value="..\..\..\..\srcGEGL\gegl_color.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="53"/>
+        <CursorPos X="36" Y="304"/>
+        <UsageCount Value="5"/>
+      </Unit39>
+      <Unit40>
+        <Filename Value="..\..\..\..\src\zgl_textures.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="16"/>
+        <CursorPos X="30" Y="34"/>
+        <UsageCount Value="40"/>
+      </Unit40>
+      <Unit41>
+        <Filename Value="..\..\..\..\src\zgl_textures_png.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="436"/>
+        <CursorPos X="51" Y="469"/>
+        <ExtraEditorCount Value="1"/>
+        <ExtraEditor1>
+          <EditorIndex Value="-1"/>
+          <WindowIndex Value="1"/>
+          <TopLine Value="287"/>
+          <CursorPos X="44" Y="287"/>
+        </ExtraEditor1>
+        <UsageCount Value="39"/>
+      </Unit41>
+      <Unit42>
+        <Filename Value="..\..\..\..\src\zgl_lib_zip.pas"/>
+        <EditorIndex Value="-1"/>
+        <WindowIndex Value="1"/>
+        <TopLine Value="65"/>
+        <CursorPos X="45" Y="78"/>
+        <UsageCount Value="35"/>
+      </Unit42>
+      <Unit43>
+        <Filename Value="..\..\..\..\src\zgl_render.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="123"/>
+        <CursorPos X="28" Y="173"/>
+        <UsageCount Value="5"/>
+      </Unit43>
+      <Unit44>
+        <Filename Value="..\..\..\..\src\zgl_memory.pas"/>
+        <EditorIndex Value="-1"/>
+        <WindowIndex Value="1"/>
+        <TopLine Value="-1"/>
+        <CursorPos X="-1" Y="-1"/>
+        <ExtraEditorCount Value="1"/>
+        <ExtraEditor1>
+          <EditorIndex Value="-1"/>
+          <TopLine Value="183"/>
+          <CursorPos X="30" Y="219"/>
+        </ExtraEditor1>
+        <UsageCount Value="5"/>
+      </Unit44>
+      <Unit45>
+        <Filename Value="..\..\..\..\src\zgl_types.pas"/>
+        <EditorIndex Value="-1"/>
+        <UsageCount Value="36"/>
+      </Unit45>
+      <Unit46>
+        <Filename Value="..\..\..\..\srcGEGL\gegl_utils.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="29"/>
+        <CursorPos X="64" Y="57"/>
+        <UsageCount Value="34"/>
+      </Unit46>
+      <Unit47>
+        <Filename Value="..\..\..\..\srcGL\GLdefine.cfg"/>
+        <EditorIndex Value="-1"/>
+        <CursorPos X="19" Y="34"/>
+        <UsageCount Value="19"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit47>
+      <Unit48>
+        <Filename Value="..\..\..\..\srcGL\zgl_gltypeconst.pas"/>
+        <EditorIndex Value="-1"/>
+        <WindowIndex Value="1"/>
+        <CursorPos X="6" Y="36"/>
+        <UsageCount Value="15"/>
+      </Unit48>
+      <Unit49>
+        <Filename Value="..\..\..\..\src\zgl_render_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="77"/>
+        <CursorPos X="3" Y="79"/>
+        <UsageCount Value="9"/>
+      </Unit49>
+      <Unit50>
+        <Filename Value="..\..\..\..\src\zgl_lib_ogg.pas"/>
+        <EditorIndex Value="-1"/>
+        <WindowIndex Value="1"/>
+        <TopLine Value="61"/>
+        <CursorPos X="11" Y="77"/>
+        <UsageCount Value="12"/>
+      </Unit50>
+      <Unit51>
+        <Filename Value="..\..\..\..\src\zgl_lib_theora.pas"/>
+        <EditorIndex Value="-1"/>
+        <WindowIndex Value="1"/>
+        <TopLine Value="20"/>
+        <CursorPos X="17" Y="40"/>
+        <UsageCount Value="11"/>
+      </Unit51>
+      <Unit52>
+        <Filename Value="..\..\..\..\src\zgl_mouse.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="88"/>
+        <CursorPos X="78" Y="105"/>
+        <UsageCount Value="11"/>
+      </Unit52>
+    </Units>
+    <JumpHistory Count="3" HistoryIndex="2">
+      <Position1>
+        <Filename Value="demo03.lpr"/>
+        <Caret Line="12" Column="11"/>
+      </Position1>
+      <Position2>
+        <Filename Value="demo03.lpr"/>
+        <Caret Line="12" Column="11"/>
+      </Position2>
+      <Position3>
+        <Filename Value="demo03.lpr"/>
+        <Caret Line="8" Column="10"/>
+      </Position3>
+    </JumpHistory>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes ActiveMode=""/>
+    </RunParams>
+  </ProjectSession>
+</CONFIG>

+ 4 - 2
Zengl_SRC/demos/Android/03 - Input/jni/linux_prebuild.sh → Zengl_SRC/demos/Android/03-Input/jni/prebuild.sh

@@ -1,13 +1,15 @@
 # copy libraries
+mkdir ../libs
+mkdir ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libzenjpeg.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libopenal.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libogg.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libvorbis.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libtheoradec.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libchipmunk.so ../libs/armeabi/
-cp ../../../../bin/Android/armv6/libGLU.so ../libs/armeabi/
 # copy resources
+mkdir ../assets
 cp ../../../../bin/data/font* ../assets
 cp ../../../../bin/data/CalibriBold50pt* ../assets
 cp ../../../../bin/data/arrow.png ../assets
-cp ../../../../bin/data/Rus.dat ../assets
+cp ../../../../bin/data/Rus.txt ../assets

+ 0 - 0
Zengl_SRC/demos/Android/03 - Input/project.properties → Zengl_SRC/demos/Android/03-Input/project.properties


+ 0 - 0
Zengl_SRC/demos/Android/03 - Input/res/drawable-hdpi/ic_launcher.png → Zengl_SRC/demos/Android/03-Input/res/drawable-hdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/03 - Input/res/drawable-ldpi/ic_launcher.png → Zengl_SRC/demos/Android/03-Input/res/drawable-ldpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/03 - Input/res/drawable-mdpi/ic_launcher.png → Zengl_SRC/demos/Android/03-Input/res/drawable-mdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/03 - Input/res/drawable-xhdpi/ic_launcher.png → Zengl_SRC/demos/Android/03-Input/res/drawable-xhdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/03 - Input/res/values/strings.xml → Zengl_SRC/demos/Android/03-Input/res/values/strings.xml


+ 34 - 31
Zengl_SRC/demos/Android/02 - Resources/src/zengl/android/ZenGL.java → Zengl_SRC/demos/Android/03-Input/src/zengl/android/ZenGL.java

@@ -21,7 +21,7 @@
  *  3. This notice may not be removed or altered from any
  *     source distribution.
  *  
- *  modifing by Serge 06.05.2020
+ *  modifing by Serge 08.08.2020
 */
 package zengl.android;
 
@@ -52,14 +52,10 @@ public class ZenGL extends GLSurfaceView
 	private native void zglNativeDrawFrame();
 	private native void zglNativeActivate( boolean Activate );
 	private native void zglNativeCloseQuery();
-	private native void zglNativeTouch( int ID, float X, float Y, int Pressure );
+	private native void zglNativeTouch( int ID, float X, float Y, float Pressure );
 	private native void zglNativeInputText( String Text );
 	private native void zglNativeBackspace();
 
-	// add function
-	private native byte[] byteArrPasToJava();
-	private native void byteArrJavaToPas(byte[] arr);
-	
 	private zglCRenderer Renderer;
 	private String SourceDir;
 	private String DataDir;
@@ -75,7 +71,6 @@ public class ZenGL extends GLSurfaceView
 		System.loadLibrary( "vorbis" );
 		System.loadLibrary( "theoradec" );
 		System.loadLibrary( "chipmunk" );
-		System.loadLibrary( "GLU" );
 		System.loadLibrary( appName );
 
 		SourceDir = appSourceDir;
@@ -116,50 +111,58 @@ public class ZenGL extends GLSurfaceView
 
 		switch ( actionType )
 		{
-			// это событие срабатывает один раз
 			case MotionEvent.ACTION_DOWN:
 			{
-				int pointerID = event.getPointerId(0);
-				zglNativeTouch( pointerID, event.getX( 0 ), event.getY( 0 ), 1 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), event.getPressure( i ) );
+				}
 				break;
 			}
-			// и это событие срабатывает один раз
-			case MotionEvent.ACTION_POINTER_DOWN:
+
+			case MotionEvent.ACTION_UP:
 			{
-				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
-				int pointerIndex = event.getPointerId( pointerID );
-				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
-					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 3 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), 0 );
+				}
 				break;
 			}
-	
-			case MotionEvent.ACTION_UP:
+
+			case MotionEvent.ACTION_MOVE:
 			{
-				int pointerID = event.getPointerId(0);
-				zglNativeTouch( pointerID, event.getX( 0 ), event.getY( 0 ), 0 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), event.getPressure( i ) );
+				}
 				break;
 			}
-			
-			case MotionEvent.ACTION_POINTER_UP:
+
+			case MotionEvent.ACTION_POINTER_DOWN:
 			{
 				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
 				int pointerIndex = event.getPointerId( pointerID );
 				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
-					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 2 );
+					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), event.getPressure( pointerID ) );
 				break;
 			}
-	
-			case MotionEvent.ACTION_MOVE:
+
+			case MotionEvent.ACTION_POINTER_UP:
 			{
-				int count = event.getPointerCount();
-				for ( int i = 0; i < count; i++ )
-				{
-					int pointerID = event.getPointerId( i );
-					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), 5 );
-				}
+				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
+				int pointerIndex = event.getPointerId( pointerID );
+				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
+					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 0 );
 				break;
 			}
 		}
+
 		return true;
 	}
 

+ 0 - 0
Zengl_SRC/demos/Android/03 - Input/src/zengl/demo03/Demo03Activity.java → Zengl_SRC/demos/Android/03-Input/src/zengl/demo03/Demo03Activity.java


+ 0 - 1
Zengl_SRC/demos/Android/04 - Screen Settings/assets/res.txt

@@ -1 +0,0 @@
-folder res

+ 0 - 10
Zengl_SRC/demos/Android/04 - Screen Settings/jni/windows_prebuild.bat

@@ -1,10 +0,0 @@
-copy ..\..\..\..\bin\Android\armv6\libzenjpeg.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libopenal.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libogg.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libvorbis.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libtheoradec.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libchipmunk.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libGLU.so ..\libs\armeabi\
-
-copy ..\..\..\..\bin\data\font* ..\assets
-copy ..\..\..\..\bin\data\back03.jpg ..\assets

+ 0 - 1
Zengl_SRC/demos/Android/04 - Screen Settings/libs/armeabi/0.txt

@@ -1 +0,0 @@
-folder libs

+ 9 - 0
Zengl_SRC/demos/Android/04-ScreenSettings/.classpath

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>

+ 33 - 0
Zengl_SRC/demos/Android/04-ScreenSettings/.project

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>04 - Screen Settings</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

+ 0 - 0
Zengl_SRC/demos/Android/04 - Screen Settings/AndroidManifest.xml → Zengl_SRC/demos/Android/04-ScreenSettings/AndroidManifest.xml


+ 9 - 6
Zengl_SRC/demos/Android/04 - Screen Settings/jni/demo04.lpi → Zengl_SRC/demos/Android/04-ScreenSettings/jni/demo04.lpi

@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <CONFIG>
   <ProjectOptions>
-    <Version Value="11"/>
+    <Version Value="12"/>
     <PathDelim Value="\"/>
     <General>
       <Flags>
         <MainUnitHasCreateFormStatements Value="False"/>
         <MainUnitHasTitleStatement Value="False"/>
         <MainUnitHasScaledStatement Value="False"/>
+        <CompatibilityMode Value="True"/>
       </Flags>
       <SessionStorage Value="InProjectDir"/>
-      <MainUnit Value="0"/>
       <Title Value="demo04"/>
       <UseAppBundle Value="False"/>
       <ResourceType Value="res"/>
@@ -24,7 +24,6 @@
     </PublishOptions>
     <RunParams>
       <FormatVersion Value="2"/>
-      <Modes Count="0"/>
     </RunParams>
     <Units Count="1">
       <Unit0>
@@ -40,14 +39,13 @@
       <Filename Value="..\libs\armeabi\demo04"/>
     </Target>
     <SearchPaths>
-      <IncludeFiles Value="..\..\..\..\headers;..\..\..\..\headers\android;$(ProjOutDir);..\..\..\..\srcGEGL;..\..\..\..\src;..\..\..\..\srcGL"/>
+      <IncludeFiles Value="..\..\..\..\headers;..\..\..\..\headers\android;$(ProjOutDir);..\..\..\..\srcGL;..\..\..\..\srcGEGL;..\..\..\..\src"/>
       <Libraries Value="..\libs\armeabi"/>
-      <OtherUnitFiles Value="..\..\..\..\src;..\..\..\..\srcGL;..\..\..\..\srcGEGL;..\..\..\..\lib\zlib\arm-linux;..\..\..\..\lib\zip\arm-linux;..\..\..\..\lib\theora\arm-linux;..\..\..\..\lib\ogg\arm-linux"/>
+      <OtherUnitFiles Value="..\..\..\..\src;..\..\..\..\lib\zlib\arm-linux;..\..\..\..\lib\zip\arm-linux;..\..\..\..\lib\theora\arm-linux;..\..\..\..\lib\ogg\arm-linux;..\..\..\..\srcGEGL;..\..\..\..\srcGL"/>
       <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
     </SearchPaths>
     <CodeGeneration>
       <SmartLinkUnit Value="True"/>
-      <RelocatableUnit Value="True"/>
       <TargetCPU Value="arm"/>
       <TargetOS Value="android"/>
       <Optimizations>
@@ -63,6 +61,11 @@
         <ExecutableType Value="Library"/>
       </Options>
     </Linking>
+    <Other>
+      <ExecuteBefore>
+        <Command Value="sh prebuild.sh"/>
+      </ExecuteBefore>
+    </Other>
   </CompilerOptions>
   <Debugging>
     <Exceptions Count="3">

+ 11 - 9
Zengl_SRC/demos/Android/04 - Screen Settings/jni/demo04.lpr → Zengl_SRC/demos/Android/04-ScreenSettings/jni/demo04.lpr

@@ -13,14 +13,15 @@ uses
   zgl_font,
   zgl_text,
   zgl_primitives_2d,
-  zgl_render_2d,
   zgl_sprite_2d,
   zgl_textures,
   zgl_textures_png,
   zgl_textures_jpg,
   zgl_types,
   zgl_collision_2d,
+  {$IfNDef OLD_METHODS}
   gegl_color,
+  {$EndIf}
   zgl_utils
   ;
 
@@ -54,8 +55,9 @@ begin
 end;
 
 procedure Draw;
+  var
+    w   : Single;
 begin
-  batch2d_Begin;
   ssprite2d_Draw( texBack, 0, 0, 800, 600, 0 );
 
   correctRect.W := text_GetWidth( fntMain, str ) + 16;
@@ -65,21 +67,18 @@ begin
   if correctAspect Then
     begin
       pr2d_Rect( correctRect.X, correctRect.Y, correctRect.W, correctRect.H, {$IfDef OLD_METHODS}$FFFFFF, 25,{$Else}cl_White05,{$EndIf} PR2D_FILL );
-      pr2d_Rect( correctRect.X, correctRect.Y, correctRect.W, correctRect.H, {$IfDef OLD_METHODS}$00FF00, 255{$Else}cl_Green{$EndIf} );
-      text_Draw(fntMain, 0, 0, 'Correct resolutions ON!');
+      pr2d_Rect( correctRect.X, correctRect.Y, correctRect.W, correctRect.H, {$IfDef OLD_METHODS}$00FF00, 255{$Else}cl_Lime{$EndIf} );
     end else
       begin
         pr2d_Rect( correctRect.X, correctRect.Y, correctRect.W, correctRect.H, {$IfDef OLD_METHODS}$000000, 155,{$Else}cl_Black05,{$EndIf} PR2D_FILL );
         pr2d_Rect( correctRect.X, correctRect.Y, correctRect.W, correctRect.H, {$IfDef OLD_METHODS}$FFFFFF, 255{$Else}cl_White{$EndIf} );
-        text_Draw(fntMain, 0, 0, 'Correct resolutions off.');
       end;
   text_DrawInRect( fntMain, correctRect, str, TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER );
-  batch2d_End;
 end;
 
-procedure KeyMouseEvents;
+procedure Timer;
 begin
-  if touch_Click( 0 ) Then
+  if touch_Tap( 0 ) Then
   begin
     // RU: Android устройства имеют самые разнообразные разрешения экрана и соотношения сторон, поэтому коррекция аспекта просто необходма.
     // EN: Android devices have a lot of different screen resolutions and aspects, and because of this correction of aspect is "must have" for project.
@@ -99,6 +98,8 @@ begin
       end;
     end;
   end;
+
+  touch_ClearState();
 end;
 
 procedure Restore;
@@ -111,7 +112,8 @@ end;
 
 procedure Java_zengl_android_ZenGL_Main( var env; var thiz ); cdecl;
 begin
-  zgl_Reg(SYS_EVENTS, @KeyMouseEvents);
+  TimeStart := timer_Add( @Timer, 16, t_Start );
+
   zgl_Reg( SYS_LOAD, @Init );
   zgl_Reg( SYS_DRAW, @Draw );
   zgl_Reg( SYS_ANDROID_RESTORE, @Restore );

+ 182 - 0
Zengl_SRC/demos/Android/04-ScreenSettings/jni/demo04.lps

@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CONFIG>
+  <ProjectSession>
+    <PathDelim Value="\"/>
+    <Version Value="12"/>
+    <BuildModes Active="Default"/>
+    <Units Count="12">
+      <Unit0>
+        <Filename Value="demo04.lpr"/>
+        <IsPartOfProject Value="True"/>
+        <IsVisibleTab Value="True"/>
+        <TopLine Value="23"/>
+        <CursorPos X="53" Y="57"/>
+        <UsageCount Value="26"/>
+        <Loaded Value="True"/>
+      </Unit0>
+      <Unit1>
+        <Filename Value="..\..\..\..\src\zgl_screen.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="698"/>
+        <CursorPos X="49" Y="713"/>
+        <UsageCount Value="12"/>
+      </Unit1>
+      <Unit2>
+        <Filename Value="..\..\..\..\src\zgl_window.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="143"/>
+        <UsageCount Value="11"/>
+      </Unit2>
+      <Unit3>
+        <Filename Value="..\..\..\..\src\zgl_text.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="84"/>
+        <CursorPos X="3" Y="85"/>
+        <UsageCount Value="12"/>
+      </Unit3>
+      <Unit4>
+        <Filename Value="..\..\..\..\src\zgl_primitives_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="75"/>
+        <CursorPos X="21" Y="90"/>
+        <UsageCount Value="12"/>
+      </Unit4>
+      <Unit5>
+        <Filename Value="..\..\..\..\src\zgl_opengles_all.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="753"/>
+        <CursorPos X="95" Y="767"/>
+        <UsageCount Value="12"/>
+      </Unit5>
+      <Unit6>
+        <Filename Value="..\..\..\..\src\zgl_main.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="474"/>
+        <CursorPos X="63" Y="465"/>
+        <UsageCount Value="11"/>
+      </Unit6>
+      <Unit7>
+        <Filename Value="..\..\..\..\src\zgl_application.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="1612"/>
+        <CursorPos X="11" Y="1631"/>
+        <UsageCount Value="11"/>
+      </Unit7>
+      <Unit8>
+        <Filename Value="..\..\..\..\src\zgl_threads.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="82"/>
+        <CursorPos X="22" Y="91"/>
+        <UsageCount Value="11"/>
+      </Unit8>
+      <Unit9>
+        <Filename Value="..\..\..\..\src\zgl_sprite_2d.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="240"/>
+        <CursorPos X="3" Y="254"/>
+        <UsageCount Value="10"/>
+      </Unit9>
+      <Unit10>
+        <Filename Value="..\..\..\..\src\zgl_config.cfg"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="101"/>
+        <CursorPos X="32" Y="119"/>
+        <UsageCount Value="10"/>
+        <DefaultSyntaxHighlighter Value="None"/>
+      </Unit10>
+      <Unit11>
+        <Filename Value="..\..\..\..\srcGEGL\gegl_color.pas"/>
+        <EditorIndex Value="-1"/>
+        <TopLine Value="31"/>
+        <CursorPos X="3" Y="52"/>
+        <UsageCount Value="10"/>
+      </Unit11>
+    </Units>
+    <JumpHistory Count="20" HistoryIndex="19">
+      <Position1>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="10" Column="11"/>
+      </Position1>
+      <Position2>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="70" Column="9" TopLine="46"/>
+      </Position2>
+      <Position3>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="67" Column="13" TopLine="53"/>
+      </Position3>
+      <Position4>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="70" Column="10" TopLine="58"/>
+      </Position4>
+      <Position5>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="68" Column="11" TopLine="51"/>
+      </Position5>
+      <Position6>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="15" Column="15" TopLine="5"/>
+      </Position6>
+      <Position7>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="10" Column="9"/>
+      </Position7>
+      <Position8>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="7" Column="9"/>
+      </Position8>
+      <Position9>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="6" Column="11"/>
+      </Position9>
+      <Position10>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="111" Column="44" TopLine="95"/>
+      </Position10>
+      <Position11>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="19" Column="12" TopLine="17"/>
+      </Position11>
+      <Position12>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="50" Column="17" TopLine="36"/>
+      </Position12>
+      <Position13>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="57" Column="10" TopLine="45"/>
+      </Position13>
+      <Position14>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="57" Column="11" TopLine="42"/>
+      </Position14>
+      <Position15>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="44" Column="37" TopLine="36"/>
+      </Position15>
+      <Position16>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="31" Column="29" TopLine="2"/>
+      </Position16>
+      <Position17>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="69" Column="121" TopLine="37"/>
+      </Position17>
+      <Position18>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="108" Column="27" TopLine="64"/>
+      </Position18>
+      <Position19>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="115" Column="41" TopLine="36"/>
+      </Position19>
+      <Position20>
+        <Filename Value="demo04.lpr"/>
+        <Caret Line="73" Column="131" TopLine="44"/>
+      </Position20>
+    </JumpHistory>
+    <RunParams>
+      <FormatVersion Value="2"/>
+      <Modes ActiveMode=""/>
+    </RunParams>
+  </ProjectSession>
+</CONFIG>

+ 4 - 2
Zengl_SRC/demos/Android/04 - Screen Settings/jni/linux_prebuild.sh → Zengl_SRC/demos/Android/04-ScreenSettings/jni/prebuild.sh

@@ -1,11 +1,13 @@
 # copy libraries
+mkdir ../libs
+mkdir ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libzenjpeg.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libopenal.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libogg.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libvorbis.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libtheoradec.so ../libs/armeabi/
 cp ../../../../bin/Android/armv6/libchipmunk.so ../libs/armeabi/
-cp ../../../../bin/Android/armv6/libGLU.so ../libs/armeabi/
 # copy resources
+mkdir ../assets
 cp ../../../../bin/data/font* ../assets
-cp ../../../../bin/data/back03.jpg ../assets
+cp ../../../../bin/data/back03.jpg ../assets

+ 0 - 0
Zengl_SRC/demos/Android/04 - Screen Settings/project.properties → Zengl_SRC/demos/Android/04-ScreenSettings/project.properties


+ 0 - 0
Zengl_SRC/demos/Android/04 - Screen Settings/res/drawable-hdpi/ic_launcher.png → Zengl_SRC/demos/Android/04-ScreenSettings/res/drawable-hdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/04 - Screen Settings/res/drawable-ldpi/ic_launcher.png → Zengl_SRC/demos/Android/04-ScreenSettings/res/drawable-ldpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/04 - Screen Settings/res/drawable-mdpi/ic_launcher.png → Zengl_SRC/demos/Android/04-ScreenSettings/res/drawable-mdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/04 - Screen Settings/res/drawable-xhdpi/ic_launcher.png → Zengl_SRC/demos/Android/04-ScreenSettings/res/drawable-xhdpi/ic_launcher.png


+ 0 - 0
Zengl_SRC/demos/Android/04 - Screen Settings/res/values/strings.xml → Zengl_SRC/demos/Android/04-ScreenSettings/res/values/strings.xml


+ 34 - 31
Zengl_SRC/demos/Android/03 - Input/src/zengl/android/ZenGL.java → Zengl_SRC/demos/Android/04-ScreenSettings/src/zengl/android/ZenGL.java

@@ -21,7 +21,7 @@
  *  3. This notice may not be removed or altered from any
  *     source distribution.
  *  
- *  modifing by Serge 06.05.2020
+ *  modifing by Serge 08.08.2020
 */
 package zengl.android;
 
@@ -52,14 +52,10 @@ public class ZenGL extends GLSurfaceView
 	private native void zglNativeDrawFrame();
 	private native void zglNativeActivate( boolean Activate );
 	private native void zglNativeCloseQuery();
-	private native void zglNativeTouch( int ID, float X, float Y, int Pressure );
+	private native void zglNativeTouch( int ID, float X, float Y, float Pressure );
 	private native void zglNativeInputText( String Text );
 	private native void zglNativeBackspace();
 
-	// add function
-	private native byte[] byteArrPasToJava();
-	private native void byteArrJavaToPas(byte[] arr);
-	
 	private zglCRenderer Renderer;
 	private String SourceDir;
 	private String DataDir;
@@ -75,7 +71,6 @@ public class ZenGL extends GLSurfaceView
 		System.loadLibrary( "vorbis" );
 		System.loadLibrary( "theoradec" );
 		System.loadLibrary( "chipmunk" );
-		System.loadLibrary( "GLU" );
 		System.loadLibrary( appName );
 
 		SourceDir = appSourceDir;
@@ -116,50 +111,58 @@ public class ZenGL extends GLSurfaceView
 
 		switch ( actionType )
 		{
-			// это событие срабатывает один раз
 			case MotionEvent.ACTION_DOWN:
 			{
-				int pointerID = event.getPointerId(0);
-				zglNativeTouch( pointerID, event.getX( 0 ), event.getY( 0 ), 1 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), event.getPressure( i ) );
+				}
 				break;
 			}
-			// и это событие срабатывает один раз
-			case MotionEvent.ACTION_POINTER_DOWN:
+
+			case MotionEvent.ACTION_UP:
 			{
-				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
-				int pointerIndex = event.getPointerId( pointerID );
-				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
-					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 3 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), 0 );
+				}
 				break;
 			}
-	
-			case MotionEvent.ACTION_UP:
+
+			case MotionEvent.ACTION_MOVE:
 			{
-				int pointerID = event.getPointerId(0);
-				zglNativeTouch( pointerID, event.getX( 0 ), event.getY( 0 ), 0 );
+				int count = event.getPointerCount();
+				for ( int i = 0; i < count; i++ )
+				{
+					int pointerID = event.getPointerId( i );
+					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), event.getPressure( i ) );
+				}
 				break;
 			}
-			
-			case MotionEvent.ACTION_POINTER_UP:
+
+			case MotionEvent.ACTION_POINTER_DOWN:
 			{
 				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
 				int pointerIndex = event.getPointerId( pointerID );
 				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
-					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 2 );
+					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), event.getPressure( pointerID ) );
 				break;
 			}
-	
-			case MotionEvent.ACTION_MOVE:
+
+			case MotionEvent.ACTION_POINTER_UP:
 			{
-				int count = event.getPointerCount();
-				for ( int i = 0; i < count; i++ )
-				{
-					int pointerID = event.getPointerId( i );
-					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), 5 );
-				}
+				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
+				int pointerIndex = event.getPointerId( pointerID );
+				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
+					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 0 );
 				break;
 			}
 		}
+
 		return true;
 	}
 

+ 0 - 0
Zengl_SRC/demos/Android/04 - Screen Settings/src/zengl/demo04/Demo04Activity.java → Zengl_SRC/demos/Android/04-ScreenSettings/src/zengl/demo04/Demo04Activity.java


+ 0 - 1
Zengl_SRC/demos/Android/05 - Primitives/assets/res.txt

@@ -1 +0,0 @@
-folder res

+ 0 - 80
Zengl_SRC/demos/Android/05 - Primitives/jni/demo05.lpr

@@ -1,80 +0,0 @@
-library demo05;
-
-{$I zglCustomConfig.cfg}
-
-uses
-  zgl_application,
-  zgl_screen,
-  zgl_window,
-  zgl_timers,
-  zgl_fx,
-  zgl_render_2d,
-  zgl_primitives_2d,
-  zgl_types,
-  zgl_math_2d,
-  gegl_color,
-  zgl_utils;
-
-var
-  calc   : Integer;
-  points : array[ 0..359 ] of zglTPoint2D;
-
-procedure Init;
-  var
-    i : Integer;
-begin
-  zgl_Enable( CORRECT_RESOLUTION );
-  scr_CorrectResolution( 800, 600 );
-
-  for i := 0 to 359 do
-    begin
-      points[ i ].X := 400 + m_Cos( i ) * ( 96 + random( 32 ) );
-      points[ i ].Y := 300 + m_Sin( i ) * ( 96 + random( 32 ) );
-    end;
-end;
-
-procedure Draw;
-  var
-    i : Integer;
-begin
-  // RU: Устанавливаем цвет и альфу для каждой вершины.
-  // EN: Set color and alpha for each vertex.
-  fx2d_SetVCA( $FF0000, $00FF00, $0000FF, $FFFFFF, 255, 255, 255, 255 );
-  // RU: Рисуем прямоугольник с заливкой(флаг PR2D_FILL) с использованием отдельных цветов для каждой вершины(флаг FX2D_VCA).
-  // EN: Render filled rectangle(flag PR2D_FILL) and use different colors for each vertex(flag FX2D_VCA).
-  pr2d_Rect( 0, 0, 800, 600, {$IfDef OLD_METHODS}$000000, 255,{$Else}cl_Black,{$EndIf} FX2D_VCA or PR2D_FILL );
-
-  // RU: Рисуем в центре экрана круг с радиусом 128 пиксела.
-  // EN: Render circle in the center of screen with radius 128 pixels.
-  pr2d_Circle( 400, 300, 128, {$IfDef OLD_METHODS}$ffffff, 155,{$Else}cl_White05,{$EndIf} 32, PR2D_FILL );
-
-  INC( calc );
-  if calc > 359 Then calc := 0;
-  points[ calc ].X := 400 + m_Cos( calc ) * ( 96 + random( 32 ) );
-  points[ calc ].Y := 300 + m_Sin( calc ) * ( 96 + random( 32 ) );
-  // RU: Рисуем линии внутри круга.
-  // EN: Render lines inside the circle.
-  for i := 0 to 359 do
-    pr2d_Line( 400, 300, points[ i ].X, points[ i ].Y, {$IfDef OLD_METHODS}$00FFFF, 255{$Else}cl_Yellow{$EndIf} );
-
-  // RU: Рисуем эллипсы с заливкой и без, со сглаженными контурами(флаг PR2D_SMOOTH).
-  // EN: Render filled ellipses with smoothed edges(flag PR2D_SMOOTH).
-  pr2d_Ellipse( 400 + 300, 300, 64, 256, {$IfDef OLD_METHODS}$FFFFFF, 128,{$Else}cl_White05,{$EndIf} 32, PR2D_FILL or PR2D_SMOOTH );
-  pr2d_Ellipse( 400 + 300, 300, 64, 256, {$IfDef OLD_METHODS}$000000, 255,{$Else}cl_Black,{$EndIf} 32, PR2D_SMOOTH );
-
-  pr2d_Ellipse( 400 - 300, 300, 64, 256, {$IfDef OLD_METHODS}$FFFFFF, 128,{$Else}cl_White05,{$EndIf} 32, PR2D_FILL or PR2D_SMOOTH );
-  pr2d_Ellipse( 400 - 300, 300, 64, 256, {$IfDef OLD_METHODS}$000000, 255,{$Else}cl_Black,{$EndIf} 32, PR2D_SMOOTH );
-end;
-
-procedure Java_zengl_android_ZenGL_Main( var env; var thiz ); cdecl;
-begin
-  zgl_Reg( SYS_LOAD, @Init );
-  zgl_Reg( SYS_DRAW, @Draw );
-
-  scr_SetOptions();
-end;
-
-exports
-  Java_zengl_android_ZenGL_Main,
-  {$I android_export.inc}
-End.

+ 0 - 7
Zengl_SRC/demos/Android/05 - Primitives/jni/windows_prebuild.bat

@@ -1,7 +0,0 @@
-copy ..\..\..\..\bin\Android\armv6\libzenjpeg.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libopenal.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libogg.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libvorbis.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libtheoradec.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libchipmunk.so ..\libs\armeabi\
-copy ..\..\..\..\bin\Android\armv6\libGLU.so ..\libs\armeabi\

+ 0 - 1
Zengl_SRC/demos/Android/05 - Primitives/libs/armeabi/0.txt

@@ -1 +0,0 @@
-folder libs

+ 0 - 270
Zengl_SRC/demos/Android/05 - Primitives/src/zengl/android/ZenGL.java

@@ -1,270 +0,0 @@
-/*
- *  Copyright (c) 2012 Andrey Kemka
- *
- *  This software is provided 'as-is', without any express or
- *  implied warranty. In no event will the authors be held
- *  liable for any damages arising from the use of this software.
- *
- *  Permission is granted to anyone to use this software for any purpose,
- *  including commercial applications, and to alter it and redistribute
- *  it freely, subject to the following restrictions:
- *
- *  1. The origin of this software must not be misrepresented;
- *     you must not claim that you wrote the original software.
- *     If you use this software in a product, an acknowledgment
- *     in the product documentation would be appreciated but
- *     is not required.
- *
- *  2. Altered source versions must be plainly marked as such,
- *     and must not be misrepresented as being the original software.
- *
- *  3. This notice may not be removed or altered from any
- *     source distribution.
- *  
- *  modifing by Serge 06.05.2020
-*/
-package zengl.android;
-
-import javax.microedition.khronos.egl.EGL10;
-import javax.microedition.khronos.egl.EGLContext;
-import javax.microedition.khronos.egl.EGLDisplay;
-import javax.microedition.khronos.egl.EGLSurface;
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.opengles.GL10;
-
-import android.app.Activity;
-import android.content.Context;
-import android.opengl.GLSurfaceView;
-import android.text.InputType;
-import android.view.*;
-import android.view.inputmethod.BaseInputConnection;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputConnection;
-import android.view.inputmethod.InputMethodManager;
-
-public class ZenGL extends GLSurfaceView
-{
-	private native void Main();
-	private native void zglNativeInit( String AppDirectory, String HomeDirectory );
-	private native void zglNativeDestroy();
-	private native void zglNativeSurfaceCreated();
-	private native void zglNativeSurfaceChanged( int width, int height );
-	private native void zglNativeDrawFrame();
-	private native void zglNativeActivate( boolean Activate );
-	private native void zglNativeCloseQuery();
-	private native void zglNativeTouch( int ID, float X, float Y, int Pressure );
-	private native void zglNativeInputText( String Text );
-	private native void zglNativeBackspace();
-
-	// add function
-	private native byte[] byteArrPasToJava();
-	private native void byteArrJavaToPas(byte[] arr);
-	
-	private zglCRenderer Renderer;
-	private String SourceDir;
-	private String DataDir;
-	private InputMethodManager InputManager;
-
-	public ZenGL( Context context, String appName, String appSourceDir )
-	{
-		super( context );
-
-		System.loadLibrary( "zenjpeg" );
-		System.loadLibrary( "openal" );
-		System.loadLibrary( "ogg" );
-		System.loadLibrary( "vorbis" );
-		System.loadLibrary( "theoradec" );
-		System.loadLibrary( "chipmunk" );
-		System.loadLibrary( "GLU" );
-		System.loadLibrary( appName );
-
-		SourceDir = appSourceDir;
-		DataDir = context.getFilesDir().getAbsolutePath();
-		Renderer = new zglCRenderer();
-		setRenderer( Renderer );
-
-		InputManager = (InputMethodManager)context.getSystemService( Context.INPUT_METHOD_SERVICE );
-		setFocusableInTouchMode( true );
-		((Activity)context).getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN );
-
-		zglNativeInit( SourceDir, DataDir );
-		Main();
-	}
-
-	@Override
-	public void onPause()
-	{
-		if ( InputManager.isAcceptingText() )
-			HideKeyboard();
-
-		super.onPause();
-		zglNativeActivate( false );
-	}
-
-	@Override
-	public void onResume()
-	{
-		super.onResume();
-		zglNativeActivate( true );
-	}
-
-	@Override
-	public boolean onTouchEvent( MotionEvent event )
-	{
-		int action = event.getAction();
-		int actionType = action & MotionEvent.ACTION_MASK;
-
-		switch ( actionType )
-		{
-			// это событие срабатывает один раз
-			case MotionEvent.ACTION_DOWN:
-			{
-				int pointerID = event.getPointerId(0);
-				zglNativeTouch( pointerID, event.getX( 0 ), event.getY( 0 ), 1 );
-				break;
-			}
-			// и это событие срабатывает один раз
-			case MotionEvent.ACTION_POINTER_DOWN:
-			{
-				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
-				int pointerIndex = event.getPointerId( pointerID );
-				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
-					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 3 );
-				break;
-			}
-	
-			case MotionEvent.ACTION_UP:
-			{
-				int pointerID = event.getPointerId(0);
-				zglNativeTouch( pointerID, event.getX( 0 ), event.getY( 0 ), 0 );
-				break;
-			}
-			
-			case MotionEvent.ACTION_POINTER_UP:
-			{
-				int pointerID = ( action & MotionEvent.ACTION_POINTER_INDEX_MASK ) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
-				int pointerIndex = event.getPointerId( pointerID );
-				if ( pointerID >= 0 && pointerID < event.getPointerCount() )
-					zglNativeTouch( pointerIndex, event.getX( pointerID ), event.getY( pointerID ), 2 );
-				break;
-			}
-	
-			case MotionEvent.ACTION_MOVE:
-			{
-				int count = event.getPointerCount();
-				for ( int i = 0; i < count; i++ )
-				{
-					int pointerID = event.getPointerId( i );
-					zglNativeTouch( pointerID, event.getX( i ), event.getY( i ), 5 );
-				}
-				break;
-			}
-		}
-		return true;
-	}
-
-	public void Finish()
-	{
-		zglNativeDestroy();
-		((Activity)getContext()).finish();
-		System.exit( 0 );
-	}
-
-	public void SwapBuffers()
-	{
-	    try {
-	    	EGL10 currEGL = (EGL10)EGLContext.getEGL();
-
-	    	EGLDisplay currDisplay = currEGL.eglGetCurrentDisplay();
-	    	if ( currDisplay == EGL10.EGL_NO_DISPLAY ) return;    
-
-	    	EGLSurface currSurface = currEGL.eglGetCurrentSurface( EGL10.EGL_DRAW );
-	    	if ( currSurface == EGL10.EGL_NO_SURFACE ) return;
-
-	    	currEGL.eglSwapBuffers( currDisplay, currSurface);
-	    } catch ( Exception e ) { }
-	}
-
-	public void ShowKeyboard()
-	{
-		InputManager.toggleSoftInput( InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS );
-	}
-
-	public void HideKeyboard()
-	{
-		InputManager.hideSoftInputFromWindow( this.getWindowToken(), 0 );
-	}
-
-	@Override
-	public InputConnection onCreateInputConnection( EditorInfo outAttrs )
-	{
-	    outAttrs.actionLabel = "";
-	    outAttrs.hintText = "";
-	    outAttrs.initialCapsMode = 0;
-	    outAttrs.initialSelEnd = outAttrs.initialSelStart = -1;
-	    outAttrs.label = "";
-	    outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI;
-	    outAttrs.inputType = InputType.TYPE_NULL;
-
-		return new zglInputConnection( this, false );
-	}
-
-	@Override
-	public boolean onCheckIsTextEditor()
-	{
-		return true;
-	}
-
-	@Override
-	public boolean onKeyDown( int keyCode, KeyEvent event )
-	{
-		if ( keyCode == KeyEvent.KEYCODE_ENTER )
-			HideKeyboard();
-		else if ( keyCode == KeyEvent.KEYCODE_DEL )
-			zglNativeBackspace();
-		else if ( keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9 )
-			zglNativeInputText( ((Integer)(keyCode - 7)).toString() );
-
-		return super.onKeyDown( keyCode, event );
-	}
-
-	public boolean onBackPressed()
-	{
-		zglNativeCloseQuery();
-		return false;
-	}
-
-	class zglCRenderer implements Renderer
-	{
-		public void onSurfaceCreated( GL10 gl, EGLConfig config )
-		{
-			zglNativeSurfaceCreated();
-		}
-
-		public void onSurfaceChanged( GL10 gl, int width, int height )
-		{
-			zglNativeSurfaceChanged( width, height );
-		}
-
-		public void onDrawFrame( GL10 gl )
-		{
-			zglNativeDrawFrame();
-		}
-	}
-
-	class zglInputConnection extends BaseInputConnection
-	{
-		public zglInputConnection( View targetView, boolean fullEditor )
-		{
-			super( targetView, fullEditor );
-		}
-
-		@Override
-		public boolean commitText( CharSequence text, int newCursorPosition )
-		{
-			zglNativeInputText( (String)text );
-
-			return true;
-		}
-	}
-}

+ 9 - 0
Zengl_SRC/demos/Android/05-Primitives/.classpath

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>

+ 33 - 0
Zengl_SRC/demos/Android/05-Primitives/.project

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>05 - Primitives</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

+ 4 - 0
Zengl_SRC/demos/Android/05-Primitives/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6

+ 0 - 0
Zengl_SRC/demos/Android/05 - Primitives/AndroidManifest.xml → Zengl_SRC/demos/Android/05-Primitives/AndroidManifest.xml


+ 11 - 0
Zengl_SRC/demos/Android/05-Primitives/jni/.project

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>jni</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>

+ 13 - 8
Zengl_SRC/demos/Android/05 - Primitives/jni/demo05.lpi → Zengl_SRC/demos/Android/05-Primitives/jni/demo05.lpi

@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <CONFIG>
   <ProjectOptions>
-    <Version Value="11"/>
+    <Version Value="12"/>
     <PathDelim Value="\"/>
     <General>
       <Flags>
         <MainUnitHasCreateFormStatements Value="False"/>
         <MainUnitHasTitleStatement Value="False"/>
         <MainUnitHasScaledStatement Value="False"/>
+        <CompatibilityMode Value="True"/>
       </Flags>
       <SessionStorage Value="InProjectDir"/>
-      <MainUnit Value="0"/>
       <Title Value="demo05"/>
       <UseAppBundle Value="False"/>
       <ResourceType Value="res"/>
@@ -24,11 +24,10 @@
     </PublishOptions>
     <RunParams>
       <FormatVersion Value="2"/>
-      <Modes Count="0"/>
     </RunParams>
     <Units Count="1">
       <Unit0>
-        <Filename Value="demo05.lpr"/>
+        <Filename Value="demo05.pas"/>
         <IsPartOfProject Value="True"/>
       </Unit0>
     </Units>
@@ -40,27 +39,33 @@
       <Filename Value="..\libs\armeabi\demo05"/>
     </Target>
     <SearchPaths>
-      <IncludeFiles Value="..\..\..\..\headers;..\..\..\..\headers\android;$(ProjOutDir);..\..\..\..\src;..\..\..\..\srcGL;..\..\..\..\srcGEGL"/>
+      <IncludeFiles Value="..\..\..\..\headers;..\..\..\..\headers\android;$(ProjOutDir);..\..\..\..\src;..\..\..\..\srcGEGL;..\..\..\..\srcGL"/>
       <Libraries Value="..\libs\armeabi;..\..\..\..\bin\Android\armv6;C:\codetyphon\binLibraries\android-4.0-api14-arm"/>
-      <OtherUnitFiles Value="..\..\..\..\src;..\..\..\..\srcGEGL;..\..\..\..\srcGL;..\..\..\..\lib\zip\arm-linux;..\..\..\..\lib\zlib\arm-linux;..\..\..\..\extra"/>
+      <OtherUnitFiles Value="..\..\..\..\src;..\..\..\..\lib\zip\arm-linux;..\..\..\..\lib\zlib\arm-linux;..\..\..\..\extra;..\..\..\..\srcGL;..\..\..\..\srcGEGL"/>
       <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
     </SearchPaths>
     <CodeGeneration>
-      <RelocatableUnit Value="True"/>
-      <TargetProcessor Value="ARMV6"/>
+      <SmartLinkUnit Value="True"/>
       <TargetCPU Value="arm"/>
       <TargetOS Value="android"/>
+      <Optimizations>
+        <OptimizationLevel Value="2"/>
+      </Optimizations>
     </CodeGeneration>
     <Linking>
       <Debugging>
         <GenerateDebugInfo Value="False"/>
       </Debugging>
+      <LinkSmart Value="True"/>
       <Options>
         <ExecutableType Value="Library"/>
       </Options>
     </Linking>
     <Other>
       <CustomOptions Value="-al"/>
+      <ExecuteBefore>
+        <Command Value="sh prebuild.sh"/>
+      </ExecuteBefore>
     </Other>
   </CompilerOptions>
   <Debugging>

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini