DEADSOFTWARE

add stub opengl wrapper and remove nanogl wrapper.
[d2df-sdl.git] / src / engine / e_graphics.pas
index c46e8ec4600bfd8729fc1f75e06740507aed10bb..6e8966eaf5628467df56d3dc145d29f22f05193b 100644 (file)
@@ -19,7 +19,11 @@ interface
 
 uses
   {$INCLUDE ../nogl/noGLuses.inc}
-  SysUtils, Classes, Math, e_log, e_texture, SDL2, MAPDEF, ImagingTypes, Imaging, ImagingUtility;
+  {$IFDEF USE_SDL2}
+    SDL2,
+  {$ENDIF}
+  SysUtils, Classes, Math, e_log, e_texture,
+  MAPDEF, ImagingTypes, Imaging, ImagingUtility;
 
 type
   TMirrorType=(None, Horizontal, Vertical);
@@ -128,8 +132,10 @@ procedure e_Clear(Mask: TGLbitfield; Red, Green, Blue: Single); overload;
 procedure e_Clear(); overload;
 procedure e_EndRender();
 
+{$IFDEF USE_SDL2}
 function e_GetGamma(win: PSDL_Window): Byte;
 procedure e_SetGamma(win: PSDL_Window;Gamma: Byte);
+{$ENDIF}
 
 procedure e_MakeScreenshot(st: TStream; Width, Height: Word);
 
@@ -853,9 +859,6 @@ end;
 procedure e_DrawQuad(X1, Y1, X2, Y2: Integer; Red, Green, Blue: Byte; Alpha: Byte = 0);
 var
   nX1, nY1, nX2, nY2: Integer;
-{$IFDEF USE_NANOGL}
-  v: array [0..15] of GLfloat;
-{$ENDIF}
 begin
   if e_NoGraphics then Exit;
   // Only top-left/bottom-right quad
@@ -876,40 +879,13 @@ begin
   begin
     glEnable(GL_BLEND);
     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-  end else
+  end
+  else
     glDisable(GL_BLEND);
 
   glDisable(GL_TEXTURE_2D);
   glColor4ub(Red, Green, Blue, 255-Alpha);
   glLineWidth(1);
-{$IFDEF USE_NANOGL}
-  nX1 := X1; nY1 := Y1;
-  nX2 := X2; nY2 := Y1;
-  e_LineCorrection(nX1, nY1, nX2, nY2);
-  v[0] := nX1; v[1] := nY1; v[2] := nX2; v[3] := nY2;
-
-  nX1 := X2; nY1 := Y1;
-  nX2 := X2; nY2 := Y2;
-  e_LineCorrection(nX1, nY1, nX2, nY2);
-  v[4] := nX1; v[5] := nY1; v[6] := nX2; v[7] := nY2;
-
-  nX1 := X2; nY1 := Y2;
-  nX2 := X1; nY2 := Y2;
-  e_LineCorrection(nX1, nY1, nX2, nY2);
-  v[8] := nX1; v[9] := nY1; v[10] := nX2; v[11] := nY2;
-
-  nX1 := X1; nY1 := Y2;
-  nX2 := X1; nY2 := Y1;
-  e_LineCorrection(nX1, nY1, nX2, nY2);
-  v[12] := nX1; v[13] := nY1; v[14] := nX2; v[15] := nY2;
-
-  glVertexPointer(2, GL_FLOAT, 0, @v[0]);
-  glEnableClientState(GL_VERTEX_ARRAY);
-  glDisableClientState(GL_COLOR_ARRAY);
-  glDisableClientState(GL_NORMAL_ARRAY);
-  glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-  glDrawArrays(GL_LINES, 0, 16);
-{$ELSE}
   glBegin(GL_LINES);
     nX1 := X1; nY1 := Y1;
     nX2 := X2; nY2 := Y1;
@@ -935,10 +911,7 @@ begin
     glVertex2i(nX1, nY1);
     glVertex2i(nX2, nY2);
   glEnd();
