FXTF F2F Seattle 29 January 2014 minutes

Minutes from the F2F below (html version attached).

   - DRAFT -
FXTF F2F Seattle 2014
29 Jan 2014
Attendees
Present
Regrets
Chair
ed
Scribe
birtles
Contents
Topics
Blending & Compositing CR
Masking LC/CR, remaining issues?
ability to specify gradient midpoints
fill/stroke with background syntax
media query variables (aka css aliases)
CSSOM Value-based API
Custom filters removed?
backgrounds and colors and outlines in SVG
Summary of Action Items



  <sgalineau> call-in instructions in Location section of  
http://wiki.csswg.org/planning/seattle-2014


  <TabAtkins> ScribeNick: TabAtkins
Blending & Compositing CR

  <SimonSapin> (off topic) TabAtkins, I kinda feel display-box should be a  
longhand of display

  Nope, you don't. We had discussions about this, it's a very very bad idea.

  I can epxlain later.

  <smfr> http://dev.w3.org/fxtf/compositing-1/

  <ChrisL> spec link?

cabanier_: We changed the sections from 4 onward to be normative.
  ... There was a 3-week period for comments.
  ... There was a comment from Eric about a stale ref, which I removed.
  ... I've prepared a DoC.
  ... And we've been working on test cases.
  ... People have been contributing quite a few tests.
  ... Working on impl in 3 browsers.
  ... Right now, FF is probably the most stable.

heycam: Did you do all three?

cabanier_: No, separate engineers.
  ... People have begun experimenting quite a bit with it. We've done  
almost no evangelizing, but people get excited anyway.
  ... Some person made a bunch of cool demos:

  <cabanier_> codepen: http://codepen.io/collection/Kgshi/

cabanier_: [shows off some of the demos]
  ... So right now I think we're ready for CR.

TabAtkins: I've been meaning to suggest some editorial rewrites for some  
time, but that shouldn't block CR.

smfr: You've got some theoretical sections - I'd like to see more examples  
showing which CSS properties I can use to get each of the effects you're  
talking about.
  ... Like section 10.

krit: Canvas also uses this stuff.

smfr: Right, but I'd still like to see a simple CSS example.

  ACTION rik to provide more CSS examples in the Compositing spec.

  <trackbot> Error finding 'rik'. You can review and register nicknames at  
<http://www.w3.org/Style/CSS/Tracker/users>.

  ACTION cabanier to provide more CSS examples in the Compositing spec.

  <trackbot> Error finding 'cabanier'. You can review and register  
nicknames at <http://www.w3.org/Style/CSS/Tracker/users>.

  ACTION rcabanier to provide more CSS examples in the Compositing spec.

  <trackbot> Error finding 'rcabanier'. You can review and register  
nicknames at <http://www.w3.org/Style/CSS/Tracker/users>.

  ACTION krit to action Rik to provide more CSS examples in the Compositing  
spec.

  <trackbot> Created ACTION-616 - Action rik to provide more css examples  
in the compositing spec. [on Dirk Schulze - due 2014-02-05].

heycam: What were the LC issues?

cabanier_: Just one from Erik, about a stale ref.

ChrisL: You still have a link to SVG Tiny in your abstract. It should be  
changed to SVG 1.1.

  Action krit to change the Abstract link to SVG 1.1 in Compositing.

  <trackbot> Created ACTION-617 - Change the abstract link to svg 1.1 in  
compositing. [on Dirk Schulze - due 2014-02-05].

heycam: The other changes in your DoC, what are they?

  <ed> it should also use the referencing syntax in the abstract, like  
"...sometext... [SVG11]"

cabanier_: They were from the previous LC.

ChrisL: You'd usually start a new DoC. Helps with patent issues.

  action krit to action rik to reduce the DoC to only the issues from this  
LC.

  <trackbot> Created ACTION-618 - Action rik to reduce the doc to only the  
issues from this lc. [on Dirk Schulze - due 2014-02-05].

ChrisL: [something about the wording of the abstract regarding the  
2dcontext reference]

  <ChrisL> its ambiguous on which spec is the normative definition

plinss: How are we on tests?

  <cabanier_> tests:  
https://github.com/w3c/csswg-test/tree/master/contributors/adobe/submitted/css-compositing

