Browse Source

Update gegl_draw_gui.pas

Seenkao 3 years ago
parent
commit
78e74da836
1 changed files with 82 additions and 72 deletions
  1. 82 72
      Zengl_SRC/srcGEGL/gegl_draw_gui.pas

+ 82 - 72
Zengl_SRC/srcGEGL/gegl_draw_gui.pas

@@ -33,7 +33,7 @@ uses
   zgl_textures;
   zgl_textures;
 
 
 var
 var
-  fontUse: Byte;
+  fontUse: LongWord;
   JoyArrow: zglPTexture;
   JoyArrow: zglPTexture;
 
 
   MenuRed: array[0..2] of Single    = ($AF / 255, $7F / 255, $7F / 255);
   MenuRed: array[0..2] of Single    = ($AF / 255, $7F / 255, $7F / 255);
@@ -48,7 +48,7 @@ var
   MenuColorText: Cardinal = $000000B0;
   MenuColorText: Cardinal = $000000B0;
 
 
 procedure DrawCircle(x, y, R: Single);
 procedure DrawCircle(x, y, R: Single);
-procedure DrawButton(x, y, w, h: Single; nColor: Byte);
+procedure DrawButton(x, y, w, h: Single; nColor: LongWord);
 procedure DrawGameJoy01;
 procedure DrawGameJoy01;
 procedure DrawGameJoy02;
 procedure DrawGameJoy02;
 procedure DrawTouchKeyboard;
 procedure DrawTouchKeyboard;
@@ -64,31 +64,44 @@ uses
   zgl_sprite_2d,
   zgl_sprite_2d,
   zgl_keyboard,
   zgl_keyboard,
   zgl_fx,
   zgl_fx,
+  zgl_gltypeconst,
   {$IFNDEF USE_GLES}
   {$IFNDEF USE_GLES}
-  zgl_opengl_all,
-  zgl_gltypeconst
+  zgl_opengl_all
   {$ELSE}
   {$ELSE}
   zgl_opengles_all
   zgl_opengles_all
   {$ENDIF}
   {$ENDIF}
   ;
   ;
 
 
+var
+  rs0:   Single = 0;
+  rs05:  Single = 0.5;
+  rs1:   Single = 1;
+  rs1_5: Single = 1.5;
+  rs2:   Single = 2;
+  rs3:   Single = 3;
+  rs5:   Single = 5;
+  rs10:  Single = 10;
+  rs16:  Single = 16;
+  rs90:  Single = 90;
+  rs270: Single = 270;
+
 procedure DrawCircle(x, y, R: Single);
 procedure DrawCircle(x, y, R: Single);
 var
 var
-  dx, dy: single;
-  n: byte;
+  dx, dy, dx_05, dy_05: single;
+  n: LongWord;
 begin
 begin
-  dx := 0;
+  dx := rs0;
   dy := R;
   dy := R;
   n := 0;
   n := 0;
   while dy >= 0 do
   while dy >= 0 do
   begin
   begin
     if (n and 1) > 0 then
     if (n and 1) > 0 then
     begin
     begin
-      dy := dy - 1;
+      dy := dy - rs1;
       dx := sqrt(sqr(R) - sqr(dy));
       dx := sqrt(sqr(R) - sqr(dy));
     end
     end
     else begin
     else begin
-      dx := dx + 1;
+      dx := dx + rs1;
       dy := sqrt(sqr(R) - sqr(dx));
       dy := sqrt(sqr(R) - sqr(dx));
       if dy < dx then
       if dy < dx then
       begin
       begin
@@ -96,24 +109,28 @@ begin
         dy := round(dy);
         dy := round(dy);
       end;
       end;
     end;
     end;
+    dx_05 := dx - rs05;
+    dy_05 := dy - rs05;
     glBegin(GL_LINES);
     glBegin(GL_LINES);
-      glVertex3f(x + dx - 0.5, y + dy - 0.5, 0);
-      glVertex3f(x - (dx - 0.5), y + dy - 0.5, 0);
-      glVertex3f(x + dx - 0.5, y - (dy - 0.5), 0);
-      glVertex3f(x - (dx - 0.5), y - (dy - 0.5), 0);
+      glVertex3f(x + dx_05, y + dy_05, rs0);
+      glVertex3f(x - (dx_05), y + dy_05, rs0);
+      glVertex3f(x + dx_05, y - (dy_05), rs0);
+      glVertex3f(x - (dx_05), y - (dy_05), rs0);
     glEnd;
     glEnd;
   end;
   end;
 end;
 end;
 
 