-{$ENDIF}
-
   glColor4ub(e_Colors.R, e_Colors.G, e_Colors.B, 255);
-
   glDisable(GL_BLEND);
 end;
 
@@ -1010,10 +983,6 @@ end;
 
 
 procedure e_DrawLine(Width: Byte; X1, Y1, X2, Y2: Integer; Red, Green, Blue: Byte; Alpha: Byte = 0);
-{$IFDEF USE_NANOGL}
-  var
-    v: array [0..3] of GLfloat;
-{$ENDIF}
 begin
   if e_NoGraphics then Exit;
   // Pixel-perfect lines
@@ -1030,22 +999,10 @@ begin
   glDisable(GL_TEXTURE_2D);
   glColor4ub(Red, Green, Blue, 255-Alpha);
   glLineWidth(Width);
-
-{$IFDEF USE_NANOGL}
-  v[0] := X1; v[1] := Y1; v[2] := X2; v[3] := Y2;
-  glVertexPointer(2, GL_FLOAT, 0, @v[0]);
-  glEnableClientState(GL_VERTEX_ARRAY);
-  glDisableClientState(GL_COLOR_ARRAY);
-  glDisableClientState(GL_NORMAL_ARRAY);
-  glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-  glDrawArrays(GL_LINES, 0, 4);
-{$ELSE}
   glBegin(GL_LINES);
     glVertex2i(X1, Y1);
     glVertex2i(X2, Y2);
   glEnd();
-{$ENDIF}
-
   glColor4ub(e_Colors.R, e_Colors.G, e_Colors.B, 255);
 
   glDisable(GL_BLEND);
@@ -1113,6 +1070,7 @@ begin
   glPopMatrix();
 end;
 
+{$IFDEF USE_SDL2}
 function e_GetGamma(win: PSDL_Window): Byte;
 var
   ramp: array [0..256*3-1] of Word;
@@ -1175,6 +1133,7 @@ begin
 
  SDL_SetWindowGammaRamp(win, @ramp[0], @ramp[256], @ramp[512]);
 end;
+{$ENDIF}
 
 function e_CharFont_Create(sp: ShortInt=0): DWORD;
 var
@@ -1496,8 +1455,10 @@ end;
 procedure e_TextureFontBuild(Tex: DWORD; var FontID: DWORD; XCount, YCount: Word;
                              Space: ShortInt=0);
 var
+{$IFDEF NOGL_LISTS}
   loop1 : GLuint;
   cx, cy : real;
+{$ENDIF}
   i, id: DWORD;
 begin
  if e_NoGraphics then Exit;
@@ -1521,7 +1482,7 @@ begin
 
  with e_TextureFonts[id] do
  begin
-{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}
+{$IFDEF NOGL_LISTS}
   Base := glGenLists(XCount*YCount);
 {$ENDIF}
   TextureID := e_Textures[Tex].tx.id;
@@ -1533,7 +1494,7 @@ begin
   SPC := Space;
  end;
 
-{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}
+{$IFDEF NOGL_LISTS}
  glBindTexture(GL_TEXTURE_2D, e_Textures[Tex].tx.id);
  for loop1 := 0 to XCount*YCount-1 do
  begin
@@ -1565,13 +1526,13 @@ end;
 procedure e_TextureFontKill(FontID: DWORD);
 begin
   if e_NoGraphics then Exit;
-{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}
+{$IFDEF NOGL_LISTS}
   glDeleteLists(e_TextureFonts[FontID].Base, 256);
 {$ENDIF}
   e_TextureFonts[FontID].Base := 0;
 end;
 
