Todo List
File Enesim.h
  • [1.1.0]
    • Implement OpenGL on every renderer with rop support
    • Export the pool API
    • To implement a nine-patch renderer we need to implement the sub surface concept. For that we need to modify the pool interface given that a sub surface is backend dependent
  • [1.2.0]
    • Add a path-follow-span, i.e a text span that can receive a shape and use that as the path to follow. We need more code on enesim to know whenever a renderer is of a specific type, similar to what we are doing on eon
    • Add rich text element
  • [1.3.0]
    • Add a PDF/PS surfce format
    • We have a performance problem when some renderer has changed. Basically on the practice we end having a full tree of renderers, several levels, proxies, whatever. When we need to know what area to draw we basically iterate over all the tree. That means that we start from the topmost renderer and then going down, even if no children has actually changed we still need to call a function on each child to see if it has changed or not. In case of damages it is the same. So we need a way to inform somehow whenever a renderer has changed "upstream" to avoid iterating over all the children Here upstream refers that if a renderer is for example added on a compound renderer, when the children have a _set() function it should call a function in the form of: enesim_renderer_notify_change(). This function should call a list of "listeners" of such "event" so for example the compund renderer can listen to that and again inform "upstream" of a change.
Global enesim_pool_opengl_new (void)
  • Create as many textures as we need to create the desired surface
Global enesim_renderer_checker_new (void)
  • Optimize the case where both colors are the same
  • There's a bug on the affine renderer, easily reproducible whenever we scale
Global enesim_renderer_compound_layer_new (void)
  • Handle the case whenever the renderer supports the ROP itself
  • Another way to optmize this is to make the setup() function of every layer thread safe, that way given that each layer does not depend on the other the setup can be done on parallel
Global enesim_renderer_image_new (void)
  • add support for sw and sh
  • add support for qualities (good scaler, interpolate between the four neighbours)
  • all the span functions have a memset ... that has to be fixed to: + whenever the color = 0, use a image renderer and call it directly + on sw hints check the same condition and use the image renderer hints
Global enesim_renderer_ref (Enesim_Renderer *r)
  • Add a way to get/set such description
  • We have some overlfow on the coordinates whenever we want to trasnlate or transform bounds, we need to fix the maximum and minimum for a coordinate and length
Group Enesim_Text
  • Move the actual font/face loader into a submodule that should fill a common structure
    • freetype
    • move our own loader from efl-research here, for legacy code
  • The possible cache we can have is:
    • FT_Face from memory (shared memory)
    • FT_Glyphs from memory?
    • Some kind of already rendered glyphs on a buffer
    • We can have a table per glyphs already renderered with a refcount on them

 All Data Structures Variables