Browse Source

fix rendering one pixel above the size of the alowed render rectangle was possible in some rendering function in Bild

Kolja Strohm 8 months ago
parent
commit
0a75615787
1 changed files with 25 additions and 25 deletions
  1. 25 25
      Bild.cpp

+ 25 - 25
Bild.cpp

@@ -412,7 +412,7 @@ bool Bild::isAreaDrawable(int x, int y, int b, int h)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + b < dpx || y + h < dpy || x > dgx || y > dgy) return 0;
+    if (x + b < dpx || y + h < dpy || x >= dgx || y >= dgy) return 0;
     return 1;
 }
 
@@ -506,7 +506,7 @@ void Bild::fillRegion(int x, int y, int b, int h, int ff)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + b < dpx || y + h < dpy || x > dgx || y > dgy) return;
+    if (x + b < dpx || y + h < dpy || x >= dgx || y >= dgy) return;
     if (x < dpx)
     {
         b -= dpx - x;
@@ -538,7 +538,7 @@ void Bild::alphaRegion(int x, int y, int b, int h, int ff)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + b < dpx || y + h < dpy || x > dgx || y > dgy) return;
+    if (x + b < dpx || y + h < dpy || x >= dgx || y >= dgy) return;
     if (x < dpx)
     {
         b -= dpx - x;
@@ -645,7 +645,7 @@ void Bild::alphaPixelDP2D(int x, int y, int f)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x < dpx || y < dpy || x > dgx || y > dgy) return;
+    if (x < dpx || y < dpy || x >= dgx || y >= dgy) return;
     if (alpha[alphaAnzahl])
     {
         unsigned char* cf = (unsigned char*)&f;
@@ -665,7 +665,7 @@ void Bild::alphaPixelDP3D(int x, int y, int f)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x < dpx || y < dpy || x > dgx || y > dgy) return;
+    if (x < dpx || y < dpy || x >= dgx || y >= dgy) return;
     if (alpha[alphaAnzahl])
     {
         unsigned char* cf = (unsigned char*)&f;
@@ -709,7 +709,7 @@ void Bild::setPixelDP(int x, int y, int f)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x < dpx || y < dpy || x > dgx || y > dgy) return;
+    if (x < dpx || y < dpy || x >= dgx || y >= dgy) return;
     fc[x + y * size.x] = f;
     rend = 1;
 }
@@ -1570,7 +1570,7 @@ void Bild::drawBild(
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + br < dpx || y + hi < dpy || x > dgx || y > dgy) return;
+    if (x + br < dpx || y + hi < dpy || x >= dgx || y >= dgy) return;
     br = minInt(br, zBild.getBreite());
     hi = minInt(hi, zBild.getHeight());
     int xst = maxInt(dpx - x, 0);
@@ -1601,7 +1601,7 @@ void Bild::alphaBildAssoz(int x, int y, int br, int hi, const Bild& zBild)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + br < dpx || y + hi < dpy || x > dgx || y > dgy) return;
+    if (x + br < dpx || y + hi < dpy || x >= dgx || y >= dgy) return;
     br = minInt(br, zBild.getBreite());
     hi = minInt(hi, zBild.getHeight());
     int xst = maxInt(dpx - x, 0);
@@ -1652,7 +1652,7 @@ void Bild::alphaBild(int x, int y, int br, int hi, const Bild& zBild)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + br < dpx || y + hi < dpy || x > dgx || y > dgy) return;
+    if (x + br < dpx || y + hi < dpy || x >= dgx || y >= dgy) return;
     br = minInt(br, zBild.getBreite());
     hi = minInt(hi, zBild.getHeight());
     int xst = maxInt(dpx - x, 0);
@@ -1748,7 +1748,7 @@ void Bild::drawBild90(int x,
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + hi < dpx || y + br < dpy || x > dgx || y > dgy) return;
+    if (x + hi < dpx || y + br < dpy || x >= dgx || y >= dgy) return;
     br = minInt(br, zBild.getHeight());
     hi = minInt(hi, zBild.getBreite());
     int xst = maxInt(dpx - x, 0);
@@ -1778,7 +1778,7 @@ void Bild::alphaBild90(int x, int y, int br, int hi, const Bild& zBild)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + hi < dpx || y + br < dpy || x > dgx || y > dgy) return;
+    if (x + hi < dpx || y + br < dpy || x >= dgx || y >= dgy) return;
     br = minInt(br, zBild.getHeight());
     hi = minInt(hi, zBild.getBreite());
     int xst = maxInt(dpx - x, 0);
@@ -1866,7 +1866,7 @@ void Bild::drawBild180(int x,
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + br < dpx || y + hi < dpy || x > dgx || y > dgy) return;
+    if (x + br < dpx || y + hi < dpy || x >= dgx || y >= dgy) return;
     br = minInt(br, zBild.getBreite());
     hi = minInt(hi, zBild.getHeight());
     int xst = maxInt(dpx - x, 0);