-procedure DrawButton(x, y, w, h: Single; nColor: Byte);
+procedure DrawButton(x, y, w, h: Single; nColor: LongWord);
 var
 var
   Box: array[0..3, 0..2] of Single;
   Box: array[0..3, 0..2] of Single;
+  rrs0: Single;
 begin
 begin
   glEnable(GL_BLEND);
   glEnable(GL_BLEND);
-  Box[0, 2] := 0;
-  Box[1, 2] := 0;
-  Box[2, 2] := 0;
-  Box[3, 2] := 0;
+  rrs0 := rs0;
+  Box[0, 2] := rrs0;
+  Box[1, 2] := rrs0;
+  Box[2, 2] := rrs0;
+  Box[3, 2] := rrs0;
   Box[0, 0] := x + w;
   Box[0, 0] := x + w;
   Box[0, 1] := y;
   Box[0, 1] := y;
   Box[1, 0] := x + w;
   Box[1, 0] := x + w;
@@ -122,19 +139,19 @@ begin
   Box[2, 1] := y;
   Box[2, 1] := y;
   Box[3, 0] := x;
   Box[3, 0] := x;
   Box[3, 1] := y + h;
   Box[3, 1] := y + h;
-  glColor4f(MenuRed[nColor], MenuGreen[nColor], MenuBlue[nColor], MenuAlpha[nColor]);
+  {$IfDef USE_GLES}_glColor4f{$Else}glColor4f{$EndIf}(MenuRed[nColor], MenuGreen[nColor], MenuBlue[nColor], MenuAlpha[nColor]);
   glVertexPointer(3, GL_FLOAT, 0, @Box);
   glVertexPointer(3, GL_FLOAT, 0, @Box);
   glEnableClientState(GL_VERTEX_ARRAY);
   glEnableClientState(GL_VERTEX_ARRAY);
   glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
   glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-  Box[0, 0] := x + 1.5;
-  Box[0, 1] := y + 1.5;
-  Box[1, 0] := x + w - 1.5;
-  Box[1, 1] := y + 1.5;
-  Box[2, 0] := x + w - 1.5;
-  Box[2, 1] := y + h - 1.5;
-  Box[3, 0] := x + 1.5;
-  Box[3, 1] := y + h - 1.5;
-  glColor4f(MenuRed[1], MenuGreen[1], MenuBlue[1], MenuAlpha[1]);
+  Box[0, 0] := x + rs1_5;
+  Box[0, 1] := y + rs1_5;
+  Box[1, 0] := x + w - rs1_5;
+  Box[1, 1] := y + rs1_5;
+  Box[2, 0] := x + w - rs1_5;
+  Box[2, 1] := y + h - rs1_5;
+  Box[3, 0] := x + rs1_5;
+  Box[3, 1] := y + h - rs1_5;
+  {$IfDef USE_GLES}_glColor4f{$Else}glColor4f{$EndIf}(MenuRed[1], MenuGreen[1], MenuBlue[1], MenuAlpha[1]);
   glDrawArrays(GL_LINE_LOOP, 0, 4);
   glDrawArrays(GL_LINE_LOOP, 0, 4);
   glDisableClientState(GL_VERTEX_ARRAY);
   glDisableClientState(GL_VERTEX_ARRAY);
   glDisable(GL_BLEND);
   glDisable(GL_BLEND);
@@ -145,31 +162,29 @@ var
   r: zglTRect2D;
   r: zglTRect2D;
   i: Integer;
   i: Integer;
 begin
 begin
-//  setTextScale(22, fontUse);
-  setTextColor(MenuColorText);
-  glColor4f(CircleRed[0], CircleGreen[0], CircleBlue[0], CircleAlpha[0]);
+  {$IfDef USE_GLES}_glColor4f{$Else}glColor4f{$EndIf}(CircleRed[0], CircleGreen[0], CircleBlue[0], CircleAlpha[0]);
   DrawCircle(TouchJoyRolling.Rolling.X, TouchJoyRolling.Rolling.Y, TouchJoyRolling.Rolling.R);
   DrawCircle(TouchJoyRolling.Rolling.X, TouchJoyRolling.Rolling.Y, TouchJoyRolling.Rolling.R);
 
 
   if (TouchJoyRolling.Rolling.bPush and 1) > 0 then                             
   if (TouchJoyRolling.Rolling.bPush and 1) > 0 then                             
   begin
   begin
