[Scummvm-git-logs] scummvm master -> 24b7e04424f5ecc334210e1aeff724cb062d0857

mgerhardy noreply at scummvm.org
Mon Nov 29 15:27:00 UTC 2021


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
24b7e04424 TWINE: fixed polygon clipping issue


Commit: 24b7e04424f5ecc334210e1aeff724cb062d0857
    https://github.com/scummvm/scummvm/commit/24b7e04424f5ecc334210e1aeff724cb062d0857
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-11-29T16:26:47+01:00

Commit Message:
TWINE: fixed polygon clipping issue

https://bugs.scummvm.org/ticket/12020

Changed paths:
    engines/twine/renderer/renderer.cpp


diff --git a/engines/twine/renderer/renderer.cpp b/engines/twine/renderer/renderer.cpp
index 7389f1aea4..fa4c98c667 100644
--- a/engines/twine/renderer/renderer.cpp
+++ b/engines/twine/renderer/renderer.cpp
@@ -417,7 +417,7 @@ bool Renderer::computePolygons(int16 polyRenderType, const Vertex *vertices, int
 		if (vtop > vbottom) {
 			return false;
 		}
-		if (vright < clip.left - 1 || vleft > clip.right + 1 || vbottom < clip.top - 1 || vtop > clip.bottom + 1) {
+		if (vright <= clip.left || vleft >= clip.right || vbottom <= clip.top || vtop >= clip.bottom) {
 			debug(10, "Clipped %i:%i:%i:%i, clip rect(%i:%i:%i:%i)", vleft, vtop, vright, vbottom, clip.left, clip.top, clip.right, clip.bottom);
 			return false;
 		}
@@ -467,7 +467,7 @@ bool Renderer::computePolygons(int16 polyRenderType, const Vertex *vertices, int
 		float slope = (float)hsize / (float)vsize;
 		slope = up ? -slope : slope;
 
-		for (int16 i = 0; i < vsize + 2; i++) {
+		for (int16 i = 0; i <= vsize; i++) {
 			if (outPtr >= polyTabBegin && outPtr <= polyTabEnd) {
 				*outPtr = xpos;
 			}
@@ -478,7 +478,7 @@ bool Renderer::computePolygons(int16 polyRenderType, const Vertex *vertices, int
 		if (polyRenderType >= POLYGONTYPE_GOURAUD) { // we must compute the color progression
 			int16 *outPtr2 = &_colorProgressionBuffer[polyTabIndex];
 
-			for (int16 i = 0; i < vsize + 2; i++) {
+			for (int16 i = 0; i <= vsize; i++) {
 				if (outPtr2 >= colProgressBufStart && outPtr2 <= colProgressBufEnd) {
 					*outPtr2 = cvalue;
 				}




More information about the Scummvm-git-logs mailing list