Options:
- # Session Start: Fri Feb 13 00:00:00 2009
- # Session Ident: #css
- # [00:09] * Quits: shepazu (schepers@128.30.52.30) (Client exited)
- # [00:41] * Quits: fantasai (fantasai@71.138.141.152) (Quit: Lost terminal)
- # [00:42] * Joins: shepazu (schepers@128.30.52.30)
- # [01:00] * Joins: fantasai (fantasai@71.138.141.152)
- # [01:14] * Quits: shepazu (schepers@128.30.52.30) (Ping timeout)
- # [01:16] <dino> anne?
- # [01:16] * Quits: Lachy (Lachlan@85.196.122.246) (Quit: This computer has gone to sleep)
- # [01:43] * Joins: shepazu (schepers@128.30.52.30)
- # [02:04] * Quits: shepazu (schepers@128.30.52.30) (Ping timeout)
- # [02:15] <jdaggett> dino: ping
- # [02:16] <dino> hi jdaggett
- # [02:16] <jdaggett> just wondering, are you planning on attending the Tokyo F2F?
- # [02:16] <dino> jdaggett: no.
- # [02:16] <dino> i'd love to though :)
- # [02:17] <jdaggett> would you be able to dial in for discussions of apple specs?
- # [02:17] <dino> jdaggett: definitelu
- # [02:18] <jdaggett> cool
- # [02:18] <dino> definitely
- # [02:18] <jdaggett> what time is it now where you are?
- # [02:18] <jdaggett> 11?
- # [02:18] <dino> 12
- # [02:19] <jdaggett> so discussions during the afternoon your time are good?
- # [02:19] <dino> actually, my morning would be better for me
- # [02:19] <jdaggett> ok
- # [02:19] <jdaggett> it would probably slide into lunch
- # [02:19] <jdaggett> since 9am here is 11am your time
- # [02:20] <dino> well, whatever works is fine
- # [02:20] <jdaggett> good, good
- # [02:20] <jdaggett> thanks
- # [02:20] <dino> i can be available whenever
- # [02:41] * Quits: sylvaing (sylvaing@131.107.0.72) (Ping timeout)
- # [02:53] * Joins: Lachy (Lachlan@85.196.122.246)
- # [03:03] * Joins: sylvaing (sylvaing@70.7.87.182)
- # [03:48] * Quits: sylvaing (sylvaing@70.7.87.182) (Ping timeout)
- # [03:53] * Quits: fantasai (fantasai@71.138.141.152) (Ping timeout)
- # [04:23] * Quits: dbaron (dbaron@63.245.220.246) (Quit: 8403864 bytes have been tenured, next gc will be global.)
- # [04:23] * Joins: shepazu (schepers@128.30.52.30)
- # [04:39] * Quits: shepazu (schepers@128.30.52.30) (Quit: shepazu)
- # [07:44] * Joins: sylvaing (sylvaing@98.247.143.102)
- # [07:50] * Joins: fantasai (fantasai@71.138.141.152)
- # [08:02] * Quits: sylvaing (sylvaing@98.247.143.102) (Ping timeout)
- # [09:16] * Quits: fantasai (fantasai@71.138.141.152) (Quit: Lost terminal)
- # [09:16] * Joins: fantasai (fantasai@71.138.141.152)
- # [09:21] * Quits: fantasai (fantasai@71.138.141.152) (Ping timeout)
- # [10:03] <anne> dino, yes?
- # [10:03] <dino> hey
- # [10:03] <anne> dino, you being on the other end of the world and me going to bed at reasonable hours does not make this easy
- # [10:03] <anne> oh, you're here :)
- # [10:03] <dino> so, i was thinking of implementing parts of cssom view
- # [10:03] <dino> particularly, the API to query media rules
- # [10:04] <anne> cool!
- # [10:04] <dino> i didn't know you'd written that spec
- # [10:04] <dino> http://webkit.org/specs/MediaQueriesExtensions.html
- # [10:04] <dino> was what i was going to do (see section 6)
- # [10:04] <anne> aah, I saw that and wanted to e-mail you about it :)
- # [10:04] <dino> but your approach is better
- # [10:04] <anne> ta
- # [10:05] <dino> now.. i have comments
- # [10:05] <dino> not on that one
- # [10:05] <dino> but we need the point mapping APIs to be able to take transforms into account
- # [10:05] <dino> we already have implemented some methods for mapping a point from a node into page coordinates
- # [10:05] <dino> (custom methods, currently only on iphone)
- # [10:06] <anne> doesn't it take transforms into account autometically?
- # [10:06] <anne> i'd assume hit testing does not assume nothing is transformed...
- # [10:07] <dino> in our case we need to be able to map an arbitrary x,y point into page coords
- # [10:07] <dino> sure, hit testing gets extremely complicated with transforms (especially 3d)
- # [10:07] <dino> we make sure elementAtPoint and so on works
- # [10:09] <dino> anne: trying to find the documentation on what we implement
- # [10:10] <anne> kk, when you say arbitrary x,y point into page coords do you mean arbitrary x,y point on the viewport into coords for the canvas or something?
- # [10:10] <dino> right
- # [10:10] <dino> and the other way around
- # [10:10] <anne> interesting
- # [10:10] <dino> see the end of the CSS Transforms spec
- # [10:11] <dino> now on w3.org!!
- # [10:11] <dino> we add a Point class
- # [10:11] <dino> and then add this to Window: Point convertPointFromPageToNode(in Node node, in Point point);
- # [10:11] <dino> Point convertPointFromNodeToPage(in Node node, in Point point);
- # [10:12] <dino> your CSSOM View api is one way only
- # [10:12] <dino> and also does bounding rects
- # [10:13] <dino> are remember that with rotations, things are not rects
- # [10:13] <dino> or you want more accurate than a rect
- # [10:13] <dino> you want a quad
- # [10:13] <dino> make sense?
- # [10:13] <anne> I think I still follow, yes
- # [10:14] <dino> so, do you think you could add in methods to allow us to do conversion
- # [10:14] <dino> ?
- # [10:15] <dino> it would be nice to have Point and Rect interfaces
- # [10:15] <anne> would it be ClientPoint, effectively?
- # [10:15] <dino> could be
- # [10:15] <dino> doesn't matter that much
- # [10:15] <anne> actually, probably not
- # [10:16] <dino> it's just Point, nothing clienty about it :)
- # [10:16] <anne> I suppose in convertPointFromNodeToPage it is relative to the element
- # [10:16] <anne> the definition of getClientRects() still works for transforms right?
- # [10:17] <anne> i.e. there's still a bounding box
- # [10:17] <dino> yes
- # [10:17] <anne> euh, border box
- # [10:17] <dino> but that isn't always useful when there are transforms
- # [10:17] <dino> eg. rotate(45deg)
- # [10:17] <anne> yeah, so we need new sets of methods?
- # [10:17] <dino> i think so
- # [10:17] <anne> getClientCoordinates() or something?
- # [10:18] <dino> we have one internally on the phone that returns a list of four points
- # [10:18] <anne> and have ClientCoordinates class which takes a list of points
- # [10:18] <anne> four is always enough?
- # [10:18] <dino> it's important to do it in one method call because there can be a lot of ugly math involved (building up a set of matrix multiplication)
- # [10:19] <dino> to JS though we only provide the method for a single point
- # [10:21] <anne> so you only have the APIs you listed above, nothing like getClientRects() ?
- # [10:22] <dino> yes
- # [10:22] <dino> correct
- # [10:22] <anne> and you're saying that having something like getClientRects() that takes into account transforms would be painful so you rather have the Point API?
- # [10:23] <dino> basically, we need something like convertPointFromPageToNode
- # [10:23] <dino> and the other way around too
- # [10:24] <dino> getClientRects is from Node To Page
- # [10:24] <dino> make sense?
- # [10:25] <dino> and we're sort of implementing this in public webkit at the moment, so there is a little time pressure :)
- # [10:25] <anne> yes, I'm just wondering whether we want your approach or a simple extension of what we have now
- # [10:25] <dino> we don't particularly like our approach
- # [10:25] <anne> e.g. now we have elementFromPoint() and getClientRects()
- # [10:25] <dino> but we needed to implement something for iPhone 2.0
- # [10:26] <anne> we could have elementFromPagePoint() and getClientCoords() or something like that
- # [10:26] <dino> yep, sounds good.
- # [10:26] <anne> or maybe just getBoundingClientCoords(); will you ever have multiple boxes?
- # [10:26] <dino> although, it isn't just about getting the element
- # [10:26] <dino> say, you want to position an object under the mouse
- # [10:27] <dino> but that object is in a complicated set of nested transforms
- # [10:27] <dino> what you need to know is, what top/left (or translate) do I need to put the object in the right place
- # [10:29] <dino> or, the other way around
- # [10:29] <anne> so you have a viewport coordinate and an element and you want to know how far they are apart?
- # [10:30] <dino> you want something at the top level of the document to track the position of something deeply nested and transformed
- # [10:30] <dino> you have a viewport coordinate and you want to know what that corresponds to in the coordinate system of a child
- # [10:30] <dino> note that SVG, the greatest specification ever to have been written, has something like this too
- # [10:31] <anne> ooh, can't we juse reuse that API?
- # [10:31] <dino> looking it up
- # [10:36] <dino> http://www.w3.org/TR/SVG11/types.html#InterfaceSVGLocatable
- # [10:36] <dino> anne: that has the helpful functions, like getTransformToElement and getScreenCTM
- # [10:36] <dino> that would be enough
- # [10:37] <dino> since you can get the inverse to do the reverse mapping
- # [10:37] <dino> however, there is a small snag with 3d transforms, in that you can't always describe the transform as a matrix (if there has been flattening)
- # [10:37] <dino> that's why we pass points
- # [10:37] <dino> ie. the matrix might be impossible to generate, but we can apply the same logic of the transform to the point to get the result
- # [10:38] <anne> so they won't work?
- # [10:38] <dino> i think they are a great idea in general, and work perfectly for 2d stuff
- # [10:40] <dino> but don't always work for 3d
- # [10:41] <dino> anne: what if we talked about it internally and sent you a proposal?
- # [10:41] <dino> to www-style or something
- # [10:41] <anne> the only problem is that they return SVGMatrix
- # [10:41] <anne> yeah, that'd be great
- # [10:41] <anne> please tag it cssom-view
- # [10:42] <anne> [cssom-view] fancy new features or something
- # [10:42] <dino> we were hoping you'd have an solution right away
- # [10:42] <dino> but obviously you are useless
- # [10:42] <anne> haha
- # [10:42] <dino> the good news is that we are equally useless
- # [10:42] <dino> meanwhile, i want you to fix the CSSOM asap
- # [10:42] <dino> it's horrible
- # [10:42] <anne> wow yeah, I agree, wanna take over?
- # [10:43] * anne is sort of heads down changing Web security policies
- # [10:44] <dino> no, i don't
- # [10:44] <dino> i don't even want to do the specs that I'm actually implementing :)
- # [10:44] <dino> if I had my way i would erase everything and start over
- # [10:45] <anne> yeah, would be much neater if bytes actually consisted of 10 bits
- # [10:45] <dino> actually, i was thinking 0 bits
- # [10:45] <dino> much much easier
- # [10:49] <anne> true, if we could go that far back maybe make sure humans are perfect right from the start so we don't have to go through all this comittee trouble
- # [11:22] * Quits: timeless (timeless@65.75.195.122) (Ping timeout)
- # [11:38] <anne> http://crisp.tweakblogs.net/blog/1380/css-compliance-which-browser-gets-this-right.html hmm
- # [11:38] <anne> Bert, ^^
- # [11:40] * Bert in a meeting, will look later.
- # [11:43] <anne> meetings so early? ouch
- # [11:43] <anne> and thanks
- # [12:20] * Quits: Lachy (Lachlan@85.196.122.246) (Quit: This computer has gone to sleep)
- # [12:25] * Quits: anne (annevk@85.196.122.246) (Ping timeout)
- # [12:33] * Joins: Lachy (Lachlan@213.236.208.22)
- # [12:33] * Joins: anne (annevk@213.236.208.22)
- # [13:22] * Joins: timeless (timeless@65.75.195.122)
- # [15:56] * Joins: ChrisL (ChrisL@128.30.52.30)
- # [15:58] * Joins: glazou (glazou@80.118.184.70)
- # [15:58] * Parts: glazou (glazou@80.118.184.70)
- # [16:06] * Joins: fantasai (fantasai@71.138.141.152)
- # [16:35] * Joins: sylvaing (sylvaing@98.247.143.102)
- # [17:29] * Quits: ChrisL (ChrisL@128.30.52.30) (Client exited)
- # [17:45] * Quits: sylvaing (sylvaing@98.247.143.102) (Ping timeout)
- # [18:16] * Quits: arronei (arronei@131.107.0.80) (Ping timeout)
- # [18:22] * Joins: arronei (arronei@131.107.0.80)
- # [19:15] * Quits: Lachy (Lachlan@213.236.208.22) (Quit: This computer has gone to sleep)
- # [19:16] * Parts: anne (annevk@213.236.208.22)
- # [19:44] * Quits: fantasai (fantasai@71.138.141.152) (Quit: leaving)
- # [19:44] * Joins: fantasai (fantasai@71.138.141.152)
- # [21:15] * Joins: anne (annevk@85.196.122.246)
- # [21:43] * Joins: Lachy (Lachlan@85.196.122.246)
- # Session Close: Sat Feb 14 00:00:01 2009
The end :)