cabanier_: [brings up the repo with tests]

RESOLUTION: Compositing to CR, pending the edit nits brought up today.
Masking LC/CR, remaining issues?

krit: During the LC period I got a comment and an objection.
  ... clip-mask/etc take a <shape-box> argument.
  ... Which determines what box the coords are resolved against.
  ... Currently we're using the box keywords from B&B, plus margin-box.
  ... SVG objected.
  ... They make sense for CSS/HTML, but how do they apply to SVG?
  ... In SVG we have "bounding box", which is a tight bound around the  
shape.
  ... This doesn't include strokes/etc, just geometry.
  ... So we also have "stroke bounding box" which includes stroke/markers.
  ... Earlier in the week, we also discussed "viewport" in SVG. People  
asked about using the SVG viewport as the reference shape.
  ... Scaling coordinates by the viewport is actually rather common in SVG.
  ... So SVG thought it would be confusing to have "content-box" mean  
"bounding box".
  ... Similarly for stroke-bounding-box, and viewport of the SVG.
  ... I personally don't want to add three more keywords.
  ... I think content-box and bounding box are close enough to be useful to  
just use content-box.
  ... Similarly, I think border-box and stroke bounding box are probably  
close enough.

smfr: What about the bounds of filtered pixels?

krit: People suggested painted bounding box, but that's very expensive.

TabAtkins: Also infinite in some cases, such as blurs.

smfr: Does CSS define the bounds of box-shadow?

dbaron: No. Also, probably impossible.

heycam: I think I'd like to have all of the CSS-related names map to a  
single SVG-related one, like maybe "bounding-box", and also have  
SVG-specific keywords.
  ... I'd like to match the names up with getBBox extensions.
  ... Right now we have getBBox() and getStrokeBBox(), but we should  
probably have it take a dictionary of things to include.

krit: Does that imply we need another keyword for markers?
  ... Does the CSSWG support doing extra SVG-only keywords?

TabAtkins: I'm fine with it.

florian: Me too.

heycam: Does the CSSWG think it's a good idea to do the mapping between  
CSS and SVG?

TabAtkins: I think content=>geometry and border=>stroke kinda make sense,  
but there's no padding analog in SVG, nor marker analog in CSS, so it's a  
bad idea overall.
  ... I suggest for the svg boxes: svg([marker || stroke]?), similar to the  
bbox methods.

krit: I think it's [marker | stroke] - one implies the other.

heycam: Maybe not.

krit: Viewport.

TabAtkins: Don't want it at top-level, because it's a different meaning  
than CSS's viewport.

krit: So svg([[marker || stroke] | viewport])

heycam: I think it's weird to name it svg().

krit: Fallback to the initial value (border-box) if you specify svg() on  
an non-SVG element. Fallback to svg() (object bounding box) for reverse.
  ... So we also need this in mask-origin, mask-clip.
  ... Example: clip-path: circle() svg(marker);
  ... Circle starting in the center of the marker box, radisu equal to  
closest side.

heycam: Does the default-fixing (for putting svg() on an HTML element)  
happen at computed-value time?

TabAtkins: I think so, yeah.

smfr: Yeah, possible.

dbaron: Yeah. Maybe annoying.

krit: We may have the same problem in SVG later.
  ... If we take in CSS Shapes, for example.

ed: Would it be worth having the "fill" keyword there as well?

TabAtkins: Hm, I think so.

  <ed> having svg(fill || stroke || markers) would also match up with the  
paint-order property syntax

heycam: SVG text, the default getbbox() for text actually unions the glyph  
cells (rectangles). Same here?

krit: Yeah.

  <ed> spec link for paint-order, for reference:  
https://svgwg.org/svg2-draft/painting.html#PaintOrder

Bert: I think it's weird to see a function without parameters inside, like  
"svg()".

TabAtkins: You can say "svg(fill)" if you want.

heycam: Or just leave it alone - you'll get that behavior by default.

  <smfr> smfr: should we use up a function called svg() for something that  
retuns a box? Why not svg-box()?

smfr: I think it's a weird namespacing hack to use svg() here.

krit: My pref is to just use the keywords directly, and only allow one.  
Define them to be hierarchical - fill is inside stroke is inside marker is  
inside viewport.

TabAtkins: Still don't like "viewport" as raw keyword.

krit: viewbox?

heycam: I think it's maybe useful which ones to include. Maybe we can  
defer.

  <ChrisL> we have (geometric) bbox and decorated-bbox which includes  
stroke width, markers etc

heycam: I'd probably be okay with just keywords for now, and do union  
stuff later.
  ... Maybe use the words boudning-box, stroke-boudning-box,  
decorated-bounding-box, and...?

krit: viewbox?

heycam: Too wordy. fill/stroke
  ... Leave off marker for now, since I want it to actually mean the  
markers, not marker+stroke+fill.

TabAtkins: But you're okay with stroke meaning fill+stroke?

heycam: It does automatically - stroke bounding box is a superset of fill  
bounding box.

krit: Anyway, resolve on these and figure out details in the SVGWG meeting?

RESOLUTION: Use the keywords fill/stroke/viewbox for  
clip-path/mask-origin/mask-clip.

ed: The viewbox keyword, is that the viewport or the viewbox?

krit: They're the same geometric area.

TabAtkins: Only difference is the coord system established in each. And  
the shape functions so far don't use user-space units, so you can't detect  
that.

heycam: And if we did allow, viewbox is what you'd want.

krit: Last issue we discussed on Monday.
  ... about usou and obb.

TabAtkins: Just do what roc said.

krit: [explains the issue again for SVGWG people]

RESOLUTION: Use roc's definition of obb/usou in HTML content - same  
geometry, coord space is 1 user-space unit wide/tall in obb, user-space  
unit = CSS px in usou.

krit: I'd like to publish a new WD.

RESOLUTION: New WD for Masking.

  <birtles> ScribeNick: birtles
ability to specify gradient midpoints

  <scribe> Scribe: birtles

cabanier_: I wanted to show why there is a need for an explicit midpoint  
for gradients

TabAtkins: this is already in CSS Images 4
  ... if you just omit the color

cabanier_: but some people were confused by that... it doesn't really work
  ... I created this little application

  <cabanier_> sample application: http://codepen.io/adobe/full/fhnBJ

cabanier_: by clicking on the gradient line you can add color stuff
  ... and by dragging it to the left, you can see this effect as you  
approach the edge
  ... a line starts to appear
  ... your eyes play tricks on you
  ... if you copy this and enlarge in photoshop you'll see this line is  
actually not there
  ... it's just your eyes
  ... but to get rid of that you can add a midpoint
  ... and drag it along

  <cabanier_> example of the formula:  
http://codepen.io/adobe/pen/ced9e76d276a1d6613b529e8524e4cad

cabanier_: you fill it in with this formula
  ... by doing it this way you avoid the line
  ... you create a curve that avoids the appearance of sharp changes

TabAtkins: is there a theoretical justification for this formula?

ChrisL: yes, it's based on a power distribution
  ... it gives you curves but it doesn't give you continuity at where the  
curves join
  ... it's an improvement but it doesn't accomplish everything
  ... people think you can fix this by adding more color stops but apart  
 from enlarging your code

smfr: if we're using CoreGraphics which doesn't have this can we support  
this by adding color stops in the UA?

cabanier_: yes

florian: getting back to Chris' point, you will still have parts that  
aren't smooth
  ... should we try to solve that in one go?

cabanier_: not really, maybe in the future

TabAtkins: what would happen if you added multiple midpoints?

ChrisL: one describes a curve, two or more--the behavior is not defined  
and is not used in practice

TabAtkins: so more than one would be a syntax error

ChrisL: yes

leif: I saw a similar effect when dragging the stop and midpoint to the  
right

cabanier_: that's due to the response curve since your device is not linear
  ... that requires a different solution

heycam: we already have that in SVG, you can specify interpolation in  
linear or sRGB

cabanier_: yes

ChrisL: we don't yet have a way to ask for a smooth curve through points  
in a color space with C1 continuity
  ... although we do have that for paths now
  ... with Catmull-Rom curves in SVG2

RESOLUTION: change CSS Images 4's specification of colorless color stops  
to use Rik's proposal (i.e. use power curves)
fill/stroke with background syntax

krit: we decided we want to have fill/stroke properties on text in  
general, not just SVG shapes
  ... however, lately we realised we don't just want SVG paint servers but  
also images
  ... so you can use regular CSS images etc.
  ... the difficulty comes from referencing images that have fixed size
  ... if the area you are painting differs from the size of the image
  ... what do you do

ChrisL: that problem has already been solved for backgrounds

krit: yes that is the proposal
  ... but roc suggested we don't support attachment

smfr: what is the property?

TabAtkins: you can use 'fill' etc. on text

smfr: what is the bounding box

TabAtkins: I think we were going to use the box of the text?

smfr: use the background bounding box

heycam: with the box decoration break, it's not too much trouble to paint  
the text over and over again?

krit: without attachment you can't simulate some behaviors of  
-webkit-background-clip: text

smfr: the geometry of the image filling is exactly the same the geometry  
backgrounds will use

krit: the question here is not so much about painting CSS text but first  
how to use fill/stroke in SVG
  ... what do we do in SVG for multiple fill layers?
  ... I would like to use the same syntax as for background but without  
introducing extra properties
  ... we can do that later

  <dbaron> -webkit-background-clip: text -> background-clip: -webkit-text;

krit: for now just have the one property specifying the multiple layers

heycam: what are the different parts of background?
  ... if we are going to do some, we should do all?
  ... often you want multiple backgrounds so you can layer them all at once  
without doing different sizes
  ... do we need that complexity in SVG?

krit: it just falls out

heycam: as long as you can re-use your existing background stuff, then  
it's ok

TabAtkins: do you want to do the same thing for stroke?

krit: yes

smfr: so would you repeat the image like we do for backgrounds?

krit: yes, with the same syntax

TabAtkins: for SVG we'll ignore the <box> part of the production for  
<bg-layer>?

krit: not necessarily
  ... you might want to repeat the image

TabAtkins: that's <bg-size>
  ... the values for <box> don't make any sense for SVG
  ... do we want to add the SVG ones there?
  ... ('fill', 'stroke') etc.?

smfr: does fill/stroke just control what gets painted?

TabAtkins: yes

smfr: it seems a bit odd, different to what we have in CSS
  ... we can't do layered borders

krit: attachment doesn't make sense for SVG for now so it will just be  
ignored
  ... we might want to leave it out of the syntax

heycam: perhaps later we can talk about different stroke widths for each  
item in the list

smfr: it's interesting that you can do something in SVG that you can't do  
in CSS, namely repeating an image around the border

krit: I wanted to bring it up today because it's a CSS property and  
because we will use these properties for text in the future

ChrisL: it is nice for HTML to be able to color text with something other  
than a solid fill

TabAtkins: we can add attachment later and add it later if we decide it is  
sufficiently useful

RESOLUTION: Import the background shorthand syntax for multi-fill and  
multi-stroke into SVG minus the attachment part of the syntax

  <smfr> topic options: media queries, variables, CSS OM,
media query variables (aka css aliases)

  <dbaron> http://tabatkins.github.io/specs/css-aliases/

TabAtkins: CSS variables work really well for a lot of use cases but for  
some CSS preprocessors are still better
  ... for example, if you have an extended media queries, you are out of  
luck
  ... this is a proposal to define aliases
  ... it includes a declarative form that is equivalent to what  
preprocessors can do today plus a script-based form that extends it further
  ... this is my current proposal for declaring a custom media query
  ... this is a restriction that the custom name must contain and underscore
  ... there is a similar restriction in HTML where you want to define  
custom elements without clashing
  ... in that case they got around this by using dashes
  ... you have to include a dash in a custom element name
  ... in the same way, this requires underscores
  ... <idents> can use underscores but we've never used them

heycam: will you remove underscores from <ident>

TabAtkins: no, <ident> still includes them but we the language never use it

