X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_holmes.inc;h=d1265d06adfb2526d85a776cc8029573a420ec6f;hb=2d8ce1896600825a1ba850354b66c4314ead3ede;hp=8df305c656df3385b9b738cd9be6f839fe93a1a0;hpb=81a68b9ff71207e598bed6f0d7c5fe8df5d7daae;p=d2df-sdl.git diff --git a/src/game/g_holmes.inc b/src/game/g_holmes.inc index 8df305c..d1265d0 100644 --- a/src/game/g_holmes.inc +++ b/src/game/g_holmes.inc @@ -419,8 +419,7 @@ var begin result := 0; if (Length(s) = 0) then exit; - if (a < 0) then a := 0; - if (a > 255) then a := 255; + if (a < 0) then a := 0 else if (a > 255) then a := 255; if (r < 0) then r := 0 else if (r > 255) then r := 255; if (g < 0) then g := 0 else if (g > 255) then g := 255; if (b < 0) then b := 0 else if (b > 255) then b := 255; @@ -462,6 +461,73 @@ begin end; +// ////////////////////////////////////////////////////////////////////////// // +procedure drawLine (x1, y1, x2, y2: Integer; r, g, b: Integer; a: Integer=255); + + procedure lcor (var x1, y1, x2, y2: Integer); + begin + if (y2 < y1) then + begin + x1 := x1 xor x2; + x2 := x1 xor x2; + x1 := x1 xor x2; + + y1 := y1 xor y2; + y2 := y1 xor y2; + y1 := y1 xor y2; + end; + + if (x1 < x2) then Inc(X2) else Inc(x1); + Inc(y2); + end; + +begin + lcor(x1, y1, x2, y2); + + if (a < 0) then a := 0 else if (a > 255) then a := 255; + if (r < 0) then r := 0 else if (r > 255) then r := 255; + if (g < 0) then g := 0 else if (g > 255) then g := 255; + if (b < 0) then b := 0 else if (b > 255) then b := 255; + + if (a < 255) then + begin + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + end + else + begin + glDisable(GL_BLEND); + end; + + glDisable(GL_TEXTURE_2D); + glColor4f(r/255.0, g/255.0, b/255.0, a/255.0); + + glLineWidth(1); + glPointSize(1); + + glBegin(GL_LINES); + glVertex2i(x1, y1); + glVertex2i(x2, y2); + glEnd(); + + glColor4f(1, 1, 1, 1); + glDisable(GL_BLEND); +end; + + +procedure drawRect (x, y, w, h: Integer; r, g, b: Integer; a: Integer=255); +begin + if (w < 0) or (h < 0) then exit; + if (w = 1) and (h = 1) then begin drawLine(x, y, x, y, r, g, b, a); exit; end; + Inc(w); + Inc(h); + drawLine(x, y, x+w-1, y, r, g, b, a); + drawLine(x+w-1, y+1, x+w-1, y+h-2, r, g, b, a); + drawLine(x+w-2, y+h-1, x, y+h-1, r, g, b, a); + drawLine(x, y+h-2, x, y+1, r, g, b, a); +end; + + // ////////////////////////////////////////////////////////////////////////// // procedure shadeRect (x, y, w, h: Integer; a: Integer); begin