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