glazou: it seems like you're defining a media type

  <dbaron> (glazou doesn't like the parentheses)

TabAtkins: it's actually defining a media feature
  ... you need to use parentheses in @media since it's not a media feature
  ... but authors will soon stumble across that and work it out
  ... it should also be possible to set up a media feature via javascript
  ... you should then also be able to test for that feature using CSS  
markup including : and <
  ... the javascript can define a boolean, number or string
  ... this allows the style to react to something in its environment that  
can be controlled from script
  ... so modernizr could use this rather than defining styles on the body

dbaron: is there a use case for being able to set lengths

TabAtkins: probably but I'd like to defer that until I talk about OM
  ... I think it depends on what we decide on OM
  ... so I'd like to add that later

smfr: can you unset values?

TabAtkins: this is just a map so you can just unset as usual

SimonSapin: would the map already include the ones defined in markup

TabAtkins: yes, and I'd have to define the order

  <dbaron> dbaron: Can you put @custom-media instide other conditional  
rules (esp. @supports)?

TabAtkins: I assume no, the definitions are probably global but I can  
change this depending on what is reasonable for implementation

  <dbaron> dbaron: I'm fine with no.

TabAtkins: I haven't specified it here, but for example, if defined twice  
the last one wins, javascript wins over markup etc.
  ... standard precedence stuff

  <dbaron> TabAtkins: Also, no need for custom @supports stuff because you  
can use CSS.customMedia.set() with results of supports queries

heycam: I don't think we should have MapClass anymore
  ... no-one much likes it

TabAtkins: I want real maps but I don't care how to markup it up in WebIDL

heycam: I think we can come up with something else and then I'll let you  
know

TabAtkins: the selectors rule works the same way for custom selectors
  ... this is always going to be a pseudo-class
  ... (presents an example of a heading pseudo-class from the draft)

smfr: why is it :_heading?

TabAtkins: the _ is from the restriction I mentioned before, : is because  
otherwise it would be an element name

krit: that's not in the production

TabAtkins: yes, that should be there

  <dbaron> ?: Why have the : in the @custom-selector, rule?

  <dbaron> TabAtkins: Clearer that way.

heycam: what if you put an <ident> directly before the custom selector?

  <AdobeSeattle> p:_foo === p:matches(...)

heycam: e.g. p:_heading

TabAtkins: it just works because it expands to : matches

glazou: there are restrictions to what are allowed in a colon matches
  ... you should duplicate that explicitly here so it's a syntax error  
where the @ rule is defined

TabAtkins: sounds reasonable

  <dbaron> glazou: @custom-selector should be a syntactically-invalid  
@-rule if it doesn't meet the syntax requirements for what goes inside  
:matches()

  <dbaron> TabAtkins: I should special-case top-level :not() so that it  
expands into :not() instead of :matches() in that case.

glazou: I recommend we expand the :_heading example to include an  
expansion without the custom selector so that people don't think it's not  
just a macro

  <AdobeSeattle> No using custom pseudo-classes to define other custom  
pseudo-classes, because it hits the "no :matches() inside :matches()" rule.

  <dbaron> TabAtkins: ... not sure what I think of that

SimonSapin: why do we have that restriction: no :matches inside :matches
  ... this feature would be a lot more interesting without this limitation
  ... what is the scope of this rule?

TabAtkins: document scope

florian: you need to define that if a selector is not matched it is not  
invalid but simply not matched because it may be defined later

SimonSapin: does it update dynamically?

TabAtkins: yes

  <florian> you need to define that if a selector is not defined yet it is  
not invalid but simply not matched because it may be defined later

TabAtkins: that means you can actually define fallback

smfr: I think this needs more syntactical sugar so it's easy to remember
  ... they look like C preprocessor defines but they don't behave like that
  ... it would be easy to forget the colon when you use it

  <dbaron> smfr: in @custom-selector :_foo the : looks a it like a property  
declaration

  <dbaron> ... so the space couldend up on the wrong side

smfr: I like the feature but not the syntax

TabAtkins: happy to change the syntax

florian: this syntax proposed for media queries is fine, I think, but I  
can see the concern for selectors

  <dbaron> smfr: Also concerned about the extra parentheses in media queries

  <dbaron> dbaron: agree with florian... though I wouldn't mind seeing ()  
rules change

glazou: how does this relate to CSS hierarchies?

TabAtkins: it doesn't

glazou: does it impact it? is having both too much?

  <glazou> ScribeNick: glazou

Tab: nesting is very close if not identical to what we get from preproc
  ... I also have a proposal for script-based custom selectors

  … you define a name

  … a function and when it's evaluated

  … and a base selector that has to be fulfilled first

  … (tab reads spec)

  … based on mutation observers

  … whenever a mutation comes in we try to reevaluate the function

  heycam, re you afraid of style flashes because of events order and stuff?

  Tab, no

  Tab, was waiting for an infinite loop question

  florian, might be brilliant but :-)

  TabAtkins, very close to an existing lib by bkardell

  smfr, don't thjink WebKit will ever want to run JS in the middle here

  heycam, if you want to implement it yourself, you can set a classname  
 from a mutation observer

  smfr, I don't like it either

  florian, a way to retrigger evaluation of this?

  TabAtkins, there is something in the issue

  TabAtkins explains extra bits of the proposal

  SimonSapin, worth separating the API into two

  SimonSapin, first part substitutions

  SimonSapin, that part is less controversial

  TabAtkins, the script api of custom MQ is super powerful

  TabAtkins, I really want the MQ part

  TabAtkins, having to repeat MQ everywhere in your page is terrible

  TabAtkins, another option for script based selectors is assign a name and  
