mirror of https://github.com/odrling/Aegisub
Ensure Rasterizer::mWideBorder is initialized such that memory allocation in Rasterizer::Rasterize() doesn't go crazy. Also fix brainfart causing \xbord0\ybord<nonzero> to draw no border.
Originally committed to SVN as r2282.
This commit is contained in:
parent
4e456b1abb
commit
582dd39cbd
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue