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

Re: [E-devel] Evas 'shaped' gradient type



> >	This type, unlike the others, does not use a described
> > geometry, but instead uses an image to specify that.
> >	The type has as its params a string of the form:
> > 
> > 	"file:key:mode"
> > 
> > Each of file, key, and mode must be present.
> 
> personally i would have made this 2 function parameters - 
> fielname, key and then an enum for mode. then its split at
> the api level and no parsing need be done  :) 
> 

	The grad type api consists of one entry point:
evas_object_gradient_type_set(grd, char *type, char *type_params);
where the 'type_params' encapsulates type specific data that might
be needed or available for that type.

	This 'one-size-fits-all' approach has its obvious drawbacks..
and benefits (eg. one could have runtime loadable types without
needing any included files whatever).

	Let me try and explain why I went with this.

	I wanted an extensible set of grad types... Without the
above, we'd need to enumerate each supported type and then have
type-specific api functions of the form:
evas_object_gradient_type_blah_something_set/get(....)

	With things as they now stand, it would mean around 20+
api functions, and similar at the engines level.

	Without a decent framework for loadable object types,
I felt that going with the 'type/type_params' approach would be
best (of course an api function for listing the set of supported
types, etc.. would be good).

	If at a later point in time evas does get loadable
obj types, one would only need to deprecate the use of the
'type_params' string to deal with type-specific data, and
instead use whatever type-specific funcs would be available.

	As far as the shaped-grad-type-params-format goes:

	One thing that could be done instead of the 'file:key:mode'
format, is to use what is currently done internally by the image
loading/caching mechanism.. namely  'file://:key://:mode'.