<?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>18840</bug_id>
          
          <creation_ts>2008-05-02 05:57:19 -0700</creation_ts>
          <short_desc>[CAIRO] Clipping-support for SVG</short_desc>
          <delta_ts>2008-06-08 13:37:25 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Cairo</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alp</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>79425</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-05-02 05:57:19 -0700</bug_when>
    <thetext>There is allready support for Clip in SVG/Cairo, with problems: 

1. If you have a clip with more than one path, GraphicsContextCairo makes a intersection instead of a union.
http://svg.tutorial.aptico.de/grafik_svg/kap14_1.svg

2. Wrong transformation of skewX and skewY (could be more problems).
http://apike.ca/prog_svg_clip.html

2. No animation-support for Clipping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79426</commentid>
    <comment_count>1</comment_count>
      <attachid>20922</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-05-02 06:06:43 -0700</bug_when>
    <thetext>Created attachment 20922
Clipping in SVG/Cairo

The first problem is caused by GraphicsContext. After each insertion of a path, the clip is created and directly drawn to cairo_t.

This patch draw the clipping at the end of insertion of paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79608</commentid>
    <comment_count>2</comment_count>
      <attachid>20956</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-05-04 01:31:25 -0700</bug_when>
    <thetext>Created attachment 20956
Fixed transformation

This patch fixes transformation of paths (first point 2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80205</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-05-12 10:51:50 -0700</bug_when>
    <thetext>The second point 2 is a problem of animation and localization and affects any animation, not only clipping. If you use e.g. en_US it works, with de_DE or it_IT as language-setting it won&apos;t work (export LANG=&quot;de_DE.UTF-8&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80831</commentid>
    <comment_count>4</comment_count>
      <attachid>21216</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-05-17 12:58:45 -0700</bug_when>
    <thetext>Created attachment 21216
Clipping in SVG/Cairo

This patch corrects a bug in the previous patch and combines the fixes on clipping and path-transformation.

Furthermore the code keeps with the Cg-implementation for a better code-reading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82437</commentid>
    <comment_count>5</comment_count>
      <attachid>21216</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-06-06 10:11:16 -0700</bug_when>
    <thetext>Comment on attachment 21216
Clipping in SVG/Cairo

I&apos;m not sure I understand the matrix changes for path.

And why would you want to reset the clip every time you enter applyClip, even if there is no clip to apply?  Seems like the early-return when there is no clip could be before the clip-reset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82516</commentid>
    <comment_count>6</comment_count>
      <attachid>21546</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-06-07 00:09:42 -0700</bug_when>
    <thetext>Created attachment 21546
Clipping in SVG/Cairo

Made the matrix changes more effective (the inverting is still necessary) and moved cairo_clip_reset() behind the return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82550</commentid>
    <comment_count>7</comment_count>
      <attachid>21546</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-06-07 03:37:35 -0700</bug_when>
    <thetext>Comment on attachment 21546
Clipping in SVG/Cairo

Looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82656</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-06-08 13:37:25 -0700</bug_when>
    <thetext>Committed revision 34454.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20922</attachid>
            <date>2008-05-02 06:06:43 -0700</date>
            <delta_ts>2008-05-17 12:58:45 -0700</delta_ts>
            <desc>Clipping in SVG/Cairo</desc>
            <filename>CairoClipping.patch</filename>
            <type>text/plain</type>
            <size>1824</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjgxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDgtMDUtMDIgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJOSU5H
OiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICBCYXNpYy1zdXBwb3J0
IGZvciBjbGlwcGluZyBpbiBTVkcvQ2Fpcm8KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Y2xpcCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291
cmNlQ2xpcHBlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlQ2xpcHBl
cjo6YXBwbHlDbGlwKToKKwogMjAwOC0wNS0wMiAgU2ltb24gSGF1c21hbm4gIDxzaGF1c21hbkB0
cm9sbHRlY2guY29tPgogCiAgICAgICAgIEZpeCB0aGUgUXQgYnVpbGQgb24gV2luZG93cyB3aGVu
IFBob25vbiBpcyBlbmFibGVkIGZvciBBdWRpby9WaWRlbyBzdXBwb3J0CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAkocmV2aXNpb24gMzI4MTApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgxLDcgKzc4
MSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwKGNvbnN0IFBhdGgmIHAKICAgICBjYWly
b19wYXRoX2Rlc3Ryb3kocCk7CiAgICAgY2Fpcm9fZmlsbF9ydWxlX3Qgc2F2ZWRGaWxsUnVsZSA9
IGNhaXJvX2dldF9maWxsX3J1bGUoY3IpOwogICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIENB
SVJPX0ZJTExfUlVMRV9XSU5ESU5HKTsKLSAgICBjYWlyb19jbGlwKGNyKTsKICAgICBjYWlyb19z
ZXRfZmlsbF9ydWxlKGNyLCBzYXZlZEZpbGxSdWxlKTsKICAgICBtX2RhdGEtPmNsaXAocGF0aCk7
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jYWlyby9TVkdSZXNvdXJjZUNsaXBwZXJD
YWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUmVz
b3VyY2VDbGlwcGVyQ2Fpcm8uY3BwCShyZXZpc2lvbiAzMjgxMCkKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlQ2xpcHBlckNhaXJvLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNiArNTcsNyBAQCB2b2lkIFNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwKEdyYXBo
CiAgICAgICAgIC8vIFRPRE86IHJldmlldyB0aGlzIGNvZGUsIGNsaXBwaW5nIG1heSBub3QgYmUg
aGF2aW5nIHRoZSBkZXNpcmVkIGVmZmVjdAogICAgICAgICBjb250ZXh0LT5jbGlwKHBhdGgpOwog
ICAgIH0KKyAgICBjYWlyb19jbGlwKGNyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20956</attachid>
            <date>2008-05-04 01:31:25 -0700</date>
            <delta_ts>2008-05-17 12:58:45 -0700</delta_ts>
            <desc>Fixed transformation</desc>
            <filename>CairoPath.patch</filename>
            <type>text/plain</type>
            <size>1331</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjg0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDgtMDUtMDQgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJOSU5H
OiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICBGaXhlZCB0cmFuc2Zv
cm1hdGlvbiBvZiBQYXRoIGluIENhaXJvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0aENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OnRyYW5zZm9ybSk6
CisKIDIwMDgtMDUtMDMgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNhbS4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENh
aXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bh
dGhDYWlyby5jcHAJKHJldmlzaW9uIDMyODEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXRoQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsOCArMjM4LDEyIEBA
IHZvaWQgUGF0aDo6YXBwbHkodm9pZCogaW5mbywgUGF0aEFwcGxpZXIKIHZvaWQgUGF0aDo6dHJh
bnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnMpCiB7CiAgICAgY2Fpcm9fdCogbV9j
ciA9IHBsYXRmb3JtUGF0aCgpLT5tX2NyOwotICAgIGNhaXJvX21hdHJpeF90IGNfbWF0cml4ID0g
Y2Fpcm9fbWF0cml4X3QodHJhbnMpOwotICAgIGNhaXJvX3RyYW5zZm9ybShtX2NyLCAmY19tYXRy
aXgpOworICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeDsKKyAgICBjYWlyb19tYXRyaXhfaW5pdF9p
ZGVudGl0eSAoJm1hdHJpeCk7CisgICAgY29uc3QgY2Fpcm9fbWF0cml4X3QgY19tYXRyaXggPSBj
YWlyb19tYXRyaXhfdCh0cmFucyk7CisgICAgY2Fpcm9fbWF0cml4X211bHRpcGx5KCZtYXRyaXgs
ICZtYXRyaXgsICZjX21hdHJpeCk7CisgICAgY2Fpcm9fbWF0cml4X2ludmVydCgmbWF0cml4KTsK
KyAgICBjYWlyb190cmFuc2Zvcm0obV9jciwgJm1hdHJpeCk7CiB9CiAKIFN0cmluZyBQYXRoOjpk
ZWJ1Z1N0cmluZygpIGNvbnN0Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21216</attachid>
            <date>2008-05-17 12:58:45 -0700</date>
            <delta_ts>2008-06-08 13:36:10 -0700</delta_ts>
            <desc>Clipping in SVG/Cairo</desc>
            <filename>CairoClipping.patch</filename>
            <type>text/plain</type>
            <size>3526</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMzU1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMDgtMDUtMTcgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0
IGZvciBjbGlwcGluZyBpbiBTVkcvQ2Fpcm8gYW5kIGZpeGVzIHRyYW5zZm9ybWF0aW9uIG9mIHBh
dGhzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhdGg6OnRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2NhaXJvL1NWR1Jlc291cmNlQ2xpcHBlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwKToKKwogMjAwOC0wNS0xNiAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1pdHou
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3Bw
CShyZXZpc2lvbiAzMzU1MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0
aENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDggKzIzOCwxMiBAQCB2b2lkIFBhdGg6
OmFwcGx5KHZvaWQqIGluZm8sIFBhdGhBcHBsaWVyCiB2b2lkIFBhdGg6OnRyYW5zZm9ybShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zKQogewogICAgIGNhaXJvX3QqIG1fY3IgPSBwbGF0Zm9y
bVBhdGgoKS0+bV9jcjsKLSAgICBjYWlyb19tYXRyaXhfdCBjX21hdHJpeCA9IGNhaXJvX21hdHJp
eF90KHRyYW5zKTsKLSAgICBjYWlyb190cmFuc2Zvcm0obV9jciwgJmNfbWF0cml4KTsKKyAgICBj
YWlyb19tYXRyaXhfdCBtYXRyaXg7CisgICAgY2Fpcm9fbWF0cml4X2luaXRfaWRlbnRpdHkgKCZt
YXRyaXgpOworICAgIGNvbnN0IGNhaXJvX21hdHJpeF90IGNfbWF0cml4ID0gY2Fpcm9fbWF0cml4
X3QodHJhbnMpOworICAgIGNhaXJvX21hdHJpeF9tdWx0aXBseSgmbWF0cml4LCAmbWF0cml4LCAm
Y19tYXRyaXgpOworICAgIGNhaXJvX21hdHJpeF9pbnZlcnQoJm1hdHJpeCk7CisgICAgY2Fpcm9f
dHJhbnNmb3JtKG1fY3IsICZtYXRyaXgpOwogfQogCiBTdHJpbmcgUGF0aDo6ZGVidWdTdHJpbmco
KSBjb25zdApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUmVzb3VyY2VDbGlw
cGVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NhaXJvL1NW
R1Jlc291cmNlQ2xpcHBlckNhaXJvLmNwcAkocmV2aXNpb24gMzM1NTIpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9jYWlyby9TVkdSZXNvdXJjZUNsaXBwZXJDYWlyby5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1Jlc291
cmNlQ2xpcHBlci5oIgogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNh
aXJvUGF0aC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8Y2Fp
cm8uaD4KQEAgLTMwLDMzICszMSwzNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgU1ZH
UmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KSBjb25zdAogewotICAgIFZlY3RvcjxDbGlwRGF0YT4g
ZGF0YSA9IG1fY2xpcERhdGEuY2xpcERhdGEoKTsKLSAgICB1bnNpZ25lZCBpbnQgY291bnQgPSBk
YXRhLnNpemUoKTsKLSAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm47Ci0KICAgICBjYWly
b190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGNhaXJvX3Jlc2V0X2Ns
aXAoY3IpOwogCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBjb3VudDsgeCsrKSB7
Ci0gICAgICAgIFBhdGggcGF0aCA9IGRhdGFbeF0ucGF0aDsKKyAgICBpZiAobV9jbGlwRGF0YS5j
bGlwRGF0YSgpLnNpemUoKSA8IDEpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnRleHQtPmJl
Z2luUGF0aCgpOworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBtX2NsaXBEYXRh
LmNsaXBEYXRhKCkuc2l6ZSgpOyB4KyspIHsKKyAgICAgICAgQ2xpcERhdGEgZGF0YSA9IG1fY2xp
cERhdGEuY2xpcERhdGEoKVt4XTsKKworICAgICAgICBQYXRoIHBhdGggPSBkYXRhLnBhdGg7CiAg
ICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBwYXRoLmNsb3NlU3VicGF0aCgpOwogCi0gICAgICAgIGlmIChkYXRhW3hdLmJib3hVbml0cykg
eworICAgICAgICBpZiAoZGF0YS5iYm94VW5pdHMpIHsKICAgICAgICAgICAgIC8vIE1ha2UgdXNl
IG9mIHRoZSBjbGlwcGluZyB1bml0cwogICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5z
Zm9ybTsKICAgICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoYm91bmRpbmdCb3gueCgpLCBi
b3VuZGluZ0JveC55KCkpOwogICAgICAgICAgICAgdHJhbnNmb3JtLnNjYWxlKGJvdW5kaW5nQm94
LndpZHRoKCksIGJvdW5kaW5nQm94LmhlaWdodCgpKTsKICAgICAgICAgICAgIHBhdGgudHJhbnNm
b3JtKHRyYW5zZm9ybSk7CiAgICAgICAgIH0KKyAgICAgICAgY2Fpcm9fcGF0aF90KiBjbGlwUGF0
aCA9IGNhaXJvX2NvcHlfcGF0aChwYXRoLnBsYXRmb3JtUGF0aCgpLT5tX2NyKTsKKyAgICAgICAg
Y2Fpcm9fYXBwZW5kX3BhdGgoY3IsIGNsaXBQYXRoKTsKIAotICAgICAgICBjYWlyb19zZXRfZmls
bF9ydWxlKGNyLCBkYXRhW3hdLndpbmRSdWxlID09IFJVTEVfRVZFTk9ERCA/IENBSVJPX0ZJTExf
UlVMRV9FVkVOX09ERCA6IENBSVJPX0ZJTExfUlVMRV9XSU5ESU5HKTsKLQotICAgICAgICAvLyBU
T0RPOiByZXZpZXcgdGhpcyBjb2RlLCBjbGlwcGluZyBtYXkgbm90IGJlIGhhdmluZyB0aGUgZGVz
aXJlZCBlZmZlY3QKLSAgICAgICAgY29udGV4dC0+Y2xpcChwYXRoKTsKKyAgICAgICAgY2Fpcm9f
c2V0X2ZpbGxfcnVsZShjciwgZGF0YS53aW5kUnVsZSA9PSBSVUxFX0VWRU5PREQgPyBDQUlST19G
SUxMX1JVTEVfRVZFTl9PREQgOiBDQUlST19GSUxMX1JVTEVfV0lORElORyk7CiAgICAgfQorCisg
ICAgY2Fpcm9fY2xpcChjcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKCg==
</data>
<flag name="review"
          id="9271"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21546</attachid>
            <date>2008-06-07 00:09:42 -0700</date>
            <delta_ts>2008-06-07 03:37:35 -0700</delta_ts>
            <desc>Clipping in SVG/Cairo</desc>
            <filename>CairoClipping.patch</filename>
            <type>text/plain</type>
            <size>3600</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDQxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMDgtMDYtMDcgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NDAKKyAgICAgICAgW0NBSVJPXSBD
bGlwcGluZy1zdXBwb3J0IGZvciBTVkcKKworICAgICAgICBTdXBwb3J0IGZvciBjbGlwcGluZyBp
biBTVkcvQ2Fpcm8gYW5kIGZpeGVzIHRyYW5zZm9ybWF0aW9uIG9mIHBhdGhzLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhdGg6OnRyYW5zZm9ybSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jl
c291cmNlQ2xpcHBlckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlQ2xp
cHBlcjo6YXBwbHlDbGlwKToKKwogMjAwOC0wNi0wNiAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFm
ZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljLgpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXRoQ2Fpcm8uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAkocmV2aXNpb24g
MzQzNjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzOSw2ICsyMzksNyBAQCB2b2lkIFBhdGg6OnRyYW5zZm9ybShj
b25zdCBBZmZpbmVUcmFuc2ZvCiB7CiAgICAgY2Fpcm9fdCogbV9jciA9IHBsYXRmb3JtUGF0aCgp
LT5tX2NyOwogICAgIGNhaXJvX21hdHJpeF90IGNfbWF0cml4ID0gY2Fpcm9fbWF0cml4X3QodHJh
bnMpOworICAgIGNhaXJvX21hdHJpeF9pbnZlcnQoJmNfbWF0cml4KTsKICAgICBjYWlyb190cmFu
c2Zvcm0obV9jciwgJmNfbWF0cml4KTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
Y2Fpcm8vU1ZHUmVzb3VyY2VDbGlwcGVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlQ2xpcHBlckNhaXJvLmNwcAkocmV2aXNpb24g
MzQzNjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jYWlyby9TVkdSZXNvdXJjZUNsaXBwZXJD
YWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggRGlyayBTY2h1bHplIDx2YnM4NUBnbXguZGU+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIy
LDYgKzIzLDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1Jlc291cmNlQ2xpcHBl
ci5oIgogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIkNhaXJvUGF0aC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiAjaW5jbHVkZSA8Y2Fpcm8uaD4KQEAg
LTMwLDMzICszMiwzNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgU1ZHUmVzb3VyY2VD
bGlwcGVyOjphcHBseUNsaXAoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94KSBjb25zdAogewotICAgIFZlY3RvcjxDbGlwRGF0YT4gZGF0YSA9IG1f
Y2xpcERhdGEuY2xpcERhdGEoKTsKLSAgICB1bnNpZ25lZCBpbnQgY291bnQgPSBkYXRhLnNpemUo
KTsKLSAgICBpZiAoIWNvdW50KQorICAgIGNhaXJvX3QqIGNyID0gY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCk7CisgICAgaWYgKG1fY2xpcERhdGEuY2xpcERhdGEoKS5zaXplKCkgPCAxKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBjYWlyb190KiBjciA9IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpOwogICAgIGNhaXJvX3Jlc2V0X2NsaXAoY3IpOworICAgIGNvbnRleHQtPmJlZ2luUGF0aCgp
OworCisgICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBtX2NsaXBEYXRhLmNsaXBEYXRh
KCkuc2l6ZSgpOyB4KyspIHsKKyAgICAgICAgQ2xpcERhdGEgZGF0YSA9IG1fY2xpcERhdGEuY2xp
cERhdGEoKVt4XTsKIAotICAgIGZvciAodW5zaWduZWQgaW50IHggPSAwOyB4IDwgY291bnQ7IHgr
KykgewotICAgICAgICBQYXRoIHBhdGggPSBkYXRhW3hdLnBhdGg7CisgICAgICAgIFBhdGggcGF0
aCA9IGRhdGEucGF0aDsKICAgICAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7CiAKLSAgICAgICAgaWYgKGRh
dGFbeF0uYmJveFVuaXRzKSB7CisgICAgICAgIGlmIChkYXRhLmJib3hVbml0cykgewogICAgICAg
ICAgICAgLy8gTWFrZSB1c2Ugb2YgdGhlIGNsaXBwaW5nIHVuaXRzCiAgICAgICAgICAgICBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShi
b3VuZGluZ0JveC54KCksIGJvdW5kaW5nQm94LnkoKSk7CiAgICAgICAgICAgICB0cmFuc2Zvcm0u
c2NhbGUoYm91bmRpbmdCb3gud2lkdGgoKSwgYm91bmRpbmdCb3guaGVpZ2h0KCkpOwogICAgICAg
ICAgICAgcGF0aC50cmFuc2Zvcm0odHJhbnNmb3JtKTsKICAgICAgICAgfQorICAgICAgICBjYWly
b19wYXRoX3QqIGNsaXBQYXRoID0gY2Fpcm9fY29weV9wYXRoKHBhdGgucGxhdGZvcm1QYXRoKCkt
Pm1fY3IpOworICAgICAgICBjYWlyb19hcHBlbmRfcGF0aChjciwgY2xpcFBhdGgpOwogCi0gICAg
ICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIGRhdGFbeF0ud2luZFJ1bGUgPT0gUlVMRV9FVkVO
T0REID8gQ0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcp
OwotCi0gICAgICAgIC8vIFRPRE86IHJldmlldyB0aGlzIGNvZGUsIGNsaXBwaW5nIG1heSBub3Qg
YmUgaGF2aW5nIHRoZSBkZXNpcmVkIGVmZmVjdAotICAgICAgICBjb250ZXh0LT5jbGlwKHBhdGgp
OworICAgICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGNyLCBkYXRhLndpbmRSdWxlID09IFJVTEVf
RVZFTk9ERCA/IENBSVJPX0ZJTExfUlVMRV9FVkVOX09ERCA6IENBSVJPX0ZJTExfUlVMRV9XSU5E
SU5HKTsKICAgICB9CisKKyAgICBjYWlyb19jbGlwKGNyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQoK
</data>
<flag name="review"
          id="9433"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>