Evas is a clean display canvas API that implements a scene graph, not an immediate-mode rendering target, is cross-platform, for several target display systems that can draw anti-aliased text, smooth super and sub-sampled scaled images, alpha-blend objects and much more.

Software

Documentation

ROADMAP

Features for future versions.

1.1:

  • Text-grid object: That object is needed for a terminal application to not have the overhead of one text object per grid element of the terminal. The next step would be to write a smart object, then edjify all this (theme would manage scrollbars, etc...). The terminal application would provide multiple tabs, one shell for each tab. On the evas side, we need to:
    • [DONE] set (x,y) grid element to a char or UTF-8 string
    • [DONE] set grid size of the cells
    • [DONE] set background and foreground color
    • set a background if background not transparent to char
    • [DONE] keep track of which chars changed (maybe just track rows that changed and each row has a first/last char for a run of chars that changed)
    • be able to blit (copy) the array or sections of the array for scrolling
    • Could expose this via shift type functions. Either shift chars to the left/right with wrapping, rows up/down, or columns left/right. The possibility for custom copies may be available, not sure if it would serve any purpose though. --mekius
    • [DONE] set a "run" of chars (eg just set a string without changing fg/bg color per char - just use the given fg/bg color for the run of chars)
    • [DONE] set font / size
    • [DONE] set style for each grid element (bold, italic, underline, other ?) using a flag for each cell
    • To expand on this maybe we can use start and stop flags that way we can easily turn the escape codes (I think that's how they do color/styles) from the shell into flags? --mekius
  • Proxy objects - be able to mirror one object somewhere else so if the original changes the proxy changes too
  • Map allows for meshes of vertexes to do proper shading and be able to wrap single rectangular objects around more complex 3D objects
  • Filter objects - allow objects to apply filters to other objects and the canvas in general like blur, sharpen, re-color etc.
  • Generic clipping - any object can clip any other using its alpha channel
  • Improve textblock to handle not just arabic but also hindi shaping and be much more optimal with large blocks of text and queries
  • (Maybe) Move many larger memory primitives to be references, not pointers (like Evas_Object *), so we can check correctness and move the objects around in memory to do "garbage collection" to re-compact memory and reduce fragmentation
  • FBO render target support for GL engine
  • Text and Textblock need to be able to set style (bold, italic etc.) separately from just font