aboutsummaryrefslogtreecommitdiff
path: root/engines/sword25/gfx/image/vectorimage.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2010-09-04 22:29:36 +0000
committerEugene Sandulenko2010-10-12 23:36:25 +0000
commite844de5141a03692e74c892a35e55f1c9697719a (patch)
tree9b5684c192752dbb8f0c53e743b437fc3daa2b69 /engines/sword25/gfx/image/vectorimage.cpp
parent5f8739209b2cb637348954fd428594658daf2df4 (diff)
downloadscummvm-rg350-e844de5141a03692e74c892a35e55f1c9697719a.tar.gz
scummvm-rg350-e844de5141a03692e74c892a35e55f1c9697719a.tar.bz2
scummvm-rg350-e844de5141a03692e74c892a35e55f1c9697719a.zip
SWORD25: Started rewriting vector renderer into proper one
Previous attempt was all wrong, as it completely incorrectly interpreted SWF shape data. svn-id: r53319
Diffstat (limited to 'engines/sword25/gfx/image/vectorimage.cpp')
-rw-r--r--engines/sword25/gfx/image/vectorimage.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/engines/sword25/gfx/image/vectorimage.cpp b/engines/sword25/gfx/image/vectorimage.cpp
index 4cb77692fe..6c79c3043a 100644
--- a/engines/sword25/gfx/image/vectorimage.cpp
+++ b/engines/sword25/gfx/image/vectorimage.cpp
@@ -194,7 +194,8 @@ Common::Rect CalculateBoundingBox(const VectorImageElement &vectorImageElement)
double x0, y0, x1, y1;
for (int j = vectorImageElement.getPathCount() - 1; j >= 0; j--) {
- ArtVpath *vec = vectorImageElement.getPathInfo(j).getVec();
+ ArtBpath *bez = vectorImageElement.getPathInfo(j).getVec();
+ ArtVpath *vec = art_bez_path_to_vec(bez, 0.5);
if (vec[0].code == ART_END) {
continue;
@@ -208,6 +209,7 @@ Common::Rect CalculateBoundingBox(const VectorImageElement &vectorImageElement)
if (vec[i].y > y1) y1 = vec[i].y;
}
}
+ art_free(vec);
}
return Common::Rect(static_cast<int>(x0), static_cast<int>(y0), static_cast<int>(x1) + 1, static_cast<int>(y1) + 1);
@@ -324,9 +326,12 @@ ArtBpath *VectorImage::storeBez(ArtBpath *bez, int lineStyle, int fillStyle0, in
bez = ensureBezStorage(bez, *bezNodes, bezAllocated);
bez[*bezNodes].code = ART_END;
- ArtVpath *vec = art_bez_path_to_vec(bez, BEZSMOOTHNESS);
+ ArtBpath *bez1 = art_new(ArtBpath, *bezNodes + 1);
- _elements.back()._pathInfos.push_back(VectorPathInfo(vec, lineStyle, fillStyle0, fillStyle1));
+ for (int i = 0; i <= *bezNodes; i++)
+ bez1[i] = bez[i];
+
+ _elements.back()._pathInfos.push_back(VectorPathInfo(bez1, *bezNodes, lineStyle, fillStyle0, fillStyle1));
return bez;
}