-    glColor4f(CircleRed[1], CircleGreen[1], CircleBlue[1], CircleAlpha[1]);
-    DrawCircle(TouchJoyRolling.Rolling._x, TouchJoyRolling.Rolling._y, 5);
+    {$IfDef USE_GLES}_glColor4f{$Else}glColor4f{$EndIf}(CircleRed[1], CircleGreen[1], CircleBlue[1], CircleAlpha[1]);
+    DrawCircle(TouchJoyRolling.Rolling._x, TouchJoyRolling.Rolling._y, rs5);
   end;
   end;
 
 
-  glColor4f(CircleRed[2], CircleGreen[2], CircleBlue[2], CircleAlpha[2]);      
-  DrawCircle(TouchJoyRolling.Rolling.X, TouchJoyRolling.Rolling.Y, 10);
+  {$IfDef USE_GLES}_glColor4f{$Else}glColor4f{$EndIf}(CircleRed[2], CircleGreen[2], CircleBlue[2], CircleAlpha[2]);
+  DrawCircle(TouchJoyRolling.Rolling.X, TouchJoyRolling.Rolling.Y, rs10);
 
 
   r.W := TouchJoyRolling.Width;
   r.W := TouchJoyRolling.Width;
   r.H := TouchJoyRolling.Height;
   r.H := TouchJoyRolling.Height;
   for i := 1 to TouchJoyRolling.count do
   for i := 1 to TouchJoyRolling.count do
   Begin
   Begin
     r.X := TouchJoyRolling.OneButton[i].X;
     r.X := TouchJoyRolling.OneButton[i].X;
-    r.Y := TouchJoyRolling.OneButton[i].Y + 3;
+    r.Y := TouchJoyRolling.OneButton[i].Y + rs3;
 
 
     if ((TouchJoyRolling.OneButton[i].bPush and 1) > 0) then
     if ((TouchJoyRolling.OneButton[i].bPush and 1) > 0) then
     begin
     begin
       setFontTextScale(21, fontUse);
       setFontTextScale(21, fontUse);
