Re: marker-pattern syntax

On Nov 30, 2012, at 8:36 AM, Tab Atkins Jr. <jackalmage@gmail.com> wrote:

> On Thu, Nov 29, 2012 at 10:27 PM, Cameron McCormack <cam@mcc.id.au> wrote:
>>  marker-pattern: 50% url() 50%;
>> 
>> The former interpretation would result in:
>> 
>>  X-------X-------X
> 
> You mean:
> 
> --------X-------X
> 
> 
>> My feeling is that these two meanings of offset cater to different use
>> cases:
>> 
>> * the former interpretation is for sliding the marker pattern so that it
>> looks nicer at the start of the path
>> 
>> * the latter interpretation is for ensuring that the marker pattern isn't
>> painted at the start/end vertices of the path (since they might otherwise
>> collide with other markers or graphics there)
>> 
>> The idea of an offset at the end of the path obviously only makes sense with
>> the second interpretation.
> 
> Not quite.  If makes just as much sense to have a "sliding" offset at
> the end, too, it just prevents any markers from painting there.  It's
> similar to padding in CSS.  It's indistinguishable from your
> interpretation if no percentages are used.
> 
>> IMO both are useful and we should try to accommodate them both in the
>> syntax.  I have no concrete suggestions for doing that yet.
> 
> comma-separated optional arguments at the beginning and end of
> repeat()?  Or just a single optional argument at the start giving the
> space that repeat() is repeated over, where percentages refer to the
> whole path(/segment) length?

Don't make it to complicated. a repeat function with complex syntax in it doesn't help anyone.

	[<distance> <url>]+

Is fine. if needed then a 'repeat' or 'no-repeat' at the end or beginning.

	[<distance> <url>]+ || [repeat | no-repeat]?

We should define either an offset like for stroke-dasharray, or the "end-clipping". I agree that you want to have clipping at both ends. But then I would go with the syntax of background[1] and background-size[2], which is familiar for web authors anyway:

	[<distance> <url>]+ [/ <marker-free-region>]? || [repeat | no-repeat]?

<marker-free-region> =  [ <distance> | auto ]{1,2}

First value for start, second for end. If one is specified, then the second is equal to the first. Auto means no marker fee region.

Worst syntactical case would be:

	20px url(#m1) 20px url(#m2)  20px url(#m3)  20px url(#m4) / 20% 10% repeat

For each sequence. The pattern is clear, and the marker free region is 20% at the beginning and 10% at the end.

The easiest way would be

	20px ur(#m1)

This way it is always clear which length value has which meaning. This isn't the case for 20px url(#m1) 20px for example.

We discussed marker-segment in the call yesterday and I am partly convinced that patterns are not the highest priority and we can have an easy syntax there.

	[<distance>? <url>]#

is sufficient enough mostly.

Greetings,
Dirk
	

[1] http://www.w3.org/TR/css3-background/#the-background
[2] http://www.w3.org/TR/css3-background/#ltbg-sizegt

> 
> ~TJ

Received on Friday, 30 November 2012 17:02:28 UTC