From 582dd39cbdcee6b55f5645a480599a17058a8985 Mon Sep 17 00:00:00 2001 From: Niels Martin Hansen Date: Wed, 23 Jul 2008 21:33:03 +0000 Subject: [PATCH] Ensure Rasterizer::mWideBorder is initialized such that memory allocation in Rasterizer::Rasterize() doesn't go crazy. Also fix brainfart causing \xbord0\ybord to draw no border. Originally committed to SVN as r2282. --- vsfilter/subtitles/Rasterizer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/vsfilter/subtitles/Rasterizer.cpp b/vsfilter/subtitles/Rasterizer.cpp index 6acac65c1..cc5270e71 100644 --- a/vsfilter/subtitles/Rasterizer.cpp +++ b/vsfilter/subtitles/Rasterizer.cpp @@ -344,6 +344,7 @@ bool Rasterizer::ScanConvert() mOutline.clear(); mWideOutline.clear(); + mWideBorder = 0; // Determine bounding box @@ -649,7 +650,9 @@ bool Rasterizer::CreateWidenedRegion(int rx, int ry) if(rx < 0) rx = 0; if(ry < 0) ry = 0; - if (ry > 0 && rx > 0) + mWideBorder = max(rx,ry); + + if (ry > 0) { // Do a half circle. // _OverlapRegion mirrors this so both halves are done. @@ -657,8 +660,7 @@ bool Rasterizer::CreateWidenedRegion(int rx, int ry) { int x = (int)(0.5 + sqrt(float(ry*ry - y*y)) * float(rx)/float(ry)); - // If x=0 nothing will be drawn for this overlap, not sure why - _OverlapRegion(mWideOutline, mOutline, max(x,1), y); + _OverlapRegion(mWideOutline, mOutline, x, y); } } else if (ry == 0 && rx > 0) @@ -668,8 +670,6 @@ bool Rasterizer::CreateWidenedRegion(int rx, int ry) _OverlapRegion(mWideOutline, mOutline, rx, 0); } - mWideBorder = max(rx,ry); - return true; }