Hi!
You might have noticed that there are some new commits on the
genete_new_cairo_core branch. In the last few days my mind has been boiling
facing some problems on the strategy I planned for the Cairo render
implementation.
One of the things that bugs me more of the original strategy, is that there
were needed to convert the pixels from one format to Cairo format in
several places because the render is made on the Synfig surface.
I tried to fix this doing the following steps:
1) Define a CairoColor class with the same interface that Color class has.
Currently is a separated definition but it can be done using a template as
eldruin is doing it his own branch.
2) Using CairoColor define a CairoSurface class that has similar interface
than the synfig Surface class and so it can be used to render the document
using a CairoSurface but the SOFTWARE render method. The idea was to make
both classes handled by one ancestor one and use the ancestor as the class
to pass to the render routines. In practice it wouldn't be possible unless
the ancestor class has both CairoSurface and Surface interface members
implemented as virtual. In any case, the render methods should extract the
type of surface to decide which interface to use making it not transparent.
So at the end, it is needed to modify all the render functions to use one
or other class and the idea of transparency of the CairoColor integration
fails.
So I've came up with a new idea. Surface is currently inherited from
etl::surface<Color, ColorAcumulator, ColorPrep> (all based on Color class).
What if I extend the Surface class to inherit from etl::surface<Color, ...>
and also from etl::surface<CairoColor, ...> ?
This way, this super surface would use one or other interface depending on
the render method passed at time of creation.
I think that it would solve the interface problems because the distinction
between one or other color type is handled internally by this super Surface
class and the layers only need to tell the surface that the geometry has to
be painted on it. In fact the layers shouldn't need to know the type of
color that Surface holds.
I need to review this idea deeply. Please stay tuned.
Cheers!
--
Carlos
http://synfig.org
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Synfig-devl mailing list
Synfig-devl@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synfig-devl