aboutsummaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorVicent Marti2008-07-25 00:59:53 +0000
committerVicent Marti2008-07-25 00:59:53 +0000
commit49b4df308ff7beb771531598c074535241e547ca (patch)
tree6440655dcbc9977ca99947430310351b24e1d159 /graphics
parent7c562788968060e7fe764b9946384fa88cdd4de4 (diff)
downloadscummvm-rg350-49b4df308ff7beb771531598c074535241e547ca.tar.gz
scummvm-rg350-49b4df308ff7beb771531598c074535241e547ca.tar.bz2
scummvm-rg350-49b4df308ff7beb771531598c074535241e547ca.zip
Fixed triangle drawing. A bit.
svn-id: r33268
Diffstat (limited to 'graphics')
-rw-r--r--graphics/VectorRenderer.cpp24
-rw-r--r--graphics/VectorRenderer.h1
2 files changed, 16 insertions, 9 deletions
diff --git a/graphics/VectorRenderer.cpp b/graphics/VectorRenderer.cpp
index 178f760751..6bbb84acaa 100644
--- a/graphics/VectorRenderer.cpp
+++ b/graphics/VectorRenderer.cpp
@@ -498,9 +498,9 @@ void VectorRendererSpec<PixelType, PixelFormat>::
drawTriangle(int x, int y, int w, int h, TriangleOrientation orient) {
// Awesome hack: the AA messes up the last pixel triangles if their width is even
// ...fix the width instead of fixing the AA :p
- if (w % 2 == 0) {
- w++; h++;
- }
+ // if (w % 2 == 0) {
+ // w++; h++;
+ // }
if (x + w > Base::_activeSurface->w || y + h > Base::_activeSurface->h)
return;
@@ -517,16 +517,22 @@ drawTriangle(int x, int y, int w, int h, TriangleOrientation orient) {
return;
color = _fgColor;
}
+
+ if (Base::_dynamicData != 0)
+ orient = (TriangleOrientation)Base::_dynamicData;
+
+ int newW = w * 3 / 4;
+ if (newW % 2) newW++;
switch(orient) {
case kTriangleUp:
case kTriangleDown:
-#ifdef VECTOR_RENDERER_FAST_TRIANGLES
- if (w == h)
- drawTriangleFast(x, y, w, (orient == kTriangleDown), color, Base::_fillMode);
- else
-#endif
- drawTriangleVertAlg(x, y, w, h, (orient == kTriangleDown), color, Base::_fillMode);
+// #ifdef VECTOR_RENDERER_FAST_TRIANGLES
+ // if (w == h)
+ drawTriangleFast(x + (w / 2) - w * 3 / 8, y + w / 4, newW, (orient == kTriangleDown), color, Base::_fillMode);
+ // else
+// #endif
+ // drawTriangleVertAlg(x, y, w, h, (orient == kTriangleDown), color, Base::_fillMode);
break;
case kTriangleLeft:
diff --git a/graphics/VectorRenderer.h b/graphics/VectorRenderer.h
index f659626bbf..88072da923 100644
--- a/graphics/VectorRenderer.h
+++ b/graphics/VectorRenderer.h
@@ -107,6 +107,7 @@ public:
};
enum TriangleOrientation {
+ kTriangleAuto = 0,
kTriangleUp,
kTriangleDown,
kTriangleLeft,