bugGnash - The GNU Flash player - Bugs: bug #23098, bogus collision detection for...


bug #23098: bogus collision detection for scaled strokes

Submitter:  Sandro Santilli <strk>
Submitted:  Tue 29 Apr 2008 10:59:59 AM UTC
Category:  core Severity:  3 - Normal
Release:  None Status:  Confirmed
Privacy:  Public Assigned to:  None
Open/Closed:  Open
* Mandatory Fields

Add a New Comment Rich Markup

Thu 11 Sep 2008 01:56:51 PM UTC, comment #5: 

Sorry, I mean if the boundary box check is engaged, a single
straight line segment would not even be checked for distance
so the problem is still there.

Sandro Santilli <strk>
Group Member
Thu 11 Sep 2008 01:55:43 PM UTC, comment #4: 

Lately I did put the boundary-box check back in.
Dropping it broke a corner case in DrawingApiTest, kind
of a fill leakage for a self-intersecting filled shape.

After all this bug only exposes when movies use
a single straight line with non-scaled thickness.
Ok, could happen for things like potlatch, but the
use of float likely fixes it...

Sandro Santilli <strk>
Group Member
Tue 12 Aug 2008 06:31:53 PM UTC, comment #3: 

ehm, not really related to int/float.
The last one was instead related to use of the bounding box
for a shortcut. We can't use the bounding box when there
are nonscaled strokes to consider.
For now I dropped the shortcut. Will be slower generally but
more correct. For an improvement, we should maintain a flag
telling us whether nonscaled strokes are there at all.

Note that nonscaled strokes also influence boundaries
for invalidated bounds. If you modify latest testcase so
that it reduces in size, you'll find invalidated bounds

Sandro Santilli <strk>
Group Member
Tue 12 Aug 2008 05:11:44 PM UTC, comment #2: 

attached another testcase showing a similar problem with both xscale and yscale having same value.
This time, I belive it's a regression introduced by the int-based point2d class ...

(file #16288)

Sandro Santilli <strk>
Group Member
Tue 29 Apr 2008 02:14:59 PM UTC, comment #1: 

I have to add that the bug is only exposed if horizontal
scaling is different from vertical scaling.
The proprietary player also behave in a weird way when this
happens, in that it doesn't seem to consider the caps,
but still gets the horizontal bound correctly.

Sandro Santilli <strk>
Group Member
Tue 29 Apr 2008 10:59:59 AM UTC, original submission:  

The attached swf contains a simple red line with a stroke
of 10, horizontally scaled by x20 (_xscale=2000).
The gnash collision detection routine has an idea of it
which doesn't include round caps and goes beyond the actually
rendered shape both on the right and on the left.

Sandro Santilli <strk>
Group Member


(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:

Attached Files
file #16288:  nonscaledstrokes2.swf added by strk (229B - application/x-shockwave-flash)
file #15548:  scaledstrokecollision.swf added by strk (242B - application/x-shockwave-flash)


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -email is unavailable- added by strk
  • -email is unavailable- added by strk (Submitted the item)
  • -email is unavailable- added by strk

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.


    Follow 5 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2008-09-11 strk StatusNone Confirmed
    2008-08-12 strk Attached File- Added nonscaledstrokes2.swf, #16288
        Carbon-Copy- Added zoulunkai
    2008-04-29 strk Attached File- Added scaledstrokecollision.swf, #15548
        Carbon-Copy- Added udog

    Back to the top

    Powered by Savane 3.13-ee12.
    Corresponding source code