[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] edje gradient fill

On Mon, Aug 21, 2006 at 05:30:26PM +0000, jose_ogp@juno.com wrote:
> > All this solves one issue (specifying a 'dynamic' angle
> > e.g. corner to corner) but still doesnt' solve the main issue
> > I had. Namely: Draw a horizontal linear gradient completely
> > filling its bounding rectangle.
> 	The bounding rect of an (unrotated) gradient object is
> the gradient obj's rect, no matter the fill region or fill angle.
> If you want a horz lin grad 'filling' the grad obj then you
> would set the fill height to the obj's width and set the fill
> angle to -90.

Yes, I understand that. Now do it in EDJE with the position/size method
of specifying the fill... there is now way (currently) to make the fill's height
depend on the width of the part.

> 	If you want a lin grad object which has its fill 'from
> point a to point b' then you set the fill height to be the dist
> from a to b and the fill angle to be the arctan of the slope from
> a to b. This is a very standard sort of procedure - replacing two
> points by a distance and an angle.

Yep. This is exactly what I did. I just added a way of specifying this
in edje (so the themer doesn't have to do the calculation herself). 

> 	If you were texturing a rect obj with a lin grad object
> then you'd have a bit more flexibility since you then have two
> coord systems to refer to, the rect's and the grad's.. but you
> still have to do something like the above.. That's the way it has
> to be if you want only ONE notion of a linear grad, rel to ONE
> orientation, and rel to ONE method of specifying a fill that works
> for ALL texturing notions.

How does the current implementation of an evas gradient differ from "a
rect obj textured by a lin grad"? The rel1/rel2 inside the gradient
block i added are in the part's coordinates (or fixed relative "to" the

> 	So, if you want some simple way to get what you're after
> for lin grads within this general context, then maybe what you
> have now would be the way..

I'm definitely open to other options, I just haven't seen any yet that
let you do something as simple as a horizontal gradient filling its

> 	Just keep in mind that you are now introducing notions
> that refer to transformations like rotations, multiple objects
> that may refer to each other with each at differing sizes and
> rotations, etc..  This is never a simple thing to deal with,
> especially since scaling and rotating don't commute in general.

I haven't introduced anything regarding rotations. Edje is inherently
rect based (as is evas as far as I've seen). All I've done is increase
the flexibility of how a gradient is textured within its bounds. I'm not
happy about having two different fill notations, but I haven't come up
with anything better yet.

Adding a parameter to specify the axis that our angle is relative to
would be nice (x, y, xy, or yx). But we'd also need a way of saying
"make the width of the fill relative to the height of the part" and vice
versa. Maybe a "flip_axes: 1;" option?