Added some missing files for make doc support

SVN revision: 38546
This commit is contained in:
Daniel Kolesa 2009-01-11 10:27:01 +00:00
parent 6c874722ee
commit bae0ed2536
7 changed files with 1085 additions and 0 deletions

138
legacy/ecore/doc/Doxyfile Normal file
View File

@ -0,0 +1,138 @@
PROJECT_NAME = Ecore
PROJECT_NUMBER =
OUTPUT_DIRECTORY = .
INPUT = ./ecore.dox ../src/lib
IMAGE_PATH = img
OUTPUT_LANGUAGE = English
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER = head.html
HTML_FOOTER = foot.html
HTML_STYLESHEET = e.css
HTML_ALIGN_MEMBERS = YES
ENUM_VALUES_PER_LINE = 1
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = YES
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = NO
HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES
HIDE_FRIEND_COMPOUNDS = YES
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
INTERNAL_DOCS = NO
STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = YES
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = NO
SHOW_INCLUDE_FILES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 2
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ALIASES =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
SHOW_USED_FILES = NO
QUIET = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
FILE_PATTERNS =
RECURSIVE = YES
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH = ../examples/
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 2
IGNORE_PREFIX =
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
GENERATE_LATEX = YES
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = YES
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
GENERATE_MAN = YES
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = YES
GENERATE_XML = NO
XML_SCHEMA =
XML_DTD =
GENERATE_AUTOGEN_DEF = NO
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = NO
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
CLASS_DIAGRAMS = NO
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
CLASS_GRAPH = NO
COLLABORATION_GRAPH = NO
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = NO
INCLUDED_BY_GRAPH = NO
GRAPHICAL_HIERARCHY = NO
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 512
MAX_DOT_GRAPH_HEIGHT = 512
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
SEARCHENGINE = NO

View File