list of elements

  heycam, this is a simpler model

  <SimonSapin> glazou: Earlier we said we want to deprecate media types in  
favor of media features

  <smfr> ScribeNick: SimonSapin

glazou: that implies that web authors are gonna write @media (screen)  
instead of @media screen

  <dbaron> Tab^: being able to fill in a map walking over the document  
doesn't have much advantage over walking over the document setting a class

TabAtkins: If authors want to do that they can, still better than media  
types

glazou: it’s another argument against the () around custom media, or for  
allowing the current media types in ()

TabAtkins: disagree, media types a bad in general. Carry more that you want
  ... if you want to disable animations, you should target 'updates', not  
'print'

glazou: we will have to have a section mapping media types to lists of  
media features

florian: I think that’s a bad idea, they will just copy-paste that list
  ... It’d be better if they’d queried for just one feature

glazou: will follow up on email

  <glazou> TabAtkins, requesting a new ED

  <glazou> florian, find another name please

  <glazou> ChrisL, antialiasing ?

  <glazou> glazou, any objection ?

  <glazou> TabAtkins, preferred is to put the MQ part in MQ 4, ...

  <glazou> SimonSapin, er we wanted Selectors to be independent from CSS

  <glazou> SimonSapin, what about selectors API ?

  <glazou> TabAtkins, yes!

  <glazou> TabAtkins, MQ in MQ4 and Sel in Selectors ?

  <glazou> dbaron, API part not ready yet

  <dbaron> (script selectors)

  <dbaron> dbaron: but happy to see it go in drafts

  <glazou> TabAtkins, right

  <glazou> glazou, I don't want to see an at-rule inside the Selectors spec

  <glazou> TabAtkins, then Custom Selectors spec

  <glazou> glazou, fine by me

  <glazou> SimonSapin trolls Tab on spec dependencies

  <dbaron> SimonSapin: Aren't MQ also independent of CSS?

  <glazou> RESOLVED: MQ part of TabAtkins's proposal to be added to MQ4,  
new ED for Custom Selectors granted

  <dbaron> #now { coffee-break-after: always }

  <Bert> ScribeNick: Bert
CSSOM Value-based API

  <smfr> TabAtkins shows http://www.xanthir.com/b4UD0

TabAtkins: After long time thinking, I'm ready to propose one. Got  
approval from colleagues who would implement it.
  ... We implemented DOM2 and are trying to remove it now.
  ... Because it is terrible for many reasons.
  ... Exposing specialized forms for a property is probabbaly useful.
  ... But it is not a direct tranlation of the property.
  ... At base level I refuse that.
  ... Might be future level.
  ... DOM2 could not return value of a shorthand.

  <Rossen_f2f> LOL

TabAtkins: We should also make it look more like JS.
  ... And efficient.
  ... Looking at what we changed in propertie sover the years.
  ... Simple propoerties can later become complex, from one value to a list  
of values.
  ... Calling it "el.css" (rather than el.style), but it's just a name.
  ... el.css.backgroundImage (CamelCase)
  ... JS can now do things like .float, even if float is a keyword, because  
of the preceding "."
  ... E.g., width will be an array of length|keyword]
  ... If you assign a single value, it'll be equiv to an array with one  