@@ -1897,7 +1897,7 @@ void Bild::alphaBild180(int x, int y, int br, int hi, const Bild& zBild)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + br < dpx || y + hi < dpy || x > dgx || y > dgy) return;
+    if (x + br < dpx || y + hi < dpy || x >= dgx || y >= dgy) return;
     br = minInt(br, zBild.getHeight());
     hi = minInt(hi, zBild.getBreite());
     int xst = maxInt(dpx - x, 0);
@@ -1991,7 +1991,7 @@ void Bild::drawBild270(int x,
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + hi < dpx || y + br < dpy || x > dgx || y > dgy) return;
+    if (x + hi < dpx || y + br < dpy || x >= dgx || y >= dgy) return;
     br = minInt(br, zBild.getHeight());
     hi = minInt(hi, zBild.getBreite());
     int xst = maxInt(dpx - x, 0);
@@ -2021,7 +2021,7 @@ void Bild::alphaBild270(int x, int y, int br, int hi, const Bild& zBild)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + hi < dpx || y + br < dpy || x > dgx || y > dgy) return;
+    if (x + hi < dpx || y + br < dpy || x >= dgx || y >= dgy) return;
     br = minInt(br, zBild.getHeight());
     hi = minInt(hi, zBild.getBreite());
     int xst = maxInt(dpx - x, 0);
@@ -2107,7 +2107,7 @@ void Bild::drawBildSkall(
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + br < dpx || y + hi < dpy || x > dgx || y > dgy) return;
+    if (x + br < dpx || y + hi < dpy || x >= dgx || y >= dgy) return;
     double xo = zBild.getBreite() / (double)br;
     double yo = zBild.getHeight() / (double)hi;
     int xst = maxInt(dpx - x, 0);
@@ -2139,7 +2139,7 @@ void Bild::alphaBildSkall(int x, int y, int br, int hi, const Bild& zBild)
     int dgy = dSizeA[doa].y;
     x += drawOff[doa].x;
     y += drawOff[doa].y;
-    if (x + br < dpx || y + hi < dpy || x > dgx || y > dgy) return;
+    if (x + br < dpx || y + hi < dpy || x >= dgx || y >= dgy) return;
     double xo = zBild.getBreite() / (double)br;
     double yo = zBild.getHeight() / (double)hi;
     int xst = maxInt(dpx - x, 0);
@@ -2205,8 +2205,8 @@ void Bild::drawDreieck(
     c += drawOff[doa];
     if ((a.x < dpx && b.x < dpx && c.x < dpx)
         || (a.y < dpy && b.y < dpy && c.y < dpy)
-        || (a.x > dgx && b.x > dgx && c.x > dgx)
-        || (a.y > dgy && b.y > dgy && c.y > dgy))
+        || (a.x >= dgx && b.x >= dgx && c.x >= dgx)
+        || (a.y >= dgy && b.y >= dgy && c.y >= dgy))
         return;
     if (b.y < a.y) a.Swap(b);
     if (c.y < b.y) b.Swap(c);
@@ -2275,8 +2275,8 @@ void Bild::drawDreieckTextur(Punkt a,
     c += drawOff[doa];
     if ((a.x < dpx && b.x < dpx && c.x < dpx)
         || (a.y < dpy && b.y < dpy && c.y < dpy)
-        || (a.x > dgx && b.x > dgx && c.x > dgx)
-        || (a.y > dgy && b.y > dgy && c.y > dgy))
+        || (a.x >= dgx && b.x >= dgx && c.x >= dgx)
+        || (a.y >= dgy && b.y >= dgy && c.y >= dgy))
         return;
     if (b.y < a.y)
     {
@@ -2476,8 +2476,8 @@ void Bild::drawDreieckAlpha(
     c += drawOff[doa];
     if ((a.x < dpx && b.x < dpx && c.x < dpx)
         || (a.y < dpy && b.y < dpy && c.y < dpy)
-        || (a.x > dgx && b.x > dgx && c.x > dgx)
-        || (a.y > dgy && b.y > dgy && c.y > dgy))
+        || (a.x >= dgx && b.x >= dgx && c.x >= dgx)
+        || (a.y >= dgy && b.y >= dgy && c.y >= dgy))
         return;
     if (alpha[alphaAnzahl])
     {
@@ -2547,8 +2547,8 @@ void Bild::drawDreieckTexturAlpha(Punkt a,
     c += drawOff[doa];
     if ((a.x < dpx && b.x < dpx && c.x < dpx)
         || (a.y < dpy && b.y < dpy && c.y < dpy)
-        || (a.x > dgx && b.x > dgx && c.x > dgx)
-        || (a.y > dgy && b.y > dgy && c.y > dgy))
+        || (a.x >= dgx && b.x >= dgx && c.x >= dgx)
+        || (a.y >= dgy && b.y >= dgy && c.y >= dgy))
         return;
     if (b.y < a.y)
     {