<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>30994</bug_id>
          
          <creation_ts>2009-11-01 06:34:25 -0800</creation_ts>
          <short_desc>Better Ellipses</short_desc>
          <delta_ts>2010-10-11 16:14:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>46052</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeff Schiller">jeffschiller</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>kling</cc>
    
    <cc>krit</cc>
    
    <cc>oliver</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>159629</commentid>
    <comment_count>0</comment_count>
      <attachid>42274</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-01 06:34:25 -0800</bug_when>
    <thetext>Created attachment 42274
Patch to use ellipse-drawing

I noticed that ellipses are actually drawn as 100-sided polygons instead of arc paths.

Surely this was done for a reason, so I was hoping to find out what that reason was.  Is it proven to be better performing across the various 2D graphics APIs that WebKit supports?  Perhaps to better support mobile devices the 100-sided polygon approach was chosen?

I&apos;m attaching a patch that uses path.addEllipse instead of the 100 addLineTo() commands.  I will also add a simple test case.  Compiling these changes into Safari I can actually tell the difference between Chrome rendering and WebKit-rendering on the test case.  In Chrome I can definitely see &quot;corners&quot; in the ellipse.

I also took the opportunity to add some &apos;const&apos; declarations into the WebCore/platform/graphics/Path.cpp in the vain hope that it might actually help compilers optimize things a little better.  I did not actually confirm whether the compiled assembly _is_ better, but at the very least I&apos;ve never heard of &apos;const&apos; hurting performance.  What&apos;s the culture here?  Do these types of things need to be separate patches?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159630</commentid>
    <comment_count>1</comment_count>
      <attachid>42275</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-01 06:35:55 -0800</bug_when>
    <thetext>Created attachment 42275
Test case exhibiting the problem

In current WebKit I can actually detect &quot;corner&quot;s in this ellipse arc.  The attached patch fixes that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159632</commentid>
    <comment_count>2</comment_count>
      <attachid>42277</attachid>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-01 06:39:21 -0800</bug_when>
    <thetext>Created attachment 42277
Updated patch, removed old code and commented out version.  Also updated to tip.

Please look at this patch and not the first one I submitted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159681</commentid>
    <comment_count>3</comment_count>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-01 15:14:50 -0800</bug_when>
    <thetext>Note that this was marked as SVG, but I believe this patch would also affect the HTML Canvas element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160585</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-11-04 13:25:47 -0800</bug_when>
    <thetext>I would realy prefer to let the platforms draw the ellipses/circles. They could do it faster but more important, the rendering gets better.
But I guess this will break hunderts of LayoutTests. Because atm we draw a couple of lines, and with your patch we draw just the ellipse.
I would prefer to change all LayoutTests and the way we create them for ellipses and circles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160848</commentid>
    <comment_count>5</comment_count>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2009-11-05 09:26:12 -0800</bug_when>
    <thetext>795.95s total testing time

11454 test cases (99%) succeeded
115 test cases (&lt;1%) had incorrect layout
17 test cases (&lt;1%) had stderr output

Dirk is right, many tests break with this patch.  Here&apos;s a fragment of one diff (svg/W3C-SVG-1.1/shapes-circle-01-t) after the patch has been applied:

