[Scummvm-cvs-logs] CVS: scummvm/scumm script_v72he.cpp,2.154,2.155 script_v7he.cpp,2.100,2.101
Gregory Montoir
cyx at users.sourceforge.net
Tue Oct 5 15:29:12 CEST 2004
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30496/scumm
Modified Files:
script_v72he.cpp script_v7he.cpp
Log Message:
fix drawWizPolygon glitch
Index: script_v72he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v72he.cpp,v
retrieving revision 2.154
retrieving revision 2.155
diff -u -d -r2.154 -r2.155
--- script_v72he.cpp 5 Oct 2004 06:14:40 -0000 2.154
+++ script_v72he.cpp 5 Oct 2004 22:28:13 -0000 2.155
@@ -1680,12 +1680,11 @@
int32 x2;
int32 y2;
};
- Common::Point pts[4];
+ Common::Point pto;
InterArea *ia;
int areasNum;
PolygonDrawData(int n) {
- memset(pts, 0, sizeof(pts));
areasNum = n;
ia = new InterArea[areasNum];
memset(ia, 0, sizeof(InterArea) * areasNum);
@@ -1704,7 +1703,7 @@
int32 x3_step = ((p4->x - p3->x) << 0x10) / dy;
int32 y3_step = ((p4->y - p3->y) << 0x10) / dy;
- int iaidx = p1->y - pts[0].y;
+ int iaidx = p1->y - pto.y;
while (dy--) {
assert(iaidx >= 0 && iaidx < areasNum);
InterArea *pia = &ia[iaidx];
@@ -1799,21 +1798,15 @@
ymax_b = wizH - 1;
PolygonDrawData pdd(ymax_p - ymin_p + 1);
- pdd.pts[0].x = xmin_p;
- pdd.pts[0].y = ymin_p;
- pdd.pts[1].x = xmax_p;
- pdd.pts[1].y = ymax_p;
- pdd.pts[2].x = xmin_b;
- pdd.pts[2].y = ymin_b;
- pdd.pts[3].x = xmax_b;
- pdd.pts[3].y = ymax_b;
+ pdd.pto.x = xmin_p;
+ pdd.pto.y = ymin_p;
for (i = 0; i < 3; ++i) {
pdd.calcIntersection(&wp->vert[i], &wp->vert[i + 1], &bbox[i], &bbox[i + 1]);
}
pdd.calcIntersection(&wp->vert[3], &wp->vert[0], &bbox[3], &bbox[0]);
-
- uint yoff = pdd.pts[0].y * pvs->w;
+
+ uint yoff = pdd.pto.y * pvs->w;
for (i = 0; i < pdd.areasNum; ++i) {
PolygonDrawData::InterArea *pia = &pdd.ia[i];
uint16 dx = pia->xmax - pia->xmin + 1;
@@ -1829,7 +1822,7 @@
y_acc += y_step;
*dstPtr++ = srcWizBuf[srcWizOff];
}
- yoff += pvs->w;
+ yoff += pvs->pitch;
}
if (flags & 0x10) {
Index: script_v7he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v7he.cpp,v
retrieving revision 2.100
retrieving revision 2.101
diff -u -d -r2.100 -r2.101
--- script_v7he.cpp 28 Sep 2004 19:28:58 -0000 2.100
+++ script_v7he.cpp 5 Oct 2004 22:28:13 -0000 2.101
@@ -942,41 +942,41 @@
void ScummEngine::polygonStore(int id, bool flag, int vert1x, int vert1y, int vert2x,
int vert2y, int vert3x, int vert3y, int vert4x, int vert4y) {
- int i;
-
- for (i = 0; i < _wizNumPolygons; i++)
- if (_wizPolygons[i].id == 0)
+ WizPolygon *wp = NULL;
+ for (int i = 0; i < _wizNumPolygons; ++i) {
+ if (_wizPolygons[i].id == 0) {
+ wp = &_wizPolygons[i];
break;
-
- if (i == _wizNumPolygons) {
+ }
+ }
+ if (!wp) {
error("ScummEngine::polygonStore: out of polygon slot, max = %d",
_wizNumPolygons);
}
- _wizPolygons[i].vert[0].x = vert1x;
- _wizPolygons[i].vert[0].y = vert1y;
- _wizPolygons[i].vert[1].x = vert2x;
- _wizPolygons[i].vert[1].y = vert2y;
- _wizPolygons[i].vert[2].x = vert3x;
- _wizPolygons[i].vert[2].y = vert3y;
- _wizPolygons[i].vert[3].x = vert4x;
- _wizPolygons[i].vert[3].y = vert4y;
- _wizPolygons[i].vert[4].x = vert1x;
- _wizPolygons[i].vert[4].y = vert1y;
- _wizPolygons[i].id = id;
- _wizPolygons[i].numVerts = 5;
- _wizPolygons[i].flag = flag;
+ wp->vert[0].x = vert1x;
+ wp->vert[0].y = vert1y;
+ wp->vert[1].x = vert2x;
+ wp->vert[1].y = vert2y;
+ wp->vert[2].x = vert3x;
+ wp->vert[2].y = vert3y;
+ wp->vert[3].x = vert4x;
+ wp->vert[3].y = vert4y;
+ wp->vert[4].x = vert1x;
+ wp->vert[4].y = vert1y;
+ wp->id = id;
+ wp->numVerts = 5;
+ wp->flag = flag;
- _wizPolygons[i].bound.left = 10000;
- _wizPolygons[i].bound.top = 10000;
- _wizPolygons[i].bound.right = -10000;
- _wizPolygons[i].bound.bottom = -10000;
+ wp->bound.left = 10000;
+ wp->bound.top = 10000;
+ wp->bound.right = -10000;
+ wp->bound.bottom = -10000;
+ // compute bounding box
for (int j = 0; j < 5; j++) {
- _wizPolygons[i].bound.left = MIN(_wizPolygons[i].bound.left, _wizPolygons[i].vert[j].x);
- _wizPolygons[i].bound.top = MIN(_wizPolygons[i].bound.top, _wizPolygons[i].vert[j].y);
- _wizPolygons[i].bound.right = MAX(_wizPolygons[i].bound.right, _wizPolygons[i].vert[j].x);
- _wizPolygons[i].bound.bottom = MAX(_wizPolygons[i].bound.bottom, _wizPolygons[i].vert[j].y);
+ Common::Rect r(wp->vert[j].x, wp->vert[j].y, wp->vert[j].x + 1, wp->vert[j].y + 1);
+ wp->bound.extend(r);
}
}
More information about the Scummvm-git-logs
mailing list