-      DrawButton(TouchJoyRolling.OneButton[i].X + 1, TouchJoyRolling.OneButton[i].Y + 1, TouchJoyRolling.Width - 2, TouchJoyRolling.Height - 2, 2);
+      DrawButton(TouchJoyRolling.OneButton[i].X + rs1, TouchJoyRolling.OneButton[i].Y + rs1, TouchJoyRolling.Width - rs2, TouchJoyRolling.Height - rs2, 2);
       text_DrawInRect(fontUse, r, TouchJoyRolling.OneButton[i].symb, TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       text_DrawInRect(fontUse, r, TouchJoyRolling.OneButton[i].symb, TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       setFontTextScale(22, fontUse);
       setFontTextScale(22, fontUse);
     end
     end
@@ -185,8 +200,6 @@ var
   i: Integer;
   i: Integer;
   r: zglTRect2D;
   r: zglTRect2D;
 begin
 begin
-//  setTextScale(22, fontUse);
-  setTextColor(MenuColorText);
   for i := 1 to 9 do
   for i := 1 to 9 do
   begin
   begin
     if i <> 5 then
     if i <> 5 then
@@ -201,11 +214,11 @@ begin
   for i := 1 to TouchJoy.count do
   for i := 1 to TouchJoy.count do
   Begin
   Begin
     r.X := TouchJoy.OneButton[i].X;
     r.X := TouchJoy.OneButton[i].X;
-    r.Y := TouchJoy.OneButton[i].Y + 3;
+    r.Y := TouchJoy.OneButton[i].Y + rs3;
     if (TouchJoy.OneButton[i].bPush and 1) > 0 then
     if (TouchJoy.OneButton[i].bPush and 1) > 0 then
     begin
     begin
       setFontTextScale(21, fontUse);
       setFontTextScale(21, fontUse);
-      DrawButton(TouchJoy.OneButton[i].X + 1, TouchJoy.OneButton[i].Y + 1, TouchJoy.Width - 2, TouchJoy.Height - 2, 2);
+      DrawButton(TouchJoy.OneButton[i].X + rs1, TouchJoy.OneButton[i].Y + rs1, TouchJoy.Width - rs2, TouchJoy.Height - rs2, 2);
       text_DrawInRect(fontUse, r, TouchJoy.OneButton[i].symb,  TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       text_DrawInRect(fontUse, r, TouchJoy.OneButton[i].symb,  TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       setFontTextScale(22, fontUse);
       setFontTextScale(22, fontUse);
     end
     end
@@ -218,14 +231,14 @@ end;
 
 
 procedure DrawTouchKeyboard;
 procedure DrawTouchKeyboard;
 var
 var
-  n: Byte;
+  n: LongWord;
   i: Integer;
   i: Integer;
   r: zglTRect2D;
   r: zglTRect2D;
+  oldTextScaleEx: Single;
 begin
 begin
-//  setTextScale(TouchKey.textScale, fontUse);
-//  Off_TextScale := True;
-//  useScaleEx := TouchKey.textScale * managerFont.Font[fontUse].ScaleNorm;
-  setTextColor(MenuColorText);
+  oldTextScaleEx := getTextScaleEx();
+  setTextFontScaleEx(TouchKey.textScale / rs10, fontUse);
+  setScallingOff(True);                 // отключаем шкалу
   if (keybFlags and keyboardLatinRus) > 0 then
   if (keybFlags and keyboardLatinRus) > 0 then
     if ((keybFlags and keyboardCaps) > 0) or ((keybFlags and keyboardShift) > 0) then
     if ((keybFlags and keyboardCaps) > 0) or ((keybFlags and keyboardShift) > 0) then
       n := 3
       n := 3
@@ -241,12 +254,12 @@ begin
   for i := 1 to TouchKey.count do
   for i := 1 to TouchKey.count do
   Begin
   Begin
     r.X := TouchKey.OneButton[i].X;
     r.X := TouchKey.OneButton[i].X;
-    r.Y := TouchKey.OneButton[i].Y + 2;
+    r.Y := TouchKey.OneButton[i].Y + rs2;
     if keysDown[TouchKey.OneButton[i]._key] then
     if keysDown[TouchKey.OneButton[i]._key] then
     begin
     begin
       r.X := r.X + 1;
       r.X := r.X + 1;
       r.Y := r.Y + 1;
       r.Y := r.Y + 1;
-      DrawButton(TouchKey.OneButton[i].X + 1, TouchKey.OneButton[i].Y + 1, TouchKey.OWidth, TouchKey.Height, 2);
+      DrawButton(TouchKey.OneButton[i].X + rs1, TouchKey.OneButton[i].Y + rs1, TouchKey.OWidth, TouchKey.Height, 2);
       text_DrawInRect(fontUse, r, Unicode_toUTF8( TouchKey.OneButton[i].symb[n]), TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       text_DrawInRect(fontUse, r, Unicode_toUTF8( TouchKey.OneButton[i].symb[n]), TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       Continue;                 
       Continue;                 
     end;
     end;
@@ -261,15 +274,15 @@ begin
     if (i = _Latin) and ((keybFlags and keyboardLatinRus) = 0) then
     if (i = _Latin) and ((keybFlags and keyboardLatinRus) = 0) then
       Continue;
       Continue;
     r.X := TouchKey.StringButton[i].X;
     r.X := TouchKey.StringButton[i].X;
-    r.Y := TouchKey.StringButton[i].Y + 2;
+    r.Y := TouchKey.StringButton[i].Y + rs2;
     r.W := TouchKey.StringButton[i].Width;
     r.W := TouchKey.StringButton[i].Width;
     if (keysDown[TouchKey.StringButton[i]._key]) or (((keybFlags and keyboardCaps) > 0) and (i = _CapsLock)) or
     if (keysDown[TouchKey.StringButton[i]._key]) or (((keybFlags and keyboardCaps) > 0) and (i = _CapsLock)) or
           (((keybFlags and keyboardInsert) > 0) and (i = _Insert)) or ((i = _Shift) and
           (((keybFlags and keyboardInsert) > 0) and (i = _Insert)) or ((i = _Shift) and
           ((keybFlags and keyboardShift) > 0)) then
           ((keybFlags and keyboardShift) > 0)) then
     begin
     begin
-      r.X := r.X + 1;
-      r.Y := r.Y + 1;
-      DrawButton(TouchKey.StringButton[i].X + 1, TouchKey.StringButton[i].Y + 1, TouchKey.StringButton[i].Width, TouchKey.Height, 2);
+      r.X := r.X + rs1;
+      r.Y := r.Y + rs1;
+      DrawButton(TouchKey.StringButton[i].X + rs1, TouchKey.StringButton[i].Y + rs1, TouchKey.StringButton[i].Width, TouchKey.Height, 2);
       text_DrawInRect(fontUse, r, TouchKey.StringButton[i].bString, TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       text_DrawInRect(fontUse, r, TouchKey.StringButton[i].bString, TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       Continue;                
       Continue;                
     end;
     end;
@@ -277,19 +290,16 @@ begin
     DrawButton(TouchKey.StringButton[i].X, TouchKey.StringButton[i].Y, TouchKey.StringButton[i].Width, TouchKey.Height, 0);
     DrawButton(TouchKey.StringButton[i].X, TouchKey.StringButton[i].Y, TouchKey.StringButton[i].Width, TouchKey.Height, 0);
     text_DrawInRect(fontUse, r, TouchKey.StringButton[i].bString, TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
     text_DrawInRect(fontUse, r, TouchKey.StringButton[i].bString, TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
   end;
   end;
-//  Off_TextScale := False;
+  setScallingOff(False);
+  setTextScaleEx(oldTextScaleEx);
 end;
 end;
 
 
 procedure DrawTouchSymbol;
 procedure DrawTouchSymbol;
 var
 var
-  n: Byte;
+  n: LongWord;
   i: Integer;
   i: Integer;
   r: zglTRect2D;
   r: zglTRect2D;
 begin
 begin
-//  setTextScale(TouchKeySymb.textScale, fontUse);
-//  Off_TextScale := True;
-//  useScaleEx := TouchKey.textScale * managerFont.Font[fontUse].ScaleNorm;
-  setTextColor(MenuColorText);
   if (keybFlags and keyboardShift) > 0 then
   if (keybFlags and keyboardShift) > 0 then
     n := 2
     n := 2
   else
   else
@@ -299,13 +309,13 @@ begin
   for i := 1 to TouchKeySymb.count do
   for i := 1 to TouchKeySymb.count do
   Begin
   Begin
     r.X := TouchKeySymb.OneDoubleButton[i].X;
     r.X := TouchKeySymb.OneDoubleButton[i].X;
-    r.Y := TouchKeySymb.OneDoubleButton[i].Y + 2;
+    r.Y := TouchKeySymb.OneDoubleButton[i].Y + rs2;
 
 
     if keysDown[TouchKeySymb.OneDoubleButton[i]._key] then
     if keysDown[TouchKeySymb.OneDoubleButton[i]._key] then
     begin
     begin
-      r.X := r.X + 1;
-      r.Y := r.Y + 1;
-      DrawButton(TouchKeySymb.OneDoubleButton[i].X + 1, TouchKeySymb.OneDoubleButton[i].Y + 1, TouchKeySymb.OWidth, TouchKeySymb.Height, 2);
+      r.X := r.X + rs1;
+      r.Y := r.Y + rs1;
+      DrawButton(TouchKeySymb.OneDoubleButton[i].X + rs1, TouchKeySymb.OneDoubleButton[i].Y + rs1, TouchKeySymb.OWidth, TouchKeySymb.Height, 2);
       text_DrawInRect(fontUse, r, TouchKeySymb.OneDoubleButton[i].symb[n], TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       text_DrawInRect(fontUse, r, TouchKeySymb.OneDoubleButton[i].symb[n], TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       Continue;                 
       Continue;                 
     end;
     end;
@@ -316,7 +326,7 @@ begin
   for i := 36 to 44 do
   for i := 36 to 44 do
   Begin
   Begin
     r.X := TouchKeySymb.StringButton[i].X;
     r.X := TouchKeySymb.StringButton[i].X;
-    r.Y := TouchKeySymb.StringButton[i].Y + 2;
+    r.Y := TouchKeySymb.StringButton[i].Y + rs2;
     r.W := TouchKeySymb.StringButton[i].Width;
     r.W := TouchKeySymb.StringButton[i].Width;
     if (i = _home) or (i = _end) then
     if (i = _home) or (i = _end) then
       setFontTextScale(Round(TouchKeySymb.textScale / 2), fontUse);
       setFontTextScale(Round(TouchKeySymb.textScale / 2), fontUse);
@@ -326,7 +336,7 @@ begin
     begin
     begin
       r.X := r.X + 1;
       r.X := r.X + 1;
       r.Y := r.Y + 1;
       r.Y := r.Y + 1;
-      DrawButton(TouchKeySymb.StringButton[i].X + 1, TouchKeySymb.StringButton[i].Y + 1, TouchKeySymb.StringButton[i].Width, TouchKeySymb.Height, 2);
+      DrawButton(TouchKeySymb.StringButton[i].X + rs1, TouchKeySymb.StringButton[i].Y + rs1, TouchKeySymb.StringButton[i].Width, TouchKeySymb.Height, 2);
       text_DrawInRect(fontUse, r, TouchKeySymb.StringButton[i].bString, TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
       text_DrawInRect(fontUse, r, TouchKeySymb.StringButton[i].bString, TEXT_HALIGN_CENTER or TEXT_VALIGN_CENTER);
     end
     end
     else begin
     else begin
@@ -339,24 +349,24 @@ begin
   for i := 24 to 27 do
   for i := 24 to 27 do
   begin
   begin
     fx2d_SetColor(0);
     fx2d_SetColor(0);
-    if (TouchKeySymb.BArrow[i].Angle = 90) or (TouchKeySymb.BArrow[i].Angle = 270) then
+    if (TouchKeySymb.BArrow[i].Angle = rs90) or (TouchKeySymb.BArrow[i].Angle = rs270) then
     begin
     begin
-      r.W := 16;
-      r.H := 0;
+      r.W := rs16;
+      r.H := rs0;
     end
     end
     else begin
     else begin
-      r.W := 0;
-      r.H := 16;
+      r.W := rs0;
+      r.H := rs16;
     end;
     end;
     if keysDown[TouchKeySymb.BArrow[i]._key] then
     if keysDown[TouchKeySymb.BArrow[i]._key] then
     begin
     begin
-      DrawButton(TouchKeySymb.BArrow[i].X + 1, TouchKeySymb.BArrow[i].Y + 1, TouchKeySymb.OWidth, TouchKeySymb.Height, 2);
-      asprite2d_Draw(JoyArrow, TouchKeySymb.BArrow[i].X + 1 + r.W / 2, TouchKeySymb.BArrow[i].Y + 1 + r.H / 2, TouchKeySymb.OWidth - 1 - r.W, TouchKeySymb.Height - 1 - r.H,
+      DrawButton(TouchKeySymb.BArrow[i].X + rs1, TouchKeySymb.BArrow[i].Y + rs1, TouchKeySymb.OWidth, TouchKeySymb.Height, 2);
+      asprite2d_Draw(JoyArrow, TouchKeySymb.BArrow[i].X + rs1 + r.W / rs2, TouchKeySymb.BArrow[i].Y + rs1 + r.H / rs2, TouchKeySymb.OWidth - rs1 - r.W, TouchKeySymb.Height - rs1 - r.H,
             TouchKeySymb.BArrow[i].Angle, TouchKeySymb.TextureDown, 192, FX_COLOR or FX_BLEND);
             TouchKeySymb.BArrow[i].Angle, TouchKeySymb.TextureDown, 192, FX_COLOR or FX_BLEND);
     end
     end
     else begin
     else begin
       DrawButton(TouchKeySymb.BArrow[i].X, TouchKeySymb.BArrow[i].Y, TouchKeySymb.OWidth, TouchKeySymb.Height, 0);
       DrawButton(TouchKeySymb.BArrow[i].X, TouchKeySymb.BArrow[i].Y, TouchKeySymb.OWidth, TouchKeySymb.Height, 0);
-      asprite2d_Draw(JoyArrow, TouchKeySymb.BArrow[i].X + r.W / 2, TouchKeySymb.BArrow[i].Y + r.H / 2, TouchKeySymb.OWidth - r.W, TouchKeySymb.Height - r.H,
+      asprite2d_Draw(JoyArrow, TouchKeySymb.BArrow[i].X + r.W / rs2, TouchKeySymb.BArrow[i].Y + r.H / rs2, TouchKeySymb.OWidth - r.W, TouchKeySymb.Height - r.H,
             TouchKeySymb.BArrow[i].Angle, TouchKeySymb.TextureUp, 192, FX_COLOR or FX_BLEND);
             TouchKeySymb.BArrow[i].Angle, TouchKeySymb.TextureUp, 192, FX_COLOR or FX_BLEND);
     end;
     end;
   end;
   end;