-      RenderPath {circle} at (49.50,49.50) size 101.00x101.00 [stroke={[type=SOLID] [color=#000000]}] [data=&quot;M150.00,100.00 L149.90,103.14 L149.61,106.27 L149.11,109.37 L148.43,112.43 L147.55,115.45 L146.49,118.41 L145.24,121.29 L143.82,124.09 L142.22,126.79 L140.45,129.39 L138.53,131.87 L136.45,134.23 L134.23,136.45 L131.87,138.53 L129.39,140.45 L126.79,142.22 L124.09,143.82 L121.29,145.24 L118.41,146.49 L115.45,147.55 L112.43,148.43 L109.37,149.11 L106.27,149.61 L103.14,149.90 L100.00,150.00 L96.86,149.90 L93.73,149.61 L90.63,149.11 L87.57,148.43 L84.55,147.55 L81.59,146.49 L78.71,145.24 L75.91,143.82 L73.21,142.22 L70.61,140.45 L68.13,138.53 L65.77,136.45 L63.55,134.23 L61.47,131.87 L59.55,129.39 L57.78,126.79 L56.18,124.09 L54.76,121.29 L53.51,118.41 L52.45,115.45 L51.57,112.43 L50.89,109.37 L50.39,106.27 L50.10,103.14 L50.00,100.00 L50.10,96.86 L50.39,93.73 L50.89,90.63 L51.57,87.57 L52.45,84.55 L53.51,81.59 L54.76,78.71 L56.18,75.91 L57.78,73.21 L59.55,70.61 L61.47,68.13 L63.55,65.77 L65.77,63.55 L68.13,61.47 L70.61,59.55 L73.21,57.78 L75.91,56.18 L78.71,54.76 L81.59,53.51 L84.55,52.45 L87.57,51.57 L90.63,50.89 L93.73,50.39 L96.86,50.10 L100.00,50.00 L103.14,50.10 L106.27,50.39 L109.37,50.89 L112.43,51.57 L115.45,52.45 L118.41,53.51 L121.29,54.76 L124.09,56.18 L126.79,57.78 L129.39,59.55 L131.87,61.47 L134.23,63.55 L136.45,65.77 L138.53,68.13 L140.45,70.61 L142.22,73.21 L143.82,75.91 L145.24,78.71 L146.49,81.59 L147.55,84.55 L148.43,87.57 L149.11,90.63 L149.61,93.73 L149.90,96.86 Z&quot;]

+      RenderPath {circle} at (49.50,49.50) size 101x101 [stroke={[type=SOLID] [color=#000000]}] [data=&quot;M150.00,100.00 L150.00,100.00 C150.00,127.61,127.61,150.00,100.00,150.00 C72.39,150.00,50.00,127.61,50.00,100.00 C50.00,72.39,72.39,50.00,100.00,50.00 C127.61,50.00,150.00,72.39,150.00,100.00 C150.00,100.00,150.00,100.00,150.00,100.00 Z&quot;]

I&apos;m willing to do the work here, but I have several questions:

1) Do we agree this patch is a good idea (rendering-wise, speed-wise)?  Is it ok to do this for all platforms?

2) I realize now that one benefit (and maybe the reason?) of the 100-sided polygon approach is that the layout is consistent across all platforms and is therefore easier to test.  With my patch, we let the platforms decide what to do: in CG&apos;s case we see several bezier curves being used but we&apos;d see something different in cairo/qt/etc.  Do we need to make platform-specific expected files? 

3) Is it ok to just take the output of the patched WebKit and update the mac-specific results?  I&apos;m not clear on how to do that nor what the policy is.  Is it up to the individual platforms to add their &apos;expected&apos; files in this case and we just need to do the &apos;mac&apos; ones here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160871</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-11-05 10:35:57 -0800</bug_when>
    <thetext>On the one hand I find it useful to have this data from te platforms and compare this to each other, but on the other hand we don&apos;t have results of paths in Canvas. Can we do it without the platform path data, and just the RenderPath {circle} at (49.50,49.50) size 101x101 [stroke={[type=SOLID]
[color=#000000]}]?
What about simulate ellipses and circles with bezier curves in general? bezier curves should be supported by all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216397</commentid>
    <comment_count>7</comment_count>
      <attachid>42277</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-04-23 07:34:59 -0700</bug_when>
    <thetext>Comment on attachment 42277
Updated patch, removed old code and commented out version.  Also updated to tip.

I like the introduction of the halfWidth/halfHeight variables. The s/float/const float/ changes are unnecessary though, just makes the code harder to read.
The createEllipse changes are great though. As discussed in private, we need to change DRT dumping of shapes first, before landing this patch makes sense.
(Shouldn&apos;t affect any textual outputs, after we change shapes to not dump path data)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292739</commentid>
    <comment_count>8</comment_count>
    <who name="Jeff Schiller">jeffschiller</who>
    <bug_when>2010-10-11 16:08:15 -0700</bug_when>
    <thetext>Is this now a dupe of Bug 46052?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292744</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-10-11 16:14:03 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Is this now a dupe of Bug 46052?

That&apos;s correct! Thanks for the CC :)

*** This bug has been marked as a duplicate of bug 46052 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42274</attachid>
            <date>2009-11-01 06:34:25 -0800</date>
            <delta_ts>2009-11-01 06:39:21 -0800</delta_ts>
            <desc>Patch to use ellipse-drawing</desc>
            <filename>ellipses.patch.txt</filename>
            <type>text/plain</type>
            <size>5249</size>
            <attacher name="Jeff Schiller">jeffschiller</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAkocmV2aXNpb24gNTAzNDcpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEs
NDQgKzExMSw0NiBAQAogUGF0aCBQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdGFuZ2xlLCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFkaWkpCiB7CiAg
ICAgUGF0aCBwYXRoOwotICAgIGZsb2F0IHggPSByZWN0YW5nbGUueCgpOwotICAgIGZsb2F0IHkg
PSByZWN0YW5nbGUueSgpOwotICAgIGZsb2F0IHdpZHRoID0gcmVjdGFuZ2xlLndpZHRoKCk7Ci0g
ICAgZmxvYXQgaGVpZ2h0ID0gcmVjdGFuZ2xlLmhlaWdodCgpOwotICAgIGZsb2F0IHJ4ID0gcm91
bmRpbmdSYWRpaS53aWR0aCgpOwotICAgIGZsb2F0IHJ5ID0gcm91bmRpbmdSYWRpaS5oZWlnaHQo
KTsKKyAgICBjb25zdCBmbG9hdCB4ID0gcmVjdGFuZ2xlLngoKTsKKyAgICBjb25zdCBmbG9hdCB5
ID0gcmVjdGFuZ2xlLnkoKTsKKyAgICBjb25zdCBmbG9hdCB3aWR0aCA9IHJlY3RhbmdsZS53aWR0
aCgpOworICAgIGNvbnN0IGZsb2F0IGhlaWdodCA9IHJlY3RhbmdsZS5oZWlnaHQoKTsKKyAgICBj
b25zdCBmbG9hdCByeCA9IHJvdW5kaW5nUmFkaWkud2lkdGgoKTsKKyAgICBjb25zdCBmbG9hdCBy
eSA9IHJvdW5kaW5nUmFkaWkuaGVpZ2h0KCk7CisgICAgY29uc3QgZmxvYXQgaGFsZldpZHRoID0g
d2lkdGggKiAwLjVmOworICAgIGNvbnN0IGZsb2F0IGhhbGZIZWlnaHQgPSBoZWlnaHQgKiAwLjVm
OwogICAgIGlmICh3aWR0aCA8PSAwLjBmIHx8IGhlaWdodCA8PSAwLjBmKQogICAgICAgICByZXR1
cm4gcGF0aDsKIAogICAgIGZsb2F0IGR4ID0gcngsIGR5ID0gcnk7CiAgICAgLy8gSWYgcnggaXMg
Z3JlYXRlciB0aGFuIGhhbGYgb2YgdGhlIHdpZHRoIG9mIHRoZSByZWN0YW5nbGUKICAgICAvLyB0
aGVuIHNldCByeCB0byBoYWxmIG9mIHRoZSB3aWR0aCAocmVxdWlyZWQgaW4gU1ZHIHNwZWMpCi0g
ICAgaWYgKGR4ID4gd2lkdGggKiAwLjVmKQotICAgICAgICBkeCA9IHdpZHRoICogMC41ZjsKKyAg
ICBpZiAoZHggPiBoYWxmV2lkdGgpCisgICAgICAgIGR4ID0gaGFsZldpZHRoOwogCiAgICAgLy8g
SWYgcnkgaXMgZ3JlYXRlciB0aGFuIGhhbGYgb2YgdGhlIGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xl
CiAgICAgLy8gdGhlbiBzZXQgcnkgdG8gaGFsZiBvZiB0aGUgaGVpZ2h0IChyZXF1aXJlZCBpbiBT
Vkcgc3BlYykKLSAgICBpZiAoZHkgPiBoZWlnaHQgKiAwLjVmKQotICAgICAgICBkeSA9IGhlaWdo
dCAqIDAuNWY7CisgICAgaWYgKGR5ID4gaGFsZkhlaWdodCkKKyAgICAgICAgZHkgPSBoYWxmSGVp
Z2h0OwogCiAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludCh4ICsgZHgsIHkpKTsKIAotICAgIGlm
IChkeCA8IHdpZHRoICogMC41ZikKKyAgICBpZiAoZHggPCBoYWxmV2lkdGgpCiAgICAgICAgIHBh
dGguYWRkTGluZVRvKEZsb2F0UG9pbnQoeCArIHdpZHRoIC0gcngsIHkpKTsKIAogICAgIHBhdGgu
YWRkQmV6aWVyQ3VydmVUbyhGbG9hdFBvaW50KHggKyB3aWR0aCAtIGR4ICogKDEgLSBRVUFSVEVS
KSwgeSksIEZsb2F0UG9pbnQoeCArIHdpZHRoLCB5ICsgZHkgKiAoMSAtIFFVQVJURVIpKSwgRmxv
YXRQb2ludCh4ICsgd2lkdGgsIHkgKyBkeSkpOwogCi0gICAgaWYgKGR5IDwgaGVpZ2h0ICogMC41
KQorICAgIGlmIChkeSA8IGhhbGZIZWlnaHQpCiAgICAgICAgIHBhdGguYWRkTGluZVRvKEZsb2F0
UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0IC0gZHkpKTsKIAogICAgIHBhdGguYWRkQmV6aWVy
Q3VydmVUbyhGbG9hdFBvaW50KHggKyB3aWR0aCwgeSArIGhlaWdodCAtIGR5ICogKDEgLSBRVUFS
VEVSKSksIEZsb2F0UG9pbnQoeCArIHdpZHRoIC0gZHggKiAoMSAtIFFVQVJURVIpLCB5ICsgaGVp
Z2h0KSwgRmxvYXRQb2ludCh4ICsgd2lkdGggLSBkeCwgeSArIGhlaWdodCkpOwogCi0gICAgaWYg
KGR4IDwgd2lkdGggKiAwLjUpCisgICAgaWYgKGR4IDwgaGFsZldpZHRoKQogICAgICAgICBwYXRo
LmFkZExpbmVUbyhGbG9hdFBvaW50KHggKyBkeCwgeSArIGhlaWdodCkpOwogCiAgICAgcGF0aC5h
ZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQoeCArIGR4ICogKDEgLSBRVUFSVEVSKSwgeSArIGhl
aWdodCksIEZsb2F0UG9pbnQoeCwgeSArIGhlaWdodCAtIGR5ICogKDEgLSBRVUFSVEVSKSksIEZs
b2F0UG9pbnQoeCwgeSArIGhlaWdodCAtIGR5KSk7CiAKLSAgICBpZiAoZHkgPCBoZWlnaHQgKiAw
LjUpCisgICAgaWYgKGR5IDwgaGFsZkhlaWdodCkKICAgICAgICAgcGF0aC5hZGRMaW5lVG8oRmxv
YXRQb2ludCh4LCB5ICsgZHkpKTsKIAogICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhGbG9hdFBv
aW50KHgsIHkgKyBkeSAqICgxIC0gUVVBUlRFUikpLCBGbG9hdFBvaW50KHggKyBkeCAqICgxIC0g
UVVBUlRFUiksIHkpLCBGbG9hdFBvaW50KHggKyBkeCwgeSkpOwpAQCAtMTYyLDggKzE2NCw4IEBA
CiB7CiAgICAgUGF0aCBwYXRoOwogCi0gICAgZmxvYXQgd2lkdGggPSByZWN0YW5nbGUud2lkdGgo
KTsKLSAgICBmbG9hdCBoZWlnaHQgPSByZWN0YW5nbGUuaGVpZ2h0KCk7CisgICAgY29uc3QgZmxv
YXQgd2lkdGggPSByZWN0YW5nbGUud2lkdGgoKTsKKyAgICBjb25zdCBmbG9hdCBoZWlnaHQgPSBy
ZWN0YW5nbGUuaGVpZ2h0KCk7CiAgICAgaWYgKHdpZHRoIDw9IDAuMCB8fCBoZWlnaHQgPD0gMC4w
KQogICAgICAgICByZXR1cm4gcGF0aDsKIApAQCAtMTc0LDggKzE3Niw4IEBACiAgICAgICAgIC8v
IElmIGFsbCB0aGUgcmFkaWkgY2Fubm90IGJlIGFjY29tbW9kYXRlZCwgcmV0dXJuIGEgcmVjdC4K
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlY3RhbmdsZShyZWN0YW5nbGUpOwogCi0gICAgZmxvYXQg
eCA9IHJlY3RhbmdsZS54KCk7Ci0gICAgZmxvYXQgeSA9IHJlY3RhbmdsZS55KCk7CisgICAgY29u
c3QgZmxvYXQgeCA9IHJlY3RhbmdsZS54KCk7CisgICAgY29uc3QgZmxvYXQgeSA9IHJlY3Rhbmds
ZS55KCk7CiAKICAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KHggKyB0b3BMZWZ0UmFkaXVzLndp
ZHRoKCksIHkpKTsKIApAQCAtMjAzLDEwICsyMDUsMTAgQEAKIFBhdGggUGF0aDo6Y3JlYXRlUmVj
dGFuZ2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdGFuZ2xlKQogewogICAgIFBhdGggcGF0aDsKLSAg
ICBmbG9hdCB4ID0gcmVjdGFuZ2xlLngoKTsKLSAgICBmbG9hdCB5ID0gcmVjdGFuZ2xlLnkoKTsK
LSAgICBmbG9hdCB3aWR0aCA9IHJlY3RhbmdsZS53aWR0aCgpOwotICAgIGZsb2F0IGhlaWdodCA9
IHJlY3RhbmdsZS5oZWlnaHQoKTsKKyAgICBjb25zdCBmbG9hdCB4ID0gcmVjdGFuZ2xlLngoKTsK
KyAgICBjb25zdCBmbG9hdCB5ID0gcmVjdGFuZ2xlLnkoKTsKKyAgICBjb25zdCBmbG9hdCB3aWR0
aCA9IHJlY3RhbmdsZS53aWR0aCgpOworICAgIGNvbnN0IGZsb2F0IGhlaWdodCA9IHJlY3Rhbmds
ZS5oZWlnaHQoKTsKICAgICBpZiAod2lkdGggPD0gMC4wZiB8fCBoZWlnaHQgPD0gMC4wZikKICAg
ICAgICAgcmV0dXJuIHBhdGg7CiAgICAgCkBAIC0yMjEsMzggKzIyMywzNiBAQAogCiBQYXRoIFBh
dGg6OmNyZWF0ZUVsbGlwc2UoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBmbG9hdCByeCwgZmxv
YXQgcnkpCiB7Ci0gICAgZmxvYXQgY3ggPSBjZW50ZXIueCgpOwotICAgIGZsb2F0IGN5ID0gY2Vu
dGVyLnkoKTsKKy8vICAgIGNvbnN0IGZsb2F0IGN4ID0gY2VudGVyLngoKTsKKy8vICAgIGNvbnN0
IGZsb2F0IGN5ID0gY2VudGVyLnkoKTsKICAgICBQYXRoIHBhdGg7CiAgICAgaWYgKHJ4IDw9IDAu
MGYgfHwgcnkgPD0gMC4wZikKICAgICAgICAgcmV0dXJuIHBhdGg7CiAKLSAgICBmbG9hdCB4ID0g
Y3g7Ci0gICAgZmxvYXQgeSA9IGN5OworICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJlY3QoY2Vu
dGVyLngoKSAtIHJ4LCBjZW50ZXIueSgpIC0gcnksIHJ4KjIsIHJ5KjIpKTsKKy8vICAgIGZsb2F0
IHggPSBjeDsKKy8vICAgIGZsb2F0IHkgPSBjeTsKKy8vICAgIHBhdGgubW92ZVRvKEZsb2F0UG9p
bnQoY3grcngsIGN5KSk7CisvLworLy8gICAgdW5zaWduZWQgc3RlcCA9IDEsIG51bSA9IDEwMDsK
Ky8vICAgIGNvbnN0IGZsb2F0IGFuZ2xlX2RlbHRhID0gMS4wZiAvIHN0YXRpY19jYXN0PGZsb2F0
PihudW0pICogMi4wZiAqIHBpRmxvYXQ7CisvLyAgICBib29sIHJ1bm5pbmcgPSB0cnVlOworLy8g
ICAgd2hpbGUgKHJ1bm5pbmcpCisvLyAgICB7CisvLyAgICAgICAgaWYgKHN0ZXAgPT0gbnVtKQor
Ly8gICAgICAgIHsKKy8vICAgICAgICAgICAgYnJlYWs7CisvLyAgICAgICAgfQorLy8KKy8vICAg
ICAgICBmbG9hdCBhbmdsZSA9IHN0YXRpY19jYXN0PGZsb2F0PihzdGVwKSAqIGFuZ2xlX2RlbHRh
OworLy8gICAgICAgIHggPSBjeCArIGNvc2YoYW5nbGUpICogcng7CisvLyAgICAgICAgeSA9IGN5
ICsgc2luZihhbmdsZSkgKiByeTsKKy8vCisvLyAgICAgICAgc3RlcCsrOworLy8gICAgICAgIHBh
dGguYWRkTGluZVRvKEZsb2F0UG9pbnQoeCwgeSkpOworLy8gICAgfQorLy8gICAgcGF0aC5jbG9z
ZVN1YnBhdGgoKTsKIAotICAgIHVuc2lnbmVkIHN0ZXAgPSAwLCBudW0gPSAxMDA7Ci0gICAgYm9v
bCBydW5uaW5nID0gdHJ1ZTsKLSAgICB3aGlsZSAocnVubmluZykKLSAgICB7Ci0gICAgICAgIGlm
IChzdGVwID09IG51bSkKLSAgICAgICAgewotICAgICAgICAgICAgcnVubmluZyA9IGZhbHNlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdCBhbmdsZSA9IHN0
YXRpY19jYXN0PGZsb2F0PihzdGVwKSAvIHN0YXRpY19jYXN0PGZsb2F0PihudW0pICogMi4wZiAq
IHBpRmxvYXQ7Ci0gICAgICAgIHggPSBjeCArIGNvc2YoYW5nbGUpICogcng7Ci0gICAgICAgIHkg
PSBjeSArIHNpbmYoYW5nbGUpICogcnk7Ci0KLSAgICAgICAgc3RlcCsrOwotICAgICAgICBpZiAo
c3RlcCA9PSAxKQotICAgICAgICAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludCh4LCB5KSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQoeCwgeSkp
OwotICAgIH0KLQotICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7Ci0KICAgICByZXR1cm4gcGF0aDsK
IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>42275</attachid>
            <date>2009-11-01 06:35:55 -0800</date>
            <delta_ts>2009-11-01 06:35:55 -0800</delta_ts>
            <desc>Test case exhibiting the problem</desc>
            <filename>ell.svg</filename>
            <type>image/svg+xml</type>
            <size>132</size>
            <attacher name="Jeff Schiller">jeffschiller</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyI+CjxlbGxpcHNlIGN4PSIwJSIgY3k9IjIwMCUiIHJ4PSIyNTAlIiByeT0iMTk5JSIgZmls
bD0iYmx1ZSIgLz4KPC9zdmc+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42277</attachid>
            <date>2009-11-01 06:39:21 -0800</date>
            <delta_ts>2010-06-11 11:35:29 -0700</delta_ts>
            <desc>Updated patch, removed old code and commented out version.  Also updated to tip.</desc>
            <filename>ellipses.patch.txt</filename>
            <type>text/plain</type>
            <size>4583</size>
            <attacher name="Jeff Schiller">jeffschiller</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAkocmV2aXNpb24gNTAzODMpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEs
NDQgKzExMSw0NiBAQAogUGF0aCBQYXRoOjpjcmVhdGVSb3VuZGVkUmVjdGFuZ2xlKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdGFuZ2xlLCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFkaWkpCiB7CiAg
ICAgUGF0aCBwYXRoOwotICAgIGZsb2F0IHggPSByZWN0YW5nbGUueCgpOwotICAgIGZsb2F0IHkg
PSByZWN0YW5nbGUueSgpOwotICAgIGZsb2F0IHdpZHRoID0gcmVjdGFuZ2xlLndpZHRoKCk7Ci0g
ICAgZmxvYXQgaGVpZ2h0ID0gcmVjdGFuZ2xlLmhlaWdodCgpOwotICAgIGZsb2F0IHJ4ID0gcm91
bmRpbmdSYWRpaS53aWR0aCgpOwotICAgIGZsb2F0IHJ5ID0gcm91bmRpbmdSYWRpaS5oZWlnaHQo
KTsKKyAgICBjb25zdCBmbG9hdCB4ID0gcmVjdGFuZ2xlLngoKTsKKyAgICBjb25zdCBmbG9hdCB5
ID0gcmVjdGFuZ2xlLnkoKTsKKyAgICBjb25zdCBmbG9hdCB3aWR0aCA9IHJlY3RhbmdsZS53aWR0
aCgpOworICAgIGNvbnN0IGZsb2F0IGhlaWdodCA9IHJlY3RhbmdsZS5oZWlnaHQoKTsKKyAgICBj
b25zdCBmbG9hdCByeCA9IHJvdW5kaW5nUmFkaWkud2lkdGgoKTsKKyAgICBjb25zdCBmbG9hdCBy
eSA9IHJvdW5kaW5nUmFkaWkuaGVpZ2h0KCk7CisgICAgY29uc3QgZmxvYXQgaGFsZldpZHRoID0g
d2lkdGggKiAwLjVmOworICAgIGNvbnN0IGZsb2F0IGhhbGZIZWlnaHQgPSBoZWlnaHQgKiAwLjVm
OwogICAgIGlmICh3aWR0aCA8PSAwLjBmIHx8IGhlaWdodCA8PSAwLjBmKQogICAgICAgICByZXR1
cm4gcGF0aDsKIAogICAgIGZsb2F0IGR4ID0gcngsIGR5ID0gcnk7CiAgICAgLy8gSWYgcnggaXMg
Z3JlYXRlciB0aGFuIGhhbGYgb2YgdGhlIHdpZHRoIG9mIHRoZSByZWN0YW5nbGUKICAgICAvLyB0
aGVuIHNldCByeCB0byBoYWxmIG9mIHRoZSB3aWR0aCAocmVxdWlyZWQgaW4gU1ZHIHNwZWMpCi0g
ICAgaWYgKGR4ID4gd2lkdGggKiAwLjVmKQotICAgICAgICBkeCA9IHdpZHRoICogMC41ZjsKKyAg
ICBpZiAoZHggPiBoYWxmV2lkdGgpCisgICAgICAgIGR4ID0gaGFsZldpZHRoOwogCiAgICAgLy8g
SWYgcnkgaXMgZ3JlYXRlciB0aGFuIGhhbGYgb2YgdGhlIGhlaWdodCBvZiB0aGUgcmVjdGFuZ2xl
CiAgICAgLy8gdGhlbiBzZXQgcnkgdG8gaGFsZiBvZiB0aGUgaGVpZ2h0IChyZXF1aXJlZCBpbiBT
Vkcgc3BlYykKLSAgICBpZiAoZHkgPiBoZWlnaHQgKiAwLjVmKQotICAgICAgICBkeSA9IGhlaWdo
dCAqIDAuNWY7CisgICAgaWYgKGR5ID4gaGFsZkhlaWdodCkKKyAgICAgICAgZHkgPSBoYWxmSGVp
Z2h0OwogCiAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludCh4ICsgZHgsIHkpKTsKIAotICAgIGlm
IChkeCA8IHdpZHRoICogMC41ZikKKyAgICBpZiAoZHggPCBoYWxmV2lkdGgpCiAgICAgICAgIHBh
dGguYWRkTGluZVRvKEZsb2F0UG9pbnQoeCArIHdpZHRoIC0gcngsIHkpKTsKIAogICAgIHBhdGgu
YWRkQmV6aWVyQ3VydmVUbyhGbG9hdFBvaW50KHggKyB3aWR0aCAtIGR4ICogKDEgLSBRVUFSVEVS
KSwgeSksIEZsb2F0UG9pbnQoeCArIHdpZHRoLCB5ICsgZHkgKiAoMSAtIFFVQVJURVIpKSwgRmxv
YXRQb2ludCh4ICsgd2lkdGgsIHkgKyBkeSkpOwogCi0gICAgaWYgKGR5IDwgaGVpZ2h0ICogMC41
KQorICAgIGlmIChkeSA8IGhhbGZIZWlnaHQpCiAgICAgICAgIHBhdGguYWRkTGluZVRvKEZsb2F0
UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0IC0gZHkpKTsKIAogICAgIHBhdGguYWRkQmV6aWVy
Q3VydmVUbyhGbG9hdFBvaW50KHggKyB3aWR0aCwgeSArIGhlaWdodCAtIGR5ICogKDEgLSBRVUFS
VEVSKSksIEZsb2F0UG9pbnQoeCArIHdpZHRoIC0gZHggKiAoMSAtIFFVQVJURVIpLCB5ICsgaGVp
Z2h0KSwgRmxvYXRQb2ludCh4ICsgd2lkdGggLSBkeCwgeSArIGhlaWdodCkpOwogCi0gICAgaWYg
KGR4IDwgd2lkdGggKiAwLjUpCisgICAgaWYgKGR4IDwgaGFsZldpZHRoKQogICAgICAgICBwYXRo
LmFkZExpbmVUbyhGbG9hdFBvaW50KHggKyBkeCwgeSArIGhlaWdodCkpOwogCiAgICAgcGF0aC5h
ZGRCZXppZXJDdXJ2ZVRvKEZsb2F0UG9pbnQoeCArIGR4ICogKDEgLSBRVUFSVEVSKSwgeSArIGhl
aWdodCksIEZsb2F0UG9pbnQoeCwgeSArIGhlaWdodCAtIGR5ICogKDEgLSBRVUFSVEVSKSksIEZs
b2F0UG9pbnQoeCwgeSArIGhlaWdodCAtIGR5KSk7CiAKLSAgICBpZiAoZHkgPCBoZWlnaHQgKiAw
LjUpCisgICAgaWYgKGR5IDwgaGFsZkhlaWdodCkKICAgICAgICAgcGF0aC5hZGRMaW5lVG8oRmxv
YXRQb2ludCh4LCB5ICsgZHkpKTsKIAogICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhGbG9hdFBv
aW50KHgsIHkgKyBkeSAqICgxIC0gUVVBUlRFUikpLCBGbG9hdFBvaW50KHggKyBkeCAqICgxIC0g
UVVBUlRFUiksIHkpLCBGbG9hdFBvaW50KHggKyBkeCwgeSkpOwpAQCAtMTYyLDggKzE2NCw4IEBA
CiB7CiAgICAgUGF0aCBwYXRoOwogCi0gICAgZmxvYXQgd2lkdGggPSByZWN0YW5nbGUud2lkdGgo
KTsKLSAgICBmbG9hdCBoZWlnaHQgPSByZWN0YW5nbGUuaGVpZ2h0KCk7CisgICAgY29uc3QgZmxv
YXQgd2lkdGggPSByZWN0YW5nbGUud2lkdGgoKTsKKyAgICBjb25zdCBmbG9hdCBoZWlnaHQgPSBy
ZWN0YW5nbGUuaGVpZ2h0KCk7CiAgICAgaWYgKHdpZHRoIDw9IDAuMCB8fCBoZWlnaHQgPD0gMC4w
KQogICAgICAgICByZXR1cm4gcGF0aDsKIApAQCAtMTc0LDggKzE3Niw4IEBACiAgICAgICAgIC8v
IElmIGFsbCB0aGUgcmFkaWkgY2Fubm90IGJlIGFjY29tbW9kYXRlZCwgcmV0dXJuIGEgcmVjdC4K
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlY3RhbmdsZShyZWN0YW5nbGUpOwogCi0gICAgZmxvYXQg
eCA9IHJlY3RhbmdsZS54KCk7Ci0gICAgZmxvYXQgeSA9IHJlY3RhbmdsZS55KCk7CisgICAgY29u
c3QgZmxvYXQgeCA9IHJlY3RhbmdsZS54KCk7CisgICAgY29uc3QgZmxvYXQgeSA9IHJlY3Rhbmds
ZS55KCk7CiAKICAgICBwYXRoLm1vdmVUbyhGbG9hdFBvaW50KHggKyB0b3BMZWZ0UmFkaXVzLndp
ZHRoKCksIHkpKTsKIApAQCAtMjAzLDEwICsyMDUsMTAgQEAKIFBhdGggUGF0aDo6Y3JlYXRlUmVj
dGFuZ2xlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdGFuZ2xlKQogewogICAgIFBhdGggcGF0aDsKLSAg
ICBmbG9hdCB4ID0gcmVjdGFuZ2xlLngoKTsKLSAgICBmbG9hdCB5ID0gcmVjdGFuZ2xlLnkoKTsK
LSAgICBmbG9hdCB3aWR0aCA9IHJlY3RhbmdsZS53aWR0aCgpOwotICAgIGZsb2F0IGhlaWdodCA9
IHJlY3RhbmdsZS5oZWlnaHQoKTsKKyAgICBjb25zdCBmbG9hdCB4ID0gcmVjdGFuZ2xlLngoKTsK
KyAgICBjb25zdCBmbG9hdCB5ID0gcmVjdGFuZ2xlLnkoKTsKKyAgICBjb25zdCBmbG9hdCB3aWR0
aCA9IHJlY3RhbmdsZS53aWR0aCgpOworICAgIGNvbnN0IGZsb2F0IGhlaWdodCA9IHJlY3Rhbmds
ZS5oZWlnaHQoKTsKICAgICBpZiAod2lkdGggPD0gMC4wZiB8fCBoZWlnaHQgPD0gMC4wZikKICAg
ICAgICAgcmV0dXJuIHBhdGg7CiAgICAgCkBAIC0yMjEsMzggKzIyMywxMiBAQAogCiBQYXRoIFBh
dGg6OmNyZWF0ZUVsbGlwc2UoY29uc3QgRmxvYXRQb2ludCYgY2VudGVyLCBmbG9hdCByeCwgZmxv
YXQgcnkpCiB7Ci0gICAgZmxvYXQgY3ggPSBjZW50ZXIueCgpOwotICAgIGZsb2F0IGN5ID0gY2Vu
dGVyLnkoKTsKICAgICBQYXRoIHBhdGg7CiAgICAgaWYgKHJ4IDw9IDAuMGYgfHwgcnkgPD0gMC4w
ZikKICAgICAgICAgcmV0dXJuIHBhdGg7CiAKLSAgICBmbG9hdCB4ID0gY3g7Ci0gICAgZmxvYXQg
eSA9IGN5OworICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJlY3QoY2VudGVyLngoKSAtIHJ4LCBj
ZW50ZXIueSgpIC0gcnksIHJ4KjIsIHJ5KjIpKTsKIAotICAgIHVuc2lnbmVkIHN0ZXAgPSAwLCBu
dW0gPSAxMDA7Ci0gICAgYm9vbCBydW5uaW5nID0gdHJ1ZTsKLSAgICB3aGlsZSAocnVubmluZykK
LSAgICB7Ci0gICAgICAgIGlmIChzdGVwID09IG51bSkKLSAgICAgICAgewotICAgICAgICAgICAg
cnVubmluZyA9IGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmbG9hdCBhbmdsZSA9IHN0YXRpY19jYXN0PGZsb2F0PihzdGVwKSAvIHN0YXRpY19jYXN0PGZs
b2F0PihudW0pICogMi4wZiAqIHBpRmxvYXQ7Ci0gICAgICAgIHggPSBjeCArIGNvc2YoYW5nbGUp
ICogcng7Ci0gICAgICAgIHkgPSBjeSArIHNpbmYoYW5nbGUpICogcnk7Ci0KLSAgICAgICAgc3Rl
cCsrOwotICAgICAgICBpZiAoc3RlcCA9PSAxKQotICAgICAgICAgICAgcGF0aC5tb3ZlVG8oRmxv
YXRQb2ludCh4LCB5KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhdGguYWRkTGluZVRv
KEZsb2F0UG9pbnQoeCwgeSkpOwotICAgIH0KLQotICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7Ci0K
ICAgICByZXR1cm4gcGF0aDsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>