@ -0,0 +1,378 @@
/**
@brief Ecore Library Public API Calls
These routines are used for Ecore Library interaction
*/
/**
@mainpage Ecore
@image latex ecore_big.eps width=5cm
@image html ecore.png
@version @PACKAGE_VERSION@
@author Carsten Haitzler <raster\@rasterman.com>
@author Tom Gilbert <tom\@linuxbrit.co.uk>
@author Burra <burra\@colorado.edu>
@author Chris Ross <chris\@darkrock.co.uk>
@author Term <term\@twistedpath.org>
@author Tilman Sauerbeck <tilman\@code-monkey.de>
@author Nathan Ingersoll <rbdpngn\@users.sourceforge.net>
@date 2000-2004
@section intro Introduction
Ecore is a library of convenience functions.
The Ecore library provides the following modules:
@li @link Ecore.h Ecore - Main Loop Functions. @endlink
@li @link Ecore_Con.h Ecore_Con - Connection functions. @endlink
@li @link Ecore_Config.h Ecore_Config - Configuration functions. @endlink
@li @link Ecore_Evas.h Ecore_Evas - Evas convenience functions. @endlink
@li @link Ecore_Fb.h Ecore_FB - Frame buffer convenience functions. @endlink
@li @link Ecore_Ipc.h Ecore_IPC - Inter Process Communication functions. @endlink
@li @link Ecore_Job.h Ecore_Job - Job functions, to be used in the Ecore main loop. @endlink
@li @link Ecore_Txt.h Ecore_Txt - Text encoding conversion. @endlink
@li @link Ecore_X.h Ecore_X - X Windows System wrapper. @endlink
@section compiling How to compile using Ecore?
This section has to be documented. Below is just a quick line to handle all
Ecore modules at once.
@verbatim
gcc *.c \
-I/usr/local/include -I/usr/X11R6/include \
-L/usr/local/lib -L/usr/X11R6/lib \
-lecore -lecore_evas -lecore_x -lecore_fb -lecore_job \
`pkg-config evas --cflags --libs`
@endverbatim
@section install How is it installed?
Suggested configure options for evas for a Linux desktop X display:
@verbatim
./configure \
--enable-ecore-x \
--enable-ecore-fb \
--enable-ecore-evas \
--enable-ecore-evas-gl \
--enable-ecore-job \
--enable-ecore-con \
--enable-ecore-ipc \
--enable-ecore-txt
make CFLAGS="-O9 -mpentiumpro -march=pentiumpro -mcpu=pentiumpro"
@endverbatim
@todo (1.0) Document API
*/
/*
@page Ecore_Main_Loop_Page The Ecore Main Loop
@section intro What is Ecore?
Ecore is a clean and tiny event loop library with many modules to do lots of
convenient things for a programmer, to save time and effort.
It's small and lean, designed to work on embedded systems all the way to
large and powerful multi-cpu workstations. It serialises all system signals,
events etc. into a single event queue, that is easily processed without
needing to worry about concurrency. A properly written, event-driven program
using this kind of programming doesn't need threads, nor has to worry about
concurrency. It turns a program into a state machine, and makes it very
robust and easy to follow.
Ecore gives you other handy primitives, such as timers to tick over for you
and call specified functions at particular times so the programmer can use
this to do things, like animate, or time out on connections or tasks that take
too long etc.
Idle handlers are provided too, as well as calls on entering an idle state
(often a very good time to update the state of the program). All events that
enter the system are passed to specific callback functions that the program
sets up to handle those events. Handling them is simple and other Ecore
modules produce more events on the queue, coming from other sources such as
file descriptors etc.
Ecore also lets you have functions called when file descriptors become active
for reading or writing, allowing for streamlined, non-blocking IO.
Here is an exmaple of a simple program and its basic event loop flow:
@image html prog_flow.png
@section work How does Ecore work?
Ecore is very easy to learn and use. All the function calls are designed to
be easy to remember, explicit in describing what they do, and heavily
name-spaced. Ecore programs can start and be very simple.
For example:
@code
#include <Ecore.h>
int main(int argc, const char **argv)
{
ecore_init();
ecore_app_args_set(argc, argv);
ecore_main_loop_begin();
ecore_shutdown();
return 0;
}
@endcode
This program is very simple and does't check for errors, but it does start up
and begin a main loop waiting for events or timers to tick off. This program
doesn't set up any, but now we can expand on this simple program a little
more by adding some event handlers and timers.
@code
#include <Ecore.h>
Ecore_Timer *timer1 = NULL;
Ecore_Event_Handler *handler1 = NULL;
double start_time = 0.0;
int timer_func(void *data)
{
printf("Tick timer. Sec: %3.2f\n", ecore_time_get() - start_time);
return 1;
}
int exit_func(void *data, int ev_type, void *ev)
{
Ecore_Event_Signal_Exit *e;
e = (Ecore_Event_Signal_Exit *)ev;
if (e->interrupt) printf("Exit: interrupt\n");
else if (e->quit) printf("Exit: quit\n");
else if (e->terminate) printf("Exit: terminate\n");
ecore_main_loop_quit();
return 1;
}
int main(int argc, const char **argv)
{
ecore_init();
ecore_app_args_set(argc, argv);
start_time = ecore_time_get();
handler1 = ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, exit_func, NULL);
timer1 = ecore_timer_add(0.5, timer_func, NULL);
ecore_main_loop_begin();
ecore_shutdown();
return 0;
}
@endcode
In the previous example, we initialize our application and get the time at
which our program has started so we can calculate an offset. We set
up a timer to tick off in 0.5 seconds, and since it returns 1, will
keep ticking off every 0.5 seconds until it returns 0, or is deleted
by hand. An event handler is set up to call a function - exit_func(),
whenever an event of type ECORE_EVENT_SIGNAL_EXIT is received (CTRL-C
on the command line will cause such an event to happen). If this event
occurs it tells you what kind of exit signal was received, and asks
the main loop to quit when it is finished by calling
ecore_main_loop_quit().
The handles returned by ecore_timer_add() and ecore_event_handler_add() are
only stored here as an example. If you don't need to address the timer or
event handler again you don't need to store the result, so just call the
function, and don't assign the result to any variable.
This program looks slightly more complex than needed to do these simple
things, but in principle, programs don't get any more complex. You add more
event handlers, for more events, will have more timers and such, BUT it all
follows the same principles as shown in this example.
*/
/**
@page Ecore_Config_Page The Enlightened Property Library
The Enlightened Property Library (Ecore_Config) is an adbstraction
from the complexities of writing your own configuration. It provides
many features using the Enlightenment 17 development libraries.
To use the library, you:
@li Set the default values of your properties.
@li Load the configuration from a file. You must set the default values
first, so that the library knows the correct type of each argument.
The following examples show how to use the Enlightened Property Library:
@li @link config_basic_example.c config_basic_example.c @endlink
@li @link config_listener_example.c config_listener_example.c @endlink
*/
/**
@page Ecore_ADT_Page Ecore Abstract Data Types
This page briefly describes the different abstract data types
that are provided by the Ecore library for general usage. You need to
include the @link Ecore_Data.h Ecore_Data.h @endlink to use them.
@section Ecore_ADT_List List
A list is a simple data type where one each piece of data points to
another piece of data.
Associated modules that describe the List ADT include:
@li @ref Ecore_Data_List_Creation_Group
@li @ref Ecore_Data_List_Add_Item_Group
@li @ref Ecore_Data_List_Remove_Item_Group
@li @ref Ecore_Data_List_Traverse_Group
@li @ref Ecore_Data_List_Node_Group
Examples involving lists include:
@li @link list_example.c list_example.c @endlink
@section Ecore_ADT_DList Doubly Linked List
A doubly linked list is like a linked list, only each piece of data
can also point to the piece before it. In other words, you can traverse
a doubly linked list in both directions.
Associated modules that describe the DList ADT include:
@li @ref Ecore_Data_DList_Creation_Group
@li @ref Ecore_Data_DList_Add_Item_Group
@li @ref Ecore_Data_DList_Remove_Item_Group
@section Ecore_ADT_Hash Hash
A hash is an abstract data type where one value is associated with another
value. Instead of each element of the group being accessible using a
number, each element is accessed using another object.
Associated modules that describe the Hash ADT include:
@li @ref Ecore_Data_Hash_ADT_Creation_Group
@li @ref Ecore_Data_Hash_ADT_Destruction_Group
@li @ref Ecore_Data_Hash_ADT_Data_Group
@todo Finish this.
*/
/**
@page X_Window_System_Page X Window System
The Ecore library includes a wrapper for handling the X window system.
This page briefly explains what the X window system is and various terms
that are used.
*/
// GROUP DEFINITIONS
/**
@defgroup Ecore_Timer_Group Ecore Timer
The timer allows callbacks to be called at specific intervals.
*/
/**
@defgroup Ecore_Job_Group Ecore Jobs
You can queue jobs that are to be done by the main loop when the current
event is dealt with.
*/
/**
@defgroup Idle_Group Idle Handlers
Callbacks that are called when the program enters or exits an idle state.
The ecore main loop enters an idle state when it is waiting for timers
to time out, data to come in on a file descriptor or any other event
to occur. You can set callbacks to be called when the main loop
enters an idle state, during an idle state or just after the program
wakes up.
Enterer callbacks are good for updating your program's state, if it
has a state engine. Once all of the enterer handlers are called, the
program will enter a "sleeping" state.
Idler callbacks are called when the main loop has called all enterer
handlers. They are useful for interfaces that require polling and
timers would be too slow to use.
If no idler callbacks are specified, then the process literally goes
to sleep. Otherwise, the idler callbacks are called continuously
while the loop is "idle", using as much CPU as is available to the
process.
Exiter callbacks are called when the main loop wakes up from an idle
state.
*/
/**
@defgroup Ecore_Config_Create_Group Ecore Config Create Functions
Convenience functions that set default values, bounds, option values and
descriptions in one call.
*/
/**
@defgroup Ecore_Config_File_Group Ecore Config File Functions
Functions that are used to load and save properties from and to files.
*/
// EXAMPLES
/**
@example args_example.c
Shows how to set and retrieve the program arguments.
*/
/**
@example con_server_example.c
Shows how to write a simple server using the Ecore_Con library.
*/
/**
@example con_client_example.c
Shows how to write a simple client, that connects to the example server.
*/
/**
@example event_handler_example.c
Shows how to use event handlers.
*/
/**
@example timer_example.c
Demonstrates use of the ecore_timer.
*/
/**
@example config_basic_example.c
Provides an example of how to use the basic configuration functions.
See the file Ecore_Config.h for the full list of available functions.
*/
/**
@example config_listener_example.c
Shows how to set up a listener to listen for configuration changes.
*/
/**
@example list_example.c
Provides a basic example of how to append to and traverse a list.
*/
/**
@example list_destroy_example.c
Shows how to set and use a destructor for an Ecore_List.
*/
/**
@example x_window_example.c
Shows the basics of using the X Windows system through Ecore functions.
*/

View File

@ -0,0 +1,88 @@
dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
dnl That code is public domain and can be freely used or copied.
dnl Macro that check if doxygen is available or not.
dnl EFL_CHECK_DOXYGEN([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
dnl Test for the doxygen program
dnl Defines DOXYGEN
dnl Defines the automake conditionnal EFL_BUILD_DOC
dnl
AC_DEFUN([EFL_CHECK_DOXYGEN],
[
DOXYGEN="doxygen"
dnl
dnl Disable the build of the documentation
dnl
AC_ARG_ENABLE([doc],
AC_HELP_STRING(
[--disable-doc],
[Disable the build of the documentation]),
[if test "${disable_doc}" = "yes" ; then
enable_doc="no"
else
enable_doc="yes"
fi],
[enable_doc="yes"]
)
dnl
dnl Specify the full file name, with path
dnl
AC_ARG_WITH([doxygen],
AC_HELP_STRING(
[--with-doxygen=FILE],
[doxygen program to use @<:@default=doxygen@:>@]),
dnl
dnl Check the given doxygen program.
dnl
[DOXYGEN=${withval}
AC_CHECK_PROG([BUILD_DOCS],
[${DOXYGEN}],
[yes],
[no])
if test "x${BUILD_DOCS}" = "xno" ; then
echo "WARNING:"
echo "The doxygen program you specified:"
echo "$DOXYGEN"
echo "was not found. Please check the path and make sure "
echo "the program exists and is executable."
AC_MSG_WARN([Warning: no doxygen detected. Documentation will not be built])
fi
],
[AC_CHECK_PROG([BUILD_DOCS],
[${DOXYGEN}],
[yes],
[no])
if test "x${BUILD_DOCS}" = "xno" ; then
echo "WARNING:"
echo "The doxygen program was not found in your execute"
echo "You may have doxygen installed somewhere not covered by your path."
echo ""
echo "If this is the case make sure you have the packages installed, AND"
echo "that the doxygen program is in your execute path (see your"
echo "shell manual page on setting the \$PATH environment variable), OR"
echo "alternatively, specify the program to use with --with-doxygen."
AC_MSG_WARN([Warning: no doxygen detected. Documentation will not be built])
fi
]
)
dnl
dnl Substitution
dnl
AC_SUBST([DOXYGEN])
AM_CONDITIONAL(EFL_BUILD_DOC, test "x${BUILD_DOCS}" = "xyes")
if test "x${BUILD_DOCS}" = "xyes" ; then
ifelse([$1], , :, [$1])
else
ifelse([$2], , :, [$2])
fi
])
dnl End of doxygen.m4

139
legacy/evas/doc/Doxyfile Normal file
View File

@ -0,0 +1,139 @@
PROJECT_NAME = Evas
PROJECT_NUMBER =
OUTPUT_DIRECTORY = .
INPUT = evas.dox ../src/lib
IMAGE_PATH = img
OUTPUT_LANGUAGE = English
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER = head.html
HTML_FOOTER = foot.html
HTML_STYLESHEET = e.css
HTML_ALIGN_MEMBERS = YES
ENUM_VALUES_PER_LINE = 1
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = YES
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = NO
HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES
HIDE_FRIEND_COMPOUNDS = YES
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
INTERNAL_DOCS = NO
STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = YES
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = NO
SHOW_INCLUDE_FILES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 2
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ALIASES =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
SHOW_USED_FILES = NO
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
FILE_PATTERNS =
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
INPUT_FILTER =
FILTER_SOURCE_FILES = NO
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 2
IGNORE_PREFIX =
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
GENERATE_LATEX = YES
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = YES
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
GENERATE_MAN = YES
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = YES
GENERATE_XML = NO
XML_SCHEMA =
XML_DTD =
GENERATE_AUTOGEN_DEF = NO
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = NO
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
CLASS_DIAGRAMS = NO
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
CLASS_GRAPH = NO
COLLABORATION_GRAPH = NO
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = NO
INCLUDED_BY_GRAPH = NO
GRAPHICAL_HIERARCHY = NO
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 512
MAX_DOT_GRAPH_HEIGHT = 512
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
SEARCHENGINE = NO

View File

@ -0,0 +1,32 @@
MAINTAINERCLEANFILES = Makefile.in evas.dox
.PHONY: doc
PACKAGE_DOCNAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc
if EFL_BUILD_DOC
doc-clean:
rm -rf html/ latex/ man/ xml/ $(PACKAGE_DOCNAME).tar*
doc: all doc-clean
$(DOXYGEN)
cp img/* html/
rm -rf $(PACKAGE_DOCNAME).tar*
mkdir -p $(PACKAGE_DOCNAME)/doc
cp -R html/ latex/ man/ $(PACKAGE_DOCNAME)/doc
tar cf $(PACKAGE_DOCNAME).tar $(PACKAGE_DOCNAME)/
bzip2 -9 $(PACKAGE_DOCNAME).tar
rm -rf $(PACKAGE_DOCNAME)/
mv $(PACKAGE_DOCNAME).tar.bz2 $(top_srcdir)
clean-local: doc-clean
else
doc:
@echo "Documentation not built. Run ./configure --help"
endif
EXTRA_DIST = Doxyfile img e.css head.html foot.html evas.dox.in

222
legacy/evas/doc/evas.dox.in Normal file
View File

@ -0,0 +1,222 @@
/**
@mainpage Evas
@image latex evas_big.eps width=5cm
@image html evas.png
@version @PACKAGE_VERSION@
@author Carsten Haitzler <raster\@rasterman.com>
@author Till Adam <till\@adam-lilienthal.de>
@author Steve Ireland <sireland\@pobox.com>
@author Brett Nash <nash\@nash.id.au>
@author Tilman Sauerbeck <tilman at code-monkey.de>
@author Corey Donohoe <atmos\@atmos.org>
@author Yuri Hudobin <glassy_ape\@users.sourceforge.net>
@author Nathan Ingersoll <ningerso\@d.umn.edu>
@author Willem Monsuwe <willem\@stack.nl>
@author Vincent Torri <vtorri at univ-evry dot fr>
@author Gustavo Barbieri <barbieri at profusion dot mobi>
@author Cedric Bail <moa dot bluebugs at gmail dot com>
@date 2000-2008
@section intro What is Evas?
Evas is a clean display canvas API for several target display systems that
can draw anti-aliased text, smooth super and sub-sampled scaled images,
alpha-blend objects much and more.
It abstracts any need to know much about what the characteristics of your
display system are or what graphics calls are used to draw them and how. It
deals on an object level where all you do is create and manipulate objects
in a canvas, set their properties, and the rest is done for you.
Evas optimises the rendering pipeline to minimise effort in redrawing changes
made to the canvas and so takes this work out of the programmers hand,
saving a lot of time and energy.
It's small and lean, designed to work on embedded systems all the way to
large and powerful multi-cpu workstations. It can be compiled to only have
the features you need for your target platform if you so wish, thus keeping
it small and lean. It has several display back-ends, letting it display on
several display systems, making it portable for cross-device and
cross-platform development.
@section work How does Evas work?
Evas is a canvas display library. This is markedly different from most
display and windowing systems as a Canvas is structural and is also a state
engine, wheras most display and windowing systems are immediate mode display
targets. Evas handles the logic between a structural display via its' state
engine, and controls the target windowing system in order to produce
rendered results of the current canvases state on the display.
Immediate mode display systems retain very little, or no state. A program
will execute a series of commands:
@verbatim
bitmap_handle = create_new_bitmap();
draw_line(0, 0, 100, 200);
draw_rectangle(10, 30, 50, 500);
draw_bitmap(10, 30, bitmap_handle);
etc.
@endverbatim
The series of commands is executed by the windowing system and the results
are displayed on the screen (normally). Once the commands are executed the
display system has little or no idea of how to reproduce this image again,
and so has to be instructed by the application how to redraw sections of the
screen whenever needed. Each sucessive command will be executed as
instructed by the application and either emulated by software or sent to the
graphics hardware on the device to be performed.
The advantage of such a system is that it is simple, and gives a program
tight control over how something looks and is drawn. Given the increasing
complexity of displays and demands by users to have better looking
interfaces, more and more work is needing to be done at this level by the
internals of widget sets, custom display widgets and other programs. This
means more and more logic and display rendering code needs to be written
time and time again, each time the application needs to figure out how to
minimise redraws so that display is fast and interactive, and keep track of
redraw logic. The power comes at a high-price, lots of extra code and work.
Programmers not very familiar with graphics programming will often make
mistakes at this level and produce code that is sub optimal. Those familiar
with this kind of programming will simply get bored by writing the same code
again and again.
Evas is a structural system in which the programmer creates and manages
display objects and their properties, and as a result of this higher level
state management, the canvas is able to redraw the set of objects when
needed to represent the current state of the canvas.
For example:
@verbatim
bitmap_handle = create_bitmap();
move(bitmap_handle, 10, 30);
show(bitmap_handle);
rectangle_handle = create_rectangle();
move(rectangle_handle, 10, 30);
resize(rectangle_handle, 50, 500);
show(rectangle_handle);
line_handle = create_line();
set_line_coords(line_handle, 0, 0, 100, 200);
show(line_handle);
etc.
@endverbatim
This may look longer, but when the display needs to be refreshed or updated,
the programmer only moves, resizes, shows, hides etc. the objects that they
need to change. The programmer simply thinks at the object logic level, and
the canvas software does the rest of the work for them, figuring out what
actually changed in the canvas since it was last drawn, how to most
efficiently redraw he canvas and its contents to reflect the current state,
and then it can go off and do the actual drawing of the canvas.
This lets the programmer think in a more natural way when dealing with a
display, and saves time and effort of working out how to load and display
images, render given the current display system etc. Since Evas also is
portable across different display systems, this also gives the programmer
the ability to have their code ported and display on different display
systems with very little work.
Evas can be seen as a display system that stands somewhere between a widget
set and an immediate mode display system. It retains basic display logic,
but does very little high-level logic such as scrollbars, sliders, push
buttons etc.
@section compiling How to compile using Evas?
Evas is a library your application links to. The proceedure for this is very
simple. You simply have to compile your application with the appropriate
compiler flags that the @p evas-config script outputs. For example:
Compiling C or C++ files into object files:
@verbatim
gcc -c -o main.o main.c `pkg-config --cflags evas`
@endverbatim
Linking object files into a binary executable:
@verbatim
gcc -o my_application main.o `pkg-config --libs evas`
@endverbatim
You simply have to make sure that pkg-config is in your shell's PATH (see
the manual page for your appropriate shell) and evas.pc in /usr/lib/pkgconfig
or its path is in the PKG_CONFIG_PATH environment variable. It's that simple
to link and use Evas once you have written your code to use it.
Since the program is linked to Evas, it is now able to use any advertised
API calls to display graphics in a canvas managed by Evas, as well as use
the API calls provided to manage data as well.
You should make sure you add any extra compile and link flags to your
compile commands that your application may need as well. The above example
is only guaranteed to make Evas add it's own requirements.
@section install How is it installed?
Simple:
@verbatim
./configure
make
su -
...
make install
@endverbatim
@todo (1.0) Need a way ot scaling an image and just PRODUCING the output (scaling direct to target buffe r- no blend/copy etc.)
@todo (1.0) Could improve evas's scaling down code to limit multiple samples per output pixel to maybe 2x2?
@todo (1.0) Document API
@todo (1.0) Evas needs to check delete_me member for all object functions
@todo (1.0) Evas engine that renders to Evas_Objects
@todo (1.0) OpenGL engine needs to use texture meshes
@todo (1.0) OpenGL engine needs texture cache and size setting
@todo (1.0) OpenGL Engine needs YUV import API to YUV texture
@todo (1.0) All engines need pixel import API
@todo (1.0) Add parital render through composite layer api to engines
@todo (1.0) Move callback processing to a queue and do it asynchronously???
@todo (1.0) Add button grabbing
@todo (1.0) Add generic object method call system
@todo (1.0) Add callbacks set for smart object parents to be set on all child smart objects too.
@todo (1.0) Define image load errors (and maybe have an error to string func)
@todo (1.0) Add text styles (outline etc.)
@todo (1.0) Add font load query calls (so we know if a font load failed)
@todo (1.0) Add font listing calls
@todo (1.0) Add ability to check image comments & disk format
@todo (1.0) Add group objects
@todo (1.0) Add fontset support
@todo (1.0) Export engine rendering API cleanly to Evas API
@todo (1.0) Add smart object ability to provide rendering callback
@todo (1.1) Make freetype optional and put in optional graymap font engine
@todo (1.1) Free images if object invisible (and put back in chache)
@todo (1.1) Check robustness of malloc/calloc/realloc failures.
@todo (1.1) Add memory use reduction code if any allocations fail
@todo (1.1) If image loads fails due to memory allocatue failure, load reduced res version
@todo (1.1) If image load fails due to memory allocation failure, try split it up into tiles and demand-load them
@todo (1.2) Add external image loaders (application provided callbacks to load)
@todo (1.2) Add loadable image loader module support (evas loads file.so)
@todo (1.2) Add external image loader modules (application provides path to file.so)
@todo (1.3) Add X11 primtive engine (ie pixmap)
@todo (1.3) Add immediate mode drawing commands to image objects
@todo (1.3) Fix FB engine to allocate vt and release properly
@todo (1.4) Add ellipse objects (circle, arc, ellipse etc.)
@todo (1.5) Make software engine draw lines & polys etc. with aa
@todo (1.5) Add radial gradients to gradient objects
@todo (1.5) Add Symbian Engine
@todo (1.6) Add PalmOS Engine
@todo (1.6) Add Apple OpenGL Engine
@todo (1.7) Document engine API and other internals
@todo (1.7) Allow any object to clip any other object, and not just rectangles
@todo (1.8) Add more evas demos
@todo (1.9) Write the error mechanism in evas_xcb_buffer.c
@todo (1.9) Rewrite the render xcb engine
@todo (1.10) Improve Win32 Direct3D Engine
*/

View File

@ -0,0 +1,88 @@
dnl Copyright (C) 2008 Vincent Torri <vtorri at univ-evry dot fr>
dnl That code is public domain and can be freely used or copied.
dnl Macro that check if doxygen is available or not.
dnl EFL_CHECK_DOXYGEN([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
dnl Test for the doxygen program
dnl Defines DOXYGEN
dnl Defines the automake conditionnal EFL_BUILD_DOC
dnl
AC_DEFUN([EFL_CHECK_DOXYGEN],
[
DOXYGEN="doxygen"
dnl
dnl Disable the build of the documentation
dnl
AC_ARG_ENABLE([doc],
AC_HELP_STRING(
[--disable-doc],
[Disable the build of the documentation]),
[if test "${disable_doc}" = "yes" ; then
enable_doc="no"
else
enable_doc="yes"
fi],
[enable_doc="yes"]
)
dnl
dnl Specify the full file name, with path
dnl
AC_ARG_WITH([doxygen],
AC_HELP_STRING(
[--with-doxygen=FILE],
[doxygen program to use @<:@default=doxygen@:>@]),
dnl
dnl Check the given doxygen program.
dnl
[DOXYGEN=${withval}
AC_CHECK_PROG([BUILD_DOCS],
[${DOXYGEN}],
[yes],
[no])
if test "x${BUILD_DOCS}" = "xno" ; then
echo "WARNING:"
echo "The doxygen program you specified:"
echo "$DOXYGEN"
echo "was not found. Please check the path and make sure "
echo "the program exists and is executable."
AC_MSG_WARN([Warning: no doxygen detected. Documentation will not be built])
fi
],
[AC_CHECK_PROG([BUILD_DOCS],
[${DOXYGEN}],
[yes],
[no])
if test "x${BUILD_DOCS}" = "xno" ; then
echo "WARNING:"
echo "The doxygen program was not found in your execute"
echo "You may have doxygen installed somewhere not covered by your path."
echo ""
echo "If this is the case make sure you have the packages installed, AND"
echo "that the doxygen program is in your execute path (see your"
echo "shell manual page on setting the \$PATH environment variable), OR"
echo "alternatively, specify the program to use with --with-doxygen."
AC_MSG_WARN([Warning: no doxygen detected. Documentation will not be built])
fi
]
)
dnl
dnl Substitution
dnl
AC_SUBST([DOXYGEN])
AM_CONDITIONAL(EFL_BUILD_DOC, test "x${BUILD_DOCS}" = "xyes")
if test "x${BUILD_DOCS}" = "xyes" ; then
ifelse([$1], , :, [$1])
else
ifelse([$2], , :, [$2])
fi
])
dnl End of doxygen.m4