X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_holmes.inc;h=05576256800f8cbda29ca747148baf856279ae69;hb=981037c01006b8a8bea65b69a75ba9f7353b295d;hp=8df305c656df3385b9b738cd9be6f839fe93a1a0;hpb=81a68b9ff71207e598bed6f0d7c5fe8df5d7daae;p=d2df-sdl.git diff --git a/src/game/g_holmes.inc b/src/game/g_holmes.inc index 8df305c..0557625 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; @@ -463,22 +462,88 @@ end; // ////////////////////////////////////////////////////////////////////////// // -procedure shadeRect (x, y, w, h: Integer; a: Integer); +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 darkenRect (x, y, w, h: Integer; a: Integer); begin if (a < 0) then a := 0; if (a > 255) then a := 255; glEnable(GL_BLEND); - glBlendFunc(GL_DST_COLOR, GL_SRC_COLOR); - //glBlendFunc(GL_ONE, GL_DST_COLOR); - //glBlendEquation(GL_FUNC_SUBTRACT); + glBlendFunc(GL_ZERO, GL_SRC_ALPHA); glDisable(GL_TEXTURE_2D); - glColor4f(0.0, 0.0, a/255.0, 1.0); + glColor4f(0.0, 0.0, 0.0, a/255.0); glBegin(GL_QUADS); glVertex2i(x, y); glVertex2i(x+w, y); glVertex2i(x+w, y+h); glVertex2i(x, y+h); glEnd(); + //glRect(x, y, x+w, y+h); glColor4f(1, 1, 1, 1); glDisable(GL_BLEND); //glBlendEquation(GL_FUNC_ADD);