-{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
+{$IFNDEF NOGL_LISTS}
 procedure e_TextureFontDrawChar(ch: Char; FontID: DWORD);
   var
     index: Integer;
@@ -1625,11 +1586,11 @@ begin
   glBindTexture(GL_TEXTURE_2D, e_TextureFonts[FontID].TextureID);
   glEnable(GL_TEXTURE_2D);
   glTranslatef(x, y, 0);
-{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
-  e_TextureFontDrawString(Text, FontID);
-{$ELSE}
+{$IFDEF NOGL_LISTS}
   glListBase(DWORD(Integer(e_TextureFonts[FontID].Base)-32));
   glCallLists(Length(Text), GL_UNSIGNED_BYTE, PChar(Text));
+{$ELSE}
+  e_TextureFontDrawString(Text, FontID);
 {$ENDIF}
   glDisable(GL_TEXTURE_2D);
   glPopMatrix;
@@ -1647,10 +1608,10 @@ begin
   begin
    glColor4ub(0, 0, 0, 128);
    glTranslatef(X+1, Y+1, 0);
-{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
-   e_TextureFontDrawChar(Ch, FontID);
-{$ELSE}
+{$IFDEF NOGL_LISTS}
    glCallLists(1, GL_UNSIGNED_BYTE, @Ch);
+{$ELSE}
+   e_TextureFontDrawChar(Ch, FontID);
 {$ENDIF}
    glPopMatrix;
    glPushMatrix;
@@ -1658,10 +1619,10 @@ begin
 
   glColor4ub(e_Colors.R, e_Colors.G, e_Colors.B, 255);
   glTranslatef(X, Y, 0);
-{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
-  e_TextureFontDrawChar(Ch, FontID);
-{$ELSE}
+{$IFDEF NOGL_LISTS}
   glCallLists(1, GL_UNSIGNED_BYTE, @Ch);
+{$ELSE}
+  e_TextureFontDrawChar(Ch, FontID);
 {$ENDIF}
 
   glPopMatrix;
@@ -1713,7 +1674,7 @@ begin
     glBindTexture(GL_TEXTURE_2D, e_TextureFonts[FontID].TextureID);
     glEnable(GL_TEXTURE_2D);
 
-{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}
+{$IFDEF NOGL_LISTS}
     glListBase(DWORD(Integer(e_TextureFonts[FontID].Base)-32));
 {$ENDIF}
 
@@ -1796,7 +1757,7 @@ begin
   glBindTexture(GL_TEXTURE_2D, e_TextureFonts[FontID].TextureID);
   glEnable(GL_TEXTURE_2D);
 
-{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}
+{$IFDEF NOGL_LISTS}
   glListBase(DWORD(Integer(e_TextureFonts[FontID].Base)-32));
 {$ENDIF}
 
@@ -1808,10 +1769,10 @@ begin
    glColor4ub(0, 0, 0, 128);
    glTranslatef(x+1, y+1, 0);
    glScalef(Scale, Scale, 0);
-{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
-   e_TextureFontDrawString(Text, FontID);
-{$ELSE}
+{$IFDEF NOGL_LISTS}
    glCallLists(Length(Text), GL_UNSIGNED_BYTE, PChar(Text));
+{$ELSE}
+   e_TextureFontDrawString(Text, FontID);
 {$ENDIF}
    glPopMatrix;
    glPushMatrix;
@@ -1820,10 +1781,10 @@ begin
   glColor4ub(Red, Green, Blue, 255);
   glTranslatef(x, y, 0);
   glScalef(Scale, Scale, 0);
-{$IF DEFINED(USE_NANOGL) or DEFINED(USE_NOGL)}
-  e_TextureFontDrawString(Text, FontID);
-{$ELSE}
+{$IFDEF NOGL_LISTS}
   glCallLists(Length(Text), GL_UNSIGNED_BYTE, PChar(Text));
+{$ELSE}
+  e_TextureFontDrawString(Text, FontID);
 {$ENDIF}
 
   glDisable(GL_TEXTURE_2D);
@@ -1853,7 +1814,7 @@ begin
  for i := 0 to High(e_TextureFonts) do
   if e_TextureFonts[i].Base <> 0 then
   begin
-{$IF not DEFINED(USE_NANOGL) and not DEFINED(USE_NOGL)}  
+{$IFDEF NOGL_LISTS}
    glDeleteLists(e_TextureFonts[i].Base, 256);
 {$ENDIF}
    e_TextureFonts[i].Base := 0;