<?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>18694</bug_id>
          
          <creation_ts>2008-04-23 02:24:16 -0700</creation_ts>
          <short_desc>[CAIRO] Problem with rotation in a given matrix in SVG</short_desc>
          <delta_ts>2008-08-01 12:26:57 -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>jasa.david</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>78634</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-04-23 02:24:16 -0700</bug_when>
    <thetext>There is a problem with rotation of objects, if you use matrix() instead of rotate(). I opened the bug just to be sure not to forget anything.

You can fix the problem for svg with:

AffineTransform::AffineTransform(double a, double b, double c, double d, double tx, double ty)
{
    cairo_matrix_init(&amp;m_transform, a, b, c, d, tx, ty);
}

Is there anything else to do? Perhaps setB(), b() and setC(), c() ?

In cairo a matrix is initialised with:
cairo_matrix_init(cairo_matrix_t *matrix, xx, yx, xy, yy, x0, y0);
So setB(), b() and setC() and c() could be wrong initialised.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78635</commentid>
    <comment_count>1</comment_count>
      <attachid>20768</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-04-23 02:47:29 -0700</bug_when>
    <thetext>Created attachment 20768
SVGCairoRotation

see comment above</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>78797</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-04-24 12:53:04 -0700</bug_when>
    <thetext>The values are given correctly to AffineTransform (in SVG-specification):
like matrix(a,b,c,d,tx,ty)
If you transform an SVG-object with Cairo, b and c are interchanged. That means:
matrix(a,c,b,d,tx,ty) is the same on cairo like the matrix above on SVG. Thats why the interchange of c and b in AffineTransform should be correct. But the SVG-object is displayed wrong with it.

I searched in GraphicsContestCairo and found the method
void GraphicsContext::concatCTM(const AffineTransform&amp; transform)
In this method &quot;transform&quot; is changed back to a cairo_matrix_t with reinterpret_cast. 

I asked in IRC and it COULD be that this transformation interchange b and c in the background while transforming &quot;transform&quot; to cairo_matrix_t.
Perhaps, thats why cairo_matrix_init(&amp;m_transform, a, c, b, d, tx, ty); doesn&apos;t work correctly.

So you should use a other possibility to change the type to cairo_matrix_t or you use cairo_matrix_init(&amp;m_transform, a, b, c, d, tx, ty);

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79088</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-04-27 23:08:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I searched in GraphicsContestCairo and found the method
&gt; void GraphicsContext::concatCTM(const AffineTransform&amp; transform)
&gt; In this method &quot;transform&quot; is changed back to a cairo_matrix_t with
&gt; reinterpret_cast.

You can replace reinterpret_cast:

    const cairo_matrix_t* matrix = reinterpret_cast&lt;const cairo_matrix_t*&gt;(&amp;transform);
    cairo_transform(cr, matrix);

to

    cairo_matrix_t matrix = cairo_matrix_t(transform);
    cairo_transform(cr, &amp;matrix);

The code don&apos;t use reinterpret_cast but it doesn&apos;t solve the problem. You still have to change b to a and a to b in AffineTransform.
I searched through the source-code of webkit with grep and SVG is the only one that use this method. I shoulnd&apos;t be a problem to fix it that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79089</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-04-27 23:19:51 -0700</bug_when>
    <thetext>&gt; have to change b to a and a to b in AffineTransform.

I mean b to c and c to b.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79329</commentid>
    <comment_count>5</comment_count>
      <attachid>20768</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-04-30 23:49:56 -0700</bug_when>
    <thetext>Comment on attachment 20768
SVGCairoRotation

This needs a layout test.  Doesn&apos;t it already affect some layout test result?  Also, your email is missing from your changelog.  Otherwise the patch looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79570</commentid>
    <comment_count>6</comment_count>
    <who name="David Jaša">jasa.david</who>
    <bug_when>2008-05-03 07:02:02 -0700</bug_when>
    <thetext>Maybe WK could use this test as layout test: http://www.carto.net/papers/svg/samples/matrix.shtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>79587</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-05-03 13:02:20 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Maybe WK could use this test as layout test:
&gt; http://www.carto.net/papers/svg/samples/matrix.shtml
&gt; 

But not a good test in this case, since WebKitGtk doesn&apos;t support the &lt;!ENTITY ...&gt; -element (or at least partial).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83273</commentid>
    <comment_count>8</comment_count>
      <attachid>21690</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-06-13 15:13:45 -0700</bug_when>
    <thetext>Created attachment 21690
SVGCairoRotation

I misunderstood the documentation of CGAffineTransform. The CGAffineTransform is the transpose of cairo_matrix. That means

a is xx on cairo, [1,1] on CGAffineTransform
b is yx on cairo, [1,2] on CGAffineTransform
c is xy on cairo, [2,1] on CGAffineTransform
d is yy on cairo, [2,2] on CGAffineTransform

and so on.

That means the handover of the values have to be AffineTransform(a, b, c, d, e, f).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83298</commentid>
    <comment_count>9</comment_count>
      <attachid>21694</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-06-13 23:55:47 -0700</bug_when>
    <thetext>Created attachment 21694
SVGCairoRotation

forgot b(), setB() and c(), setC()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83316</commentid>
    <comment_count>10</comment_count>
      <attachid>21700</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-06-14 07:00:43 -0700</bug_when>
    <thetext>Created attachment 21700
LayoutTest

I created a test because I haven&apos;t found a test case for rotation with a matrix in layouttests. This one draws two boxes. The red box is rotated with the attribute &apos;rotate&apos; and the green box with a matrix (both with the same angle). You should only see the green box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83897</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2008-06-19 11:17:55 -0700</bug_when>
    <thetext>The patch solves problems with transformed images on http://paulbakaus.com/lab/js/coverflow/ too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>84507</commentid>
    <comment_count>12</comment_count>
      <attachid>21694</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-06-26 12:01:08 -0700</bug_when>
    <thetext>Comment on attachment 21694
SVGCairoRotation

The patch looks fine.  Of course Dirk informed me over IRC that GTK doesn&apos;t actually have DumpRenderTree yet... so run-webkit-tests (And thus layout tests) don&apos;t work.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87052</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-07-26 23:02:48 -0700</bug_when>
    <thetext>Landed in r35399.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87593</commentid>
    <comment_count>14</comment_count>
      <attachid>21700</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-01 12:15:16 -0700</bug_when>
    <thetext>Comment on attachment 21700
LayoutTest

this test could be much better.  If you want to test that certain rotations work as expected, you should put a second red box behind the green one, the green one would only ever cover all of the red if your bug was fixed (i.e. the rotations for those particular matrices were calculated correctly.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87602</commentid>
    <comment_count>15</comment_count>
      <attachid>21700</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-01 12:26:57 -0700</bug_when>
    <thetext>Comment on attachment 21700
LayoutTest

My bad.  Looks fine.  Even better would be to just show the green box at 0,0 unrotated (no text below it).  That would require these to be in a &lt;g&gt; with another rotate(-10) applied.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>20768</attachid>
            <date>2008-04-23 02:47:29 -0700</date>
            <delta_ts>2008-04-30 23:49:56 -0700</delta_ts>
            <desc>SVGCairoRotation</desc>
            <filename>SVGCairoRotation.patch</filename>
            <type>text/plain</type>
            <size>1244</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzMjQzMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDgtMDQtMjMgIERpcmsgU2NodWx6ZSAgPHNldCBFTUFJTF9BRERS
RVNTIGVudmlyb25tZW50IHZhcmlhYmxlPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEZpeCBTVkcgZGlzcGxheWluZyBpc3N1ZXMgaW4gQ2Fpcm8sIGlm
IHRoZSBTVkctb2JqZWN0IGlzIHJvdGF0ZWQgd2l0aCBtYXRyaXgoKQorICAgICAgICBpbnN0ZWFk
IG9mIHJvdGF0ZSgpLiAKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0FmZmlu
ZVRyYW5zZm9ybUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybTo6
QWZmaW5lVHJhbnNmb3JtKToKKwogMjAwOC0wNC0yMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQWZmaW5lVHJhbnNmb3JtQ2Fpcm8uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQWZmaW5lVHJhbnNm
b3JtQ2Fpcm8uY3BwCShyZXZpc2lvbiAzMjQyOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQWZmaW5lVHJhbnNmb3JtQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw3IEBAIEFmZmluZVRyYW5zZm9ybTo6QWZmaW5lVHJhbnNmb3JtKCkKIAogQWZmaW5lVHJh
bnNmb3JtOjpBZmZpbmVUcmFuc2Zvcm0oZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91
YmxlIGQsIGRvdWJsZSB0eCwgZG91YmxlIHR5KQogewotICAgIGNhaXJvX21hdHJpeF9pbml0KCZt
X3RyYW5zZm9ybSwgYSwgYywgYiwgZCwgdHgsIHR5KTsKKyAgICBjYWlyb19tYXRyaXhfaW5pdCgm
bV90cmFuc2Zvcm0sIGEsIGIsIGMsIGQsIHR4LCB0eSk7CiB9CiAKIEFmZmluZVRyYW5zZm9ybTo6
QWZmaW5lVHJhbnNmb3JtKGNvbnN0IGNhaXJvX21hdHJpeF90ICZtYXRyaXgpCgo=
</data>
<flag name="review"
          id="9084"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21690</attachid>
            <date>2008-06-13 15:13:45 -0700</date>
            <delta_ts>2008-06-13 23:55:47 -0700</delta_ts>
            <desc>SVGCairoRotation</desc>
            <filename>CairoRotation.patch</filename>
            <type>text/plain</type>
            <size>1669</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDUyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDgtMDYtMTMgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY5NAorICAgICAgICBbQ0FJUk9dIFBy
b2JsZW0gd2l0aCByb3RhdGlvbiBpbiBhIGdpdmVuIG1hdHJpeCBpbiBTVkcKKworICAgICAgICBG
aXhlZCB2YWx1ZXMgZ2l2ZW4gdG8gQWZmaW5lVHJhbnNmb3JtLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQWZmaW5lVHJhbnNmb3JtQ2Fpcm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtOjpBZmZpbmVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6QWZmaW5lVHJhbnNmb3JtOjpzZXRNYXRyaXgpOgorCiAyMDA4LTA2LTEzICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFu
LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9BZmZpbmVUcmFuc2Zvcm1D
YWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9B
ZmZpbmVUcmFuc2Zvcm1DYWlyby5jcHAJKHJldmlzaW9uIDM0NTE3KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9BZmZpbmVUcmFuc2Zvcm1DYWlyby5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAgQWZmaW5lVHJhbnNmb3JtOjpBZmZpbmVUcmFuc2Zvcm0oKQog
CiBBZmZpbmVUcmFuc2Zvcm06OkFmZmluZVRyYW5zZm9ybShkb3VibGUgYSwgZG91YmxlIGIsIGRv
dWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIHR4LCBkb3VibGUgdHkpCiB7Ci0gICAgY2Fpcm9fbWF0
cml4X2luaXQoJm1fdHJhbnNmb3JtLCBhLCBjLCBiLCBkLCB0eCwgdHkpOworICAgIGNhaXJvX21h
dHJpeF9pbml0KCZtX3RyYW5zZm9ybSwgYSwgYiwgYywgZCwgdHgsIHR5KTsKIH0KIAogQWZmaW5l
VHJhbnNmb3JtOjpBZmZpbmVUcmFuc2Zvcm0oY29uc3QgY2Fpcm9fbWF0cml4X3QgJm1hdHJpeCkK
QEAgLTUxLDcgKzUxLDcgQEAgQWZmaW5lVHJhbnNmb3JtOjpBZmZpbmVUcmFuc2Zvcm0oY29uc3Qg
YwogCiB2b2lkIEFmZmluZVRyYW5zZm9ybTo6c2V0TWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwg
ZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgdHgsIGRvdWJsZSB0eSkKIHsKLSAgICBjYWlyb19t
YXRyaXhfaW5pdCgmbV90cmFuc2Zvcm0sIGEsIGMsIGIsIGQsIHR4LCB0eSk7CisgICAgY2Fpcm9f
bWF0cml4X2luaXQoJm1fdHJhbnNmb3JtLCBhLCBiLCBjLCBkLCB0eCwgdHkpOwogfQogCiB2b2lk
IEFmZmluZVRyYW5zZm9ybTo6bWFwKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlKiB4MiwgZG91
YmxlKiB5MikgY29uc3QKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21694</attachid>
            <date>2008-06-13 23:55:47 -0700</date>
            <delta_ts>2008-06-26 12:01:08 -0700</delta_ts>
            <desc>SVGCairoRotation</desc>
            <filename>CairoRotation.patch</filename>
            <type>text/plain</type>
            <size>2157</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDUyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDgtMDYtMTMgIERpcmsgU2NodWx6ZSAgPHZiczg1QGdteC5kZT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY5NAorICAgICAgICBbQ0FJUk9dIFBy
b2JsZW0gd2l0aCByb3RhdGlvbiBpbiBhIGdpdmVuIG1hdHJpeCBpbiBTVkcKKworICAgICAgICBD
aGFuZ2VkIHZhbHVlcyBnaXZlbiB0byBBZmZpbmVUcmFuc2Zvcm0uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9BZmZpbmVUcmFuc2Zvcm1DYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm06OkFmZmluZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm06OnNldE1hdHJpeCk6CisKIDIwMDgtMDYtMTMgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvaG4gU3VsbGl2
YW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0FmZmluZVRyYW5zZm9y
bUNhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0FmZmluZVRyYW5zZm9ybUNhaXJvLmNwcAkocmV2aXNpb24gMzQ1MTcpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0FmZmluZVRyYW5zZm9ybUNhaXJvLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNyArNDEsNyBAQCBBZmZpbmVUcmFuc2Zvcm06OkFmZmluZVRyYW5zZm9ybSgp
CiAKIEFmZmluZVRyYW5zZm9ybTo6QWZmaW5lVHJhbnNmb3JtKGRvdWJsZSBhLCBkb3VibGUgYiwg
ZG91YmxlIGMsIGRvdWJsZSBkLCBkb3VibGUgdHgsIGRvdWJsZSB0eSkKIHsKLSAgICBjYWlyb19t
YXRyaXhfaW5pdCgmbV90cmFuc2Zvcm0sIGEsIGMsIGIsIGQsIHR4LCB0eSk7CisgICAgY2Fpcm9f
bWF0cml4X2luaXQoJm1fdHJhbnNmb3JtLCBhLCBiLCBjLCBkLCB0eCwgdHkpOwogfQogCiBBZmZp
bmVUcmFuc2Zvcm06OkFmZmluZVRyYW5zZm9ybShjb25zdCBjYWlyb19tYXRyaXhfdCAmbWF0cml4
KQpAQCAtNTEsNyArNTEsNyBAQCBBZmZpbmVUcmFuc2Zvcm06OkFmZmluZVRyYW5zZm9ybShjb25z
dCBjCiAKIHZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRNYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBi
LCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSB0eCwgZG91YmxlIHR5KQogewotICAgIGNhaXJv
X21hdHJpeF9pbml0KCZtX3RyYW5zZm9ybSwgYSwgYywgYiwgZCwgdHgsIHR5KTsKKyAgICBjYWly
b19tYXRyaXhfaW5pdCgmbV90cmFuc2Zvcm0sIGEsIGIsIGMsIGQsIHR4LCB0eSk7CiB9CiAKIHZv
aWQgQWZmaW5lVHJhbnNmb3JtOjptYXAoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUqIHgyLCBk
b3VibGUqIHkyKSBjb25zdApAQCAtMTQ3LDIyICsxNDcsMjIgQEAgdm9pZCBBZmZpbmVUcmFuc2Zv
cm06OnNldEEoZG91YmxlIGEpCiAKIGRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmIoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3RyYW5zZm9ybS54eTsKKyAgICByZXR1cm4gbV90cmFuc2Zvcm0ueXg7
CiB9CiAKIHZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRCKGRvdWJsZSBiKQogewotICAgIG1fdHJh
bnNmb3JtLnh5ID0gYjsKKyAgICBtX3RyYW5zZm9ybS55eCA9IGI7CiB9CiAKIGRvdWJsZSBBZmZp
bmVUcmFuc2Zvcm06OmMoKSBjb25zdAogewotICAgIHJldHVybiBtX3RyYW5zZm9ybS55eDsKKyAg
ICByZXR1cm4gbV90cmFuc2Zvcm0ueHk7CiB9CiAKIHZvaWQgQWZmaW5lVHJhbnNmb3JtOjpzZXRD
KGRvdWJsZSBjKQogewotICAgIG1fdHJhbnNmb3JtLnl4ID0gYzsKKyAgICBtX3RyYW5zZm9ybS54
eSA9IGM7CiB9CiAKIGRvdWJsZSBBZmZpbmVUcmFuc2Zvcm06OmQoKSBjb25zdAoK
</data>
<flag name="review"
          id="9520"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21700</attachid>
            <date>2008-06-14 07:00:43 -0700</date>
            <delta_ts>2008-08-01 12:26:57 -0700</delta_ts>
            <desc>LayoutTest</desc>
            <filename>rotate-matrix.svg</filename>
            <type>image/svg+xml</type>
            <size>461</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz
dmcgd2lkdGg9IjI1MHB4IiBoZWlnaHQ9IjIwMHB4Ig0KICAgICB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5r
Ij4KICAgIDxyZWN0IGZpbGw9InJlZCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIHg9IjIwIiB5
PSIzMCIgdHJhbnNmb3JtPSJyb3RhdGUoLTEwKSIgLz4KICAgIDxyZWN0IGZpbGw9ImdyZWVuIiB3
aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgeD0iMjAiIHk9IjMwIiB0cmFuc2Zvcm09Im1hdHJpeCgw
Ljk4NDgwOCwtMC4xNzM2NDgsMC4xNzM2NDgsMC45ODQ4MDgsMCwwKSIgLz4KICAgIDx0ZXh0IHg9
IjEwIiB5PSIxODAiPllvdSBzaG91bGQgc2VlIGEgcm90YXRlZCBncmVlbiBib3g8L3RleHQ+Cjwv
c3ZnPgo=
</data>
<flag name="review"
          id="9525"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>