SVN revion 2009-11-02 - r43404
Table of Contents
Important Note: the included code should be used only as conceptual idea of how something works.
This document is incomplete, you are welcome to fill it up with useful functions of EFL, just think on this document about a fast list of features reference of EFL/e17
EINA
Accessor
Accessors allow a random access of the data of a container. They can access an element at any position.
Arrays
Create and manage arrays, very fast access to data list.
Benchmarks
Allow you to add benchmark framework in a project for timing critical part and detect slow parts of code.
Convert
These functions allow you to convert integer or real numbers to string or conversely.
Cpu
Get the features of a cpu, like mmx, se, altivec, etc
File
- list the content of a directory, recusrsively or not, and can call a callback function for eachfound file.
- split a path into all the subdirectories that compose it, according to the separator of the file system.
Hash
Hash management
Hash functions are mostly used to speed up table lookup or data comparison tasks such as finding items in a database, detecting duplicated or similar records in a large file, finding similar stretches in DNA sequences, and so on.
Rectangle
Rectangle coordenades and calculations
Stringshare
These functions allow you to store one copy of a string, and use it throughout your program.
It sounds like micro-optimizing, but profiling has shown this can have a significant impact as you scale the number of copies up. It improves string creation/destruction speed, reduces memory use and decreases memory fragmentation, so a win all-around.
Trash
Instead to malloc/free pointers, just put them in the trash, you can reuse it later too, you can free the entire trash later. FIXME: is that ok ?
List
Lists management
- for (foreach)
- free lists
- next/prev/last
- append/prepend/*relative
- data get
- counter
- find
- sort
- remove
- promote: move the specified data to the first of the list
- nth: get the nth number of the member in the list
- merge/split
- iterator
Iterator
This is like a cursor to access the elements sequentially in a container
Lalloc
Lazy Allocator, that is, for lazy developers or ppl that has a cheapo keyboard. FIXME
Log
Functions to add logs in your code with level of verbosity control and the management of specific-code logs
EINA_LOG_ERR("BIG FAT ERROR!"); EINA_LOG_INFO("Message only visible running app with high log level set"); EINA_LOG_DBG("Running foo, only with big verbosity");
Magic
Magic checks (WTF, better description) FIXME. Add example FIXME
Matrix Sparse
What's that for, what means the sparse thing there ? FIXME
Red & Black Tree
Self-balancing binary search tree, a data structure, good for use in associative arays, very efficient and fast, removes and insert intelligently the data on the tree, so it is balanced for optimization reasons. FIXME ?
Memory Pool
FIXME: description FIXME: elements:
- register/unregister ?
- malloc/realloc ?
- add/del/free ?
- statistics
Modules
Which kind of modules ? eina modules so extra libs features ? FIXME
Safety Checks
Set of macros to check for parameters or values that should never happen, doesn't abort the program but it logs instead
The meant of this is to remove possible segfaults when they will be not so important and continue with the process of program
FIXME: is this code good ?
EAPI void my_func(Ethumb *e) { EINA_SAFETY_ON_NULL_RETURN(e); // return if our pointer is null do_something;
Tiler
FIXME: description repetitive fill for rectangles (???)
MACROS
FIXME: Add description of these usages:
- EINA_WARN_UNUSED_RESULT
- EINA_ARG_NONNULL
- EINA_DEPRECATED
- EINA_PURE
- EINA_UNLIKELY/LIKELY
- EINA_FALSE/TRUE: equivalent to FALSE/TRUE macros
Evas
- Freeze events
- Check if mouse is inside an object
- events add/remove/repeat/check/propagate(to_parent)/etc
- Clip objects
- Layer levels, raise/lower, etc
- Name get/set/find
- Position move/resize/geometry/min/max/aspect/align
- Visible hide/show/visible
- Color Get/Set to an evas object
- Anti_alias
- Scale
- Retrieves: position, which object in pointer, which on rectangle, number (which) of objects in a rectangle (zone),
- Precise (collision detection?)
- Stack
- Get object in a relative way, like: above of, lowest object (position), below of, etc
- Font: Path/List/Append
- norender: Update objects but not render anything
- Image: add/filled/border_no_scale/border_fill/tiling_fill/size_get|set/alpha/smooth/preload(in_background)/reload/scale/size/dpi
- Map: transformation of evas objects
- rotation
- distortion
- zoom
- smooth set/unset
- alpha
- dup
- coordinates
- UV texture
- vertext color
Smart Evas Objects
Smart Evas object can be defined as the hability to create one or more evas objects with default states/values/capabilities, you can create then your own type of objects with your desired function calls on it, Smart Evas Objects are a container for child objects
- Retrieve evas_smart from objects, retrieve data from evas_smart, etc
- Members: add/del member objects to a smart object
- Callbacks assign to events for smart objects
- Recalculation need lags
- Move children objects relative to a given offset
- Clip
- Box
- Table
Object Functions
- Gradients: Color stop, angle, colors, fill, offset, direction, type
- Lines
- Poligons
- Rectangles
- Text
- Font set, get, source
- Styles
- Shadow
- Glow
- Outline
- TextBlock
- Styles
- string_range_get
- markups
- cursor new/get/free/node/char_next|last|first/pos_get|set/compare/text_append/format/node/char_del/range_del/
ECORE
Main Ecore
Main features of ecore:
- Spawned Process signals
- State: Pauses a process (STOP signal), Continue it, Interrupt, Quit, Terminate, Kill, Hup
- Spawning Functions
- Priority get/set
- Run in Pipe mode. Data send to the child process received from stdin.
- Tag: set the string tag for a process
- Pid Get
- Retreives: command of spawned process. Data attached to process
- Idlers: callbacks called when the program exits or is in idle state
- List: add a handler, set it as first on the list, etc
- When: You can set a handler for when the program Enter on the idle state, when Exits, or During it
- File Descriptors (listeners of standard read/write/error? FIXME)
- get if a file-descriptor read, write, error, of boths
- callback to call if the event ocurrs, with the data to pass, and which element (r/w/e) to watch to a specific file-descriptor
- Timers
- Get times (system, last loop stopped)
- Add a timer to run after a given time (may loop)
- Interval get/set of the ticks to the timer
- Delay add for the next occurence
- Pending time get
- There's also the pollers that calls a function every X interval of time
- Loops
- Iterate: runs a SINGLE iteration of the loop to process all the queue
- Loop: run the main loop, quit it, etc
- Events
- Handlers: You can add handlers that are functions called when a event is happened, like a singal received, when teh program exits, or when it is connected.
- Keyboard and Mouse management
- Animators
- Add a animator to tick off at every animaton tick during main loop execution.
- Set the animator call interval in seconds.
- IPC
- STR
- Encoding conversor (txt)
- X Atoms
- window
- XDND
- client ID
- type of window
- state of window
- X Cursor: Type of cursor (image/mode)
- X
- randr
- window remove/add/toggle
- window state
- selection: primary/secondary/xdnd/clipboard
- key up/down
- mouse double click time set
- mouse move position
- move/resize windows
- title window
- alarms
- urgent
Config
Complex and pretty complete configurations system
- Listener: you can set a callback for when a configuration file is changed
- Get/Set values on the config file, they can be different types of values, even ARGB ones
- structures: structures of configurations
- bundle ?
Con
Connections / Sockets handler functions
- Add/del/connect: connections with the sockets/servers
- States: Retrieve if is connected, the list of clients, number of bytes transmitted, the IP of the remote connection, etc
- Send/Get: send or receive data to/from server
- limits: set limits of clients to handle
- SSL: SSL featured
- URL: url handlers
- FTP: ftp upload type support
Data
Contains threading, list, hash, debugging
IMPORTANT NOTE: most of the things are moved to Eina and you should use Eina instead, but other things may work a bit differently like the non-sequential access to list elements. Note too that most of them will be possibly deprecated in the future
- Hash: compute hash value of a string, some hash management, etc
- Double linked lists mode
- Binary heap (binary tree?)
- trees
- string buffer
Ecore_Evas
Evas Wrapper for Ecore (short name: EE)
- Engines: Query if a particular rendering engine is supported on the target machine. List available engines.
- Create: Create new ecore_evas objects
- Data: get/set data associated to an EE
- Event Action: move, resize, show, hide, delete, focus, sticky, geometry, rotate window (FIXME: which tipe of rotation?), shape, alpha, raise/lower/layer, activate (focus via WM), title, name_class, min/max_sizes, size_step, cursor, border, ignore_window(override), maximize/fullscreen/iconize, events_ignore, associate_object...
- Event Callback: mouse set (FIXME move?), post_render (post mouse event callback)
FrameBuffer
Framebuffer management
- Keyboard/Mouse events
- Size_get
- Calibrate
File
File management
- Misc: is_dir, exists, size_get, modification_times, mkdir, rm, cp, mv, links, filename/dirname, can_read/write/exec, ls, escape_sequences_add, remove_extension, dir_is_empty
- Monitor a path with inotify/polling
- applications: (talking about their executables in $PATH), check if is installed, list, etc
- Download: downloads a file from url with a good number of features like progress
Getopt
Powerful getopt (commandline options) system. it supports long and short options
- Duplicated entry's check
- Args Get
- Help: show list of options in a nicely formatted way
EDJE
Edje
- Frametime: fps
- Freeze: stop/start
- Scaling factor
- List groups
- Data Get
- Cache sizes: Collection/File/Color/
- Color class
- Text Class
- Sizes: min/max/aspect for the object
- Signals
- Play/Pause states
- Animation state
- Message send to an object
- Parts
- Check existance
- Text get/set/insert/selection
- Swallows get/set
- Dragables
- Boxes insert/add/remove/append/prepend
- Tables
- State get
Edje Edit
- Groups
- Create new groups
- Manage groups
- Size min/max set for groups
- Data
- List data items inside a data block
- Color class management
- Text
- Text Style list (font?)
- Tag names list/get
- Tag add
- Parts
- List
- Add
- Check if exist
- Move position of part
- Names management
- Clip
- Get Source/Effect
- Mouse get/set events
- Dragables
- States
- list/get/add/del/exists/copy
- rel1/2, offset
- color state
- align/min/max/aspect
- fill
- visible
- Text
- ...
- Images
- ...
- Spectrum
- ...
- Gradient
- ...
- Programs
- ...
- Script (get, only)
EDC Reference
http://docs.enlightenment.org/auto/edje/edcref.html
ETHUMB
Generate Thumbnails of multiple file formats, with multiple features like size, duration, format, crop, quality, etc
ELEMENTARY
Widgets library, specially designed for embedded devices so, finger usage, but it can be used for anything, is fast and very light
- scale
- style
- Finger size set/get
- Adjust size of element for finger
- Focus object
- Focus allow object
- Scroll hold push/pop
- Freeze push/pop
- BG
- icon
- image
- box
- button: label/icon/style
- scroller functions
- label
- frame
- table
- clock add/set_time/edit/properties/seconds
- layout
- notify
- notepad
- anchorview, anchorblock
- bubble
- photo
- hoversel (FIXME: over-selection tooltip options?)
- align items
- menu
- slider
- genlist
- checkbox
- radiobox
- pager
- slideshow
- progressbar
- spinner
- index
- photocam (FIXME: webcam?)
Enlightenment 17 API
- e actions
- alerts
- bg add/del/default/update/handler/zone/file_get
- bindings modifiers: mouse/grab/find/edge¿?/signal/wheel
- border: new/ref/zone/desk/show/hide/move/resize/layer/raise/lower/stack/focus/shade/maximize/fullscreen/iconify/stick/pinned/find_by_*/idler/menu/close/kill/icon/bindings/ping/focus/cancel_actions(move,etc)/immortal/border_under_pointer_get/wrap_to_center
- box
- canvas
- color class, color copy
- dialog: button_add|focus/title/text/icon/border/content/resizable/show/
- config_data
- config_dialog new/view/find/get/set
- config: (check struct for details)
- configure (FIXME: ?)
- confirm_dialog: yes/no/del
- container: container inside a root window: new/show/hide/get/number/move/resize/raise/zone_get/shape/border_* (FIXME: = window?)
- datastore (FIXME)
- desk: name_set|add|del|update/show/last_focused/next/row/col
- desklock
- dnd: object_set/move/resize/idler/key_down|up/add/inside/register/responsive/
- dpms
- editable: (set/get)_theme|pass|text|insert|cursor_(pos|move|show|hide)|selection|+word
- entry_dialog
- entry: add/text/pass_set/size/focus
- e_exec: exec/pid_find
- exehist
- filereg FIXME
- flowlayout FIXME
- fm: file_get|set|rename|del|flush|dup, add/path_set/theme/underlay/all_sel/path_get/parent/config/selected_list/file_show/pan/info/geometry/mount/data, hal/storage_add/volume_add/mount_add/show_desktop_icons/volume_list_get, mimes, operations
- focus: event_mouse_in|out|down|up, focus_in|out, setup, setdown
- font
- gadcon: full_manage, popup
- grabinput (FIXME)
- hints
- e_icon: add/set/edje_set/smooth/alpha/preload/size/fill/scale/data
- ilist (FIXME)
- init: show/hide/title_set/version_set/status/done/undone
- menus
- e_manager: (root application) show/hide/new/move/resize/raise/keys_grab
- maximize
- menu: new/activate_key|mouse/title/icon/category/post|pre_activate_callback/item_new|nth/icon_set/label/submenu/separator/check|radio|radio_group|toggle/callback/realize_callback/submenu_pre|post_callback/drag_callback/item_active/idler
- module: all_load/new/save/dir_get/enable/disable/save_all/find/list/dialog_show/delayed_set/priority_set
- e_msg (FIXME)
- object: alloc/del/type/ref/error/data/references
- order
- e_pan: (FIXME)
- path
- place: region/cursor/manual
- pointer: hide/size/type/idler
- popup: new/show/move/resize/ignore_events/edje_bg_set/layer_set/idler_before
- powersave: min/max/get/set
- remember
- resist border position border|gadman
- shelf
- slider (widget)
- spectrum
- stolen: win_get|add|del
- table
- theme
- e_user: homedir_get dir_get desktop_dir_get icon_dir_get
- utils: misc utilities
- widget: aspect, button, check, config_list, cslider, entry, flist, framelist, frametable, fsel, focus/del/active/disable/on_focus/on_change/data_set|get/size/sub_object/resize/can_focus/focused/change/pointer, ilist, image, label, preview, radio, scrollframe, slider, spectrum, table, textblock, toolbar, toolbook
- e_win: new/show/move/resize/raise/placed_set/shaped/evas_get/borderless/layer/sticky/move_callback_set/resize/size/step/title/border/centered/dialog/no_remember
- xinerama update/screens_get/fake_screen_add
- zone: name_set/move/resize/current_get/bg_reconfigure/flip_coords/desk_count|flip|linear_flip/flip_win_disable
MACROS
- Intersect
- inside
- contains
- e_free