gegl_utils.pas 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. {
  2. * Copyright (c) 2021 SSW
  3. *
  4. * This software is provided 'as-is', without any express or
  5. * implied warranty. In no event will the authors be held
  6. * liable for any damages arising from the use of this software.
  7. *
  8. * Permission is granted to anyone to use this software for any purpose,
  9. * including commercial applications, and to alter it and redistribute
  10. * it freely, subject to the following restrictions:
  11. *
  12. * 1. The origin of this software must not be misrepresented;
  13. * you must not claim that you wrote the original software.
  14. * If you use this software in a product, an acknowledgment
  15. * in the product documentation would be appreciated but
  16. * is not required.
  17. *
  18. * 2. Altered source versions must be plainly marked as such,
  19. * and must not be misrepresented as being the original software.
  20. *
  21. * 3. This notice may not be removed or altered from any
  22. * source distribution.
  23. }
  24. unit gegl_utils;
  25. {$I zgl_config.cfg}
  26. interface
  27. var
  28. // Rus: глобальная строка, для любого использования. Удобно для использования
  29. // для загрузки разных ресурсов.
  30. // Eng: global string, for any use. Convenient to use to load different
  31. // resources.
  32. LoadText: UTF8String;
  33. // Rus: флаг, показывающий, занята глобальная строка или нет. Вы должны его
  34. // включать если загрузили ресурс и отключать, когда больше этот ресурс
  35. // не нужен. И желательно освобождать строку полностью.
  36. // Eng: a flag indicating whether the global string is occupied or not. You
  37. // must enable it when you have loaded a resource and disable it when
  38. // the resource is no longer needed. And it is desirable to release the
  39. // line completely.
  40. fLoadTextClearing: Boolean = True;
  41. // Rus: переводим клавиатурные коды в русскую символику. Для других языков, надо
  42. // свою функцию делать. И знать клавиатурную раскладку.
  43. // Eng: we translate keyboard codes into Russian symbols. For other languages,
  44. // you need to do your own function. It is imperative to know the keyboard
  45. // layout for this language.
  46. procedure EngToRus(var symb: LongWord);
  47. // Rus: то же самое что и EngToRus, но только переводим в Unicode.
  48. // Eng: the same as EngToRus, but only translated into Unicode.
  49. procedure EngToRusUnicode(var symb: LongWord);
  50. // Rus: установка значения флага для глобальной загружаемой строки. Указываем
  51. // что строка занята или свободна. Если освобождаем, то строка очистится.
  52. // Eng: setting the flag value for the global load string. Indicate that the
  53. // line is busy or free. If we release, the line will be cleared.
  54. procedure set_FlagForLoadText(flag: Boolean); {$IfDef USE_INLINE}inline;{$EndIf}
  55. // Rus: возвращаем значение флага для глобальной строки. Занята строка или
  56. // свободна?
  57. // Eng: return the value of the flag for the global string. Is the line busy or
  58. // free?
  59. function get_FlagForLoadText: Boolean; {$IfDef USE_INLINE}inline;{$EndIf}
  60. implementation
  61. procedure EngToRus(var symb: LongWord);
  62. begin
  63. case symb of
  64. 102 : symb := 224; // а
  65. 44 : symb := 225; // б
  66. 68 : symb := 194; // в
  67. 85 : symb := 195; // г
  68. 76 : symb := 196; // д
  69. 84 : symb := 197; // е
  70. 96 : symb := 184; // ё
  71. 59 : symb := 230; // ж
  72. 80 : symb := 199; // з
  73. 66 : symb := 200; // и
  74. 81 : symb := 201; // й
  75. 82 : symb := 202; // к
  76. 75 : symb := 203; // л
  77. 86 : symb := 204; // м
  78. 89 : symb := 205; // н
  79. 74 : symb := 206; // о
  80. 71 : symb := 207; // п
  81. 72 : symb := 208; // р
  82. 67 : symb := 209; // с
  83. 78 : symb := 210; // т
  84. 69 : symb := 211; // у
  85. 65 : symb := 212; // ф
  86. 91 : symb := 245; // х
  87. 87 : symb := 214; // ц
  88. 88 : symb := 215; // ч
  89. 73 : symb := 216; // ш
  90. 79 : symb := 217; // щ
  91. 93 : symb := 250; // ъ
  92. 83 : symb := 219; // ы
  93. 77 : symb := 220; // ь
  94. 39 : symb := 253; // э
  95. 46 : symb := 254; // ю
  96. 90 : symb := 223; // я
  97. 70 : symb := 192; // А
  98. 60 : symb := 193; // Б
  99. 100 : symb := 226; // В
  100. 117 : symb := 227; // Г
  101. 108 : symb := 228; // Д
  102. 116 : symb := 229; // Е
  103. 126 : symb := 168; // Ё
  104. 58 : symb := 198; // Ж
  105. 112 : symb := 231; // З
  106. 98 : symb := 232; // И
  107. 113 : symb := 233; // Й
  108. 114 : symb := 234; // К
  109. 107 : symb := 235; // Л
  110. 118 : symb := 236; // М
  111. 121 : symb := 237; // Н
  112. 106 : symb := 238; // О
  113. 103 : symb := 239; // П
  114. 104 : symb := 240; // Р
  115. 99 : symb := 241; // С
  116. 110 : symb := 242; // Т
  117. 101 : symb := 243; // У
  118. 97 : symb := 244; // Ф
  119. 123 : symb := 213; // Х
  120. 119 : symb := 246; // Ц
  121. 120 : symb := 247; // Ч
  122. 105 : symb := 248; // Ш
  123. 111 : symb := 249; // Щ
  124. 125 : symb := 218; // Ъ
  125. 115 : symb := 251; // Ы
  126. 109 : symb := 252; // Ь
  127. 34 : symb := 221; // Э
  128. 62 : symb := 222; // Ю
  129. 122 : symb := 255; // Я
  130. 35: symb := 185; // №
  131. end;
  132. end;
  133. procedure EngToRusUnicode(var symb: LongWord);
  134. begin
  135. case symb of
  136. 102 : symb := 1072; // а !!
  137. 44 : symb := 1073; // б !!
  138. 100 : symb := 1074; // в !!
  139. 117 : symb := 1075; // г !!
  140. 108 : symb := 1076; // д !!
  141. 116 : symb := 1077; // е !!
  142. 96 : symb := 1105; // ё !!
  143. 59 : symb := 1078; // ж !!
  144. 112 : symb := 1079; // з !!
  145. 98 : symb := 1080; // и !!
  146. 113 : symb := 1081; // й !!
  147. 114 : symb := 1082; // к !!
  148. 107 : symb := 1083; // л !!
  149. 118 : symb := 1084; // м !!
  150. 121 : symb := 1085; // н !!
  151. 106 : symb := 1086; // о !!
  152. 103 : symb := 1087; // п !!
  153. 104 : symb := 1088; // р !!
  154. 99 : symb := 1089; // с !!
  155. 110 : symb := 1090; // т !!
  156. 101 : symb := 1091; // у !!
  157. 97 : symb := 1092; // ф !!
  158. 91 : symb := 1093; // х !!
  159. 119 : symb := 1094; // ц !!
  160. 120 : symb := 1095; // ч !!
  161. 105 : symb := 1096; // ш !!
  162. 111 : symb := 1097; // щ !!
  163. 93 : symb := 1098; // ъ !!
  164. 115 : symb := 1099; // ы !!
  165. 109 : symb := 1100; // ь !!
  166. 39 : symb := 1101; // э !!
  167. 46 : symb := 1102; // ю !!
  168. 122 : symb := 1103; // я
  169. 70 : symb := 1040; // А !!
  170. 60 : symb := 1041; // Б !!
  171. 68 : symb := 1042; // В !!
  172. 85 : symb := 1043; // Г !!
  173. 76 : symb := 1044; // Д !!
  174. 84 : symb := 1045; // Е !!
  175. 126 : symb := 1025; // Ё !!
  176. 58 : symb := 1046; // Ж !!
  177. 80 : symb := 1047; // З !!
  178. 66 : symb := 1048; // И !!
  179. 81 : symb := 1049; // Й !!
  180. 82 : symb := 1050; // К !!
  181. 75 : symb := 1051; // Л !!
  182. 86 : symb := 1052; // М !!
  183. 89 : symb := 1053; // Н !!
  184. 74 : symb := 1054; // О !!
  185. 71 : symb := 1055; // П !!
  186. 72 : symb := 1056; // Р !!
  187. 67 : symb := 1057; // С !!
  188. 78 : symb := 1058; // Т !!
  189. 69 : symb := 1059; // У !!
  190. 65 : symb := 1060; // Ф !!
  191. 123 : symb := 1061; // Х !!
  192. 87 : symb := 1062; // Ц !!
  193. 88 : symb := 1063; // Ч !!
  194. 73 : symb := 1064; // Ш !!
  195. 79 : symb := 1065; // Щ !!
  196. 125 : symb := 1066; // Ъ !!
  197. 83 : symb := 1067; // Ы !!
  198. 77 : symb := 1068; // Ь !!
  199. 34 : symb := 1069; // Э
  200. 62 : symb := 1070; // Ю
  201. 90 : symb := 1071; // Я
  202. 35 : symb := 8470; // №
  203. end;
  204. end;
  205. procedure set_FlagForLoadText(flag: Boolean);
  206. begin
  207. if flag = True then
  208. LoadText := '';
  209. fLoadTextClearing := flag;
  210. end;
  211. function get_FlagForLoadText: Boolean;
  212. begin
  213. Result := fLoadTextClearing;
  214. end;
  215. end.