- From: Dirk Schulze <dschulze@adobe.com>
- Date: Wed, 2 Jan 2013 09:55:09 -0800
- To: Yves followdsvg <svgadopter@gmail.com>
- CC: "www-svg@w3.org" <www-svg@w3.org>
Hi Yves,
Thank you very much for your feedback and the detailed description. The SVG WG will review your proposals and discuss them in the weekly telephone conferences. I will reply to the individual proposals in behalf of the SVG WG once we discussed them.
Greetings,
Dirk
On Dec 12, 2012, at 3:24 PM, Yves followdsvg <svgadopter@gmail.com> wrote:
> Hi,
>
> I don't know if it's the right place to post but here are some thoughts about
>
> https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html
>
> (0) Maybe add some notes about valid/safe values for coefficients with minimal requirement
> -----------------------------------------------
> I (think I) understood that coefficients are unbounded.
>
> >https://dvcs.w3.org/hg/FXTF/raw-file/tip/filters/index.html#feColorMatrixElement
> > Values outside the 0..1 range under- or oversaturates the filter input image respectively
>
> I heavily use values such as 256 for feColorMatrix.
> I use them so that, after computation, an input value in range [0,1] maps to
> 0 if input was 0,
> 1 if input was > 0.
>
> Should implementations ensure that summing won't exceed the capacities of their internal "storage" ?
> (Of course they should but maybe one can add some words about it ?)
>
>
>
> (1) feDropShadow : angle and distance instead of (or along with) dx,dy
> ----------------------------------------------------------------------
>
> Instead of dx, dy for offseting the dropshadow I'd rather see two properties "angle" and distance.
> (think gimp drop shadow vs photoshop).
> Valid values for angle would be [0,360[ with lacuna value of 90 (or "globalLightSource" ?)
>
>
>
> (2) feDropShadow : globalLightSource
> ------------------------------------
>
> Another valid value for angle could be "globalLightSource"
> with globallightSource a new property of the svg tag (or any group tag ?) (with a lacuna value of 50%, -infinite)
>
> For every shape, the angle is calculated by taking the center of shape and the "position" of a global light source.
>
> So after you designed your whole scene, if you decide the sun is at noon instead of 11am,
> you won't have to look after every shape to change this dx,dy you just set the sunposition of svg and voilà.
>
> I know there could be more than one light source in a scene. But it's better than nothing (and better than just dx,dy)
> Maybe we could use xlinking instead of just "globalLightSource" ?
>
>
>
> (3) feDropShadow : Spread property
> ----------------------------------
>
> I think feDropShadow lacks a spread property. This could be simulated using a feMorphology as first stage.
>
> The result of a ‘feDropShadow’ filter primitive would be equivalent to the following:
>
> <feMorphology in="alpha-channel-of-feDropShadow-in" operator="dilate" radius="spread-radius" />
> <feGaussianBlur stdDeviation="stdDeviation-of-feDropShadow"/>
> <feOffset dx="dx-of-feDropShadow" dy="dy-of-feDropShadow" result="offsetblur"/>
> <feFlood flood-color="flood-color-of-feDropShadow" flood-opacity="flood-opacity-of-feDropShadow"/>
> <feComposite in2="offsetblur" operator="in"/>
> <feMerge>
> <feMergeNode/>
> <feMergeNode in="in-of-feDropShadow"/>
> </feMerge>
>
> maybe it could accept neg values for radius then the operator feMorphology would be "erode" with a radius of "-spread-radius".
>
>
>
> (3b) feMorphology : new operator "spread"
> ---------------------------------------
>
> instead of juggling with erode or dilate one could define a new operator for femorphology ("spread" ?) which accepts positive or negative value. With positive values it dilates with neg it erodes.
>
>
>
> (4) feTurbulence : new type "random"
> ------------------------------------
>
> add a new algorithm that returns a value in [0,1] by applying the classical random() for every "dot".
> Basefrequencies could accept integers that would be the size of the dots.
> Usefull for layer effect like diffuse (and deliberate pixelation if you play wwith base frequencies)
>
>
>
> (4b) feTurbulence : new property "preserveGrey" (sorry can't find a better name)
> ------------------------------------------------
>
> This property will accept any combination of R,G,B,A (eg : "RB") ; lacuna value would be "";
> When set, the result of feTurbulence for every channel listed in property is "weighted" so that sum() = sum(grey).
> It would be usefull when you want to do a feDisplacementMap(scale) followed by a Offset(scale/2,-scale/2) and be sure it would not move too much.
>
>
>
> (5) feDisplacementMap : allow "none" in addition to "R,G,B,A" for *ChannelSelector
> ----------------------------------------------------------------------------------
>
> Sometimes you don't want to displace along one axis. For now you need to empty one of the channel. This looks very uneccesary to me.
>
>
>
> (6) feComposite : new property "alpha"
> --------------------------------------
> fecomposite : please, please, please allow computation to exclude the alpha. Everything would be that much easier without this alpha
> May I suggest an alpha property that indicates how to handle it ?
> valid values would be :
> "k" => compute as usual (would be the lacuna value)
> "in", "in2" => alpha output = alpha of input 1 or 2
> [0,1] => alpha output = const
>
>
>
> (7) 4 new in sources for filter
> ------------------------------
>
> StrokeGraphic + FillGraphic (~= SourceGraphic)
> StrokeAlpha + FillAlpha (~= SourceAlpha)
>
> StrokeGraphic => same as SourceGraphic but without fill property (like if all fill properties of elements were set to "none")
> FillGraphic => same as SourceGraphic but without stroke property (like if all stroke properties of elements were set to "none")
>
> Yeah I already got a response by Jasper van de Gronde about this last one but it was a bit off topic.
> We talked about speed issues of femorphology. But if femorphology could be solution to get the stroke for some simple case,
> I think it would be more convenient to have those 4 new sources. For me, StrokeGraphic looks more usefull than the existing StrokePaint for exemple : it could be use to make complex borders (groove, double, bumped...)
>
>
>
> -------
>
>
> What I missed the much in svg for now :
> meshes gradient (or diffusion curves ;) ),
> being able to offset the stroke so that it is fully outset (and not 50% inset, 50% outset)
> natural y (viewport 1,-1 is not a solution because of font going top/down)
>
>
> Thank you for reading.
>
Received on Wednesday, 2 January 2013 17:55:24 UTC