value.
  ... The values are immutable values.
  ... Every "10px" object is the same single object.
  ... Poeple pushing for 64-bit ints.
  ... So next year we'll have fully immutable objects.

  You could write ".width= 5px" which looks exactly like CSS.

scribe: The "5px" is an immutable object.
  ... You can ask for the .px of 5px and get 5.
  ... When yu ask for getcomputedstyle, you'll get the em as well.

glazou: Can you ask fro something like ".%"? Syntax issue?

TabAtkins: 5px is CSS.px(5)

  <glazou> you cannot write el.css.width = 10% because % is an operator you  
have to use CSS.percent(10)\

TabAtkins: Constructor.
  ... After el.css.width = 5px you can get el.computedCSS.width.vw (and .em  
and .px and .percent) and it will be computed.
  ... Other accessors as needed.

krit: Is .css the element style

astearns: THis is inline style? Might want to call it InlineCSS.

TabAtkins: Yes, this is inline style.

SimonSapin: Percent is null?

TabAtkins: Yes, .percent cannot be computed, needs layout.

florian: Is there a typo in the example?

TabAtkins: Yes, sorry. Needs [0]
  ... List needs to have same value at given index all the time [?]
  ... Precise data structure, order of values.

glazou: If you query .width, I'd like to qurey waht the unit was, i.e.,  
get "px" back.

TabAtkins: Not in proposal right now, but planning to.
  ... If you pull a computed value, the unit may not be available anymore.
  ... It'll say "px" in that case, arbitrarily.

florian: So if a property accepts repeated foo and bar, an in next level  
it accepts repeated foo, bar and baz?

TabAtkins: In a list, you get first value in a list. It is an array of  
arrays in reality.
  ... After el.style.bgAttachment="scroll, fixed"
  ... you get: el.css.bgAttachment => [CSSVal("scroll")]
  ... and: el.css.bgAttachment.1 => [[CSSVal("scroll")],[CSSVal("fixed")]]

heycam: Thimgs that aren't lists, say a pair, how is that handled?

TabAtkins: Say you have <length> <length now and later we'll have <length>  
<ident> <length>
  ... First you would get el.css.foo => [1px,20px]
  ... Later you would get [1px,20px,...]

plinss: maybe don't return arrays and only return maps

szilles: You would have to cycl through array.

TabAtkins: Not super happy about my arrays, we can dcide for objects later.

astearns: Go with map idea and let Tab name everything. :-)

heycam: Shorthands also give an array back?

  <astearns> resolve to accept Tab's names for everything before he even  
starts

heycam: Say font, which has a slash?

TabAtkins: The slash is not returned, it is just part of the punctuation  
for ambiguous values.

plinss: personal preference, I hate single-letter names

TabAtkins: Named values must not collide with [?]

florian: Custom properties?

TabAtkins: Probably a list of tokens.

florian: At rules?
  ... selectors, etc.?

TabAtkins: Haven't thought through those yet.
  ... Properties most important for me.
  ... Is first step.

florian: At least think through it if it is compatible, without actually  
writing the spec.

heycam: Can you define operator overloading between customn types and  
stadard types?

TabAtkins: Yes, you can.
  ... Yes, overlaod can be parametried by type.
  ... So "5px + 10px" can be valid.

florian: And "10px + 10%"?

TabAtkins: Yes, that would return a calc() object.

  <heycam> |el.css.width + el.css.width| wouldn't work since they're both  
Array objects

TabAtkins: You cannot overlaod plain objects.
  ... Also have a proposal that I call CSS.convert()
  ... Converts as much as possible.
  ... var x = 32px;
  ... Now x.em is null.
  ... After el.css.fontSize = 16px, CSS.convert(x, el).em returns 2
  ... This is current;y a big braindump.
  ... Not asking for anything in particular right now.
  ... If it is terrible, tell me.

krit: Agenda request: filter effects and custom filters.
Custom filters removed?

  <krit> http://dev.w3.org/fxtf/filters/

krit: We had to limit tham already because of security.
  ... And they don't have the expected power.
  ... Current impls have problems with them.
  ... Especisally with combined customg and standard filters.
  ... (Not all impls.)
  ... We still believe in filter effects, but custom filters isn't the  
right solution.

Simon: We removed them in webkit, so supported.

krit: New feature would not use shaders.

ChrisL: Seems slightly sad since Microsoft added webGL support.
  ... But if two impls removed them already...

krit: No impls currently remaining.

Rossen_f2f: What was this again?

krit: Pixel manip with WebGL

heycam: Plan for replacment?

krit: Looking for more use cases, providing hit testing effects.
  ... hit testing was a pb with current solution.

heycam: So no future for generic shader-like thing?

krit: Many users were relying on pixel shaders, but they were security  
threat, so we had to limit them already.
  ... Couldn't actually llok at color value.
  ... We want to come up with a proposal, nd want feedback.
  ... More fous on use case of CSS.

heycam: A bit afraid to geta 100 different canned effects...

florian: What is th proposal?

krit: Not is presentable shape yet.

Rossen_f2f: Can we remove after seeing the new proposal?

sgalineau: But it is holding up the spec.

ChrisL: Are you asking to defer removal a bit?

sgalineau: The feature will go away, so what do we get by keepin git in a  
bit longer?

krit: I'm more focussing on SVG filters at th moment, and bringing that to  
LC.

  <sgalineau> the feature would end up at risk so not sure what the value  
of keeping it around

plinss: So take out? move to future level?

krit: Otherimpls might take it up again.

Rossen_f2f: Like to defer by a week.

krit: OK with me.

sgalineau: What do we get in a week?

RESOLUTION: take custom shaders out in a week, unless somebody objects  
before that.
backgrounds and colors and outlines in SVG

shepazu: Sometimes want to use outlines and colors, e.g., on hover.
  ... SVG doens't have on-hover effetc on it sown.
  ... Have to find the bounding box yourself.
  ... These effectsdo no affect flow.

krit: :hover is supported.

ChrisL: What spec?

krit: it is automatic.

shepazu: Is this a terrible idea?
  ... Would we allow whole background thing, or just color?
  ... Fill area would be bounding box of element.
  ... Use case is hover.

krit: Why not add an element behind it?

shepazu: Kind of a pain. I've done it.
  ... Keep track of transforms, etc, yourself.
  ... It is not perfect, but it is a start.
  ... Could add stroke effetcs to the outline also, vector effects.
  ... But simple thing now, and rest for futire.

heycam: [showing something]
  ... Approaches in the past included filters, and filling boundign box  
with color. Bit of a hack.

shepazu: I prefer "on hover, background = white"

krit: Sceptical about background. Don't see use case.
  ... Dont think thi is what you really want to have.
  ... Consider a complex shape, rectangle behnd iit is not what you want.

simonf: repeated images with fill?

krit: Yes, just decided today :-)

shepazu: I suggested things that don't change reflow.

  [discussion of what it shuld look like for differnet shapes]

shepazu: SVG often used for icons.

krit: Icons dfon't have hover.

simonf: Often element behind the icon has the hover.

krit: Outline for accessibility.

shepazu: I'd like to find out the concerns of the CSS WG with this.

  [CSS WG has no opinion]

ChrisL: More concensus on outline than on bg

florian: CSS doesn't have def of where outline goes, does it?

dbaron: Correct. I have thought about it, but not finihed.

florian: I remember something about 3d transforms making outline harder.

krit: Outline gets smaller when object is smaller because of clip path,  
but we decided recently that outline shoulf actually be clipped.

  <ed> svg tiny 1.2 has viewport-fill and viewport-fill-opacity properties  
that are similar to what shepazu is asking for with bg, though more  
limited in which elements they apply to

heycam: Does CSS define outline is outside the box?

dbaron: We have or had an outline-offset.

florian: I tink we have neither a def nor interop.

leif: Significant latitude for impls.

ChrisL: That was certainly so with the orig def.

leif: Not even defined if it is on top of everyhting, or only on top of  
the elt.
  ... But outline-offset is not problemeatic, but don't know about interop.

  [End of meeting]
Summary of Action Items
  [End of minutes]
  Minutes formatted by David Booth's scribe.perl version 1.138 (CVS log)
  $Date: 2013-04-25 13:59:11 $

Received on Thursday, 30 January 2014 01:36:17 UTC