This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 15959 - Use 3x2 CSSMatrix beside, or just 4x4 CSSMatrix?
Summary: Use 3x2 CSSMatrix beside, or just 4x4 CSSMatrix?
Status: RESOLVED FIXED
Alias: None
Product: CSS
Classification: Unclassified
Component: Transforms (show other bugs)
Version: unspecified
Hardware: PC All
: P2 normal
Target Milestone: ---
Assignee: Dirk Schulze
QA Contact: public-css-bugzilla
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-02-11 21:15 UTC by Dirk Schulze
Modified: 2012-02-14 16:57 UTC (History)
4 users (show)

See Also:


Attachments

Description Dirk Schulze 2012-02-11 21:15:11 UTC
Dr. O. Hoffmann asked in a comment [1] if we want to use 3x2 and 4x4, or if we always want to use 4x4 for CSSMatrix. And now that we merge CSS 2D Transforms and CSS 3D Transforms we run into the same question.

Does it still make sense to differ between 3x2 and 4x4 in the CSS Transforms spec, or should CSSMatrix always be a 4x4 matrix?

If we decide to use a 4x4 matrix, we can remove all comments about 3x2 matrices. It will just be necessary to describe how matrix(a,b,c,d,e,f) fits into a 4x4 matrix.

Also, if we have following IDL for CSSMatrix:

interface CSSMatrix {

    attribute double a;
    attribute double b;
    attribute double c;
    attribute double d;
    attribute double e;
    attribute double f;

    attribute double m11;
    attribute double m12;
    attribute double m13;
    attribute double m14;
    attribute double m21;
    attribute double m22;
    attribute double m23;
    attribute double m24;
    attribute double m31;
    attribute double m32;
    attribute double m33;
    attribute double m34;
    attribute double m41;
    attribute double m42;
    attribute double m43;
    attribute double m44;

    void        setMatrixValue(in DOMString string) raises(DOMException);
    CSSMatrix   multiply(in CSSMatrix secondMatrix);
    CSSMatrix   inverse() raises(DOMException);
    CSSMatrix   translate(in double x, in double y, optional in double z);
    CSSMatrix   scale(in double scaleX, optional in double scaleY, optional in double scaleZ);
    CSSMatrix   rotate(in double rotX, optional in double rotY, optional in double rotZ);
    CSSMatrix   rotateAxisAngle(in double x, in double y, in double z, in double angle);
    CSSMatrix   skewX(in double angle);
    CSSMatrix   skewY(in double angle);
};

a-f just make sense for a 2D Matrix. Do we want to add a flag if the matrix has 3d components? Like:

   bool    isAffine();

Internally it would do something like:

return (m13() == 0 && m14() == 0 && m23() == 0 && m24() == 0 && 
                m31() == 0 && m32() == 0 && m33() == 1 && m34() == 0 && m43() == 0 && m44() == 1);

(from WebKit source code)

[1] http://lists.w3.org/Archives/Public/www-style/2009Dec/0233.html
Comment 1 Simon Fraser 2012-02-12 14:41:09 UTC
I think your suggestions here are good.
Comment 2 Dirk Schulze 2012-02-13 05:57:39 UTC
I added all proposed changes with my last commit on 2012/02/12.