Browse Source

* src/io.c:

+ Added caca_wait_event(), a blocking caca_get_event().
  * src/ examples/:
    + More documentation.
  * doc/doxygen.cfg.in:
    + doc/doxygen.cfg is now generated by configure, so that we can use
      @top_srcdir@ and we no longer need to hardcode PROJECT_NUMBER.
    + Create manpages.
tags/v0.99.beta14
Sam Hocevar sam 21 years ago
parent
commit
1c3acd1ea5
19 changed files with 572 additions and 473 deletions
  1. +1
    -0
      configure.ac
  2. +2
    -2
      doc/Makefile.am
  3. +6
    -6
      doc/doxygen.cfg.in
  4. +20
    -20
      examples/aafire.c
  5. +16
    -16
      examples/demo.c
  6. +16
    -16
      examples/spritedit.c
  7. +16
    -16
      examples/view.c
  8. +20
    -20
      src/bitmap.c
  9. +20
    -20
      src/box.c
  10. +59
    -42
      src/caca.c
  11. +123
    -101
      src/caca.h
  12. +20
    -20
      src/caca_internals.h
  13. +21
    -21
      src/conic.c
  14. +93
    -63
      src/graphics.c
  15. +51
    -22
      src/io.c
  16. +28
    -28
      src/line.c
  17. +20
    -20
      src/math.c
  18. +20
    -20
      src/sprite.c
  19. +20
    -20
      src/triangle.c

+ 1
- 0
configure.ac View File

@@ -116,6 +116,7 @@ AC_CONFIG_FILES([
src/Makefile src/Makefile
examples/Makefile examples/Makefile
doc/Makefile doc/Makefile
doc/doxygen.cfg
autotools/Makefile autotools/Makefile
debian/Makefile debian/Makefile
]) ])


+ 2
- 2
doc/Makefile.am View File

@@ -1,4 +1,4 @@
EXTRA_DIST = doxygen.cfg footer.html header.html $(man_MANS)
EXTRA_DIST = doxygen.cfg.in footer.html header.html $(man_MANS)


man_MANS = caca-config.1 cacademo.1 caca-spritedit.1 cacaview.1 man_MANS = caca-config.1 cacademo.1 caca-spritedit.1 cacaview.1


@@ -20,6 +20,6 @@ endif


clean: clean-local clean: clean-local
clean-local: clean-local:
-rm -Rf html latex
-rm -Rf html latex man
-rm -f stamp-latex stamp-doxygen -rm -f stamp-latex stamp-doxygen



doc/doxygen.cfg → doc/doxygen.cfg.in View File

@@ -3,8 +3,8 @@
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
PROJECT_NAME = libcaca
PROJECT_NUMBER = 0.3
PROJECT_NAME = @PACKAGE@
PROJECT_NUMBER = @VERSION@
OUTPUT_DIRECTORY = . OUTPUT_DIRECTORY = .
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO USE_WINDOWS_ENCODING = NO
@@ -61,7 +61,7 @@ WARN_LOGFILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = ../src
INPUT = @top_srcdir@/src
FILE_PATTERNS = *.c \ FILE_PATTERNS = *.c \
*.h *.h
RECURSIVE = YES RECURSIVE = YES
@@ -95,8 +95,8 @@ IGNORE_PREFIX =
GENERATE_HTML = YES GENERATE_HTML = YES
HTML_OUTPUT = html HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html HTML_FILE_EXTENSION = .html
HTML_HEADER = header.html
HTML_FOOTER = footer.html
HTML_HEADER = @srcdir@/header.html
HTML_FOOTER = @srcdir@/footer.html
HTML_STYLESHEET = HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
@@ -139,7 +139,7 @@ RTF_EXTENSIONS_FILE =
GENERATE_MAN = YES GENERATE_MAN = YES
MAN_OUTPUT = man MAN_OUTPUT = man
MAN_EXTENSION = .3caca MAN_EXTENSION = .3caca
MAN_LINKS = NO
MAN_LINKS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the XML output # configuration options related to the XML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------

+ 20
- 20
examples/aafire.c View File

@@ -1,28 +1,28 @@
/* /*
* cacafire fire demo using libcaca
* Copyright (c) 2003 Sam Hocevar <sam@zoy.org>
* Jan Hubicka (hubicka@freesoft.cz)
* Thomas A. K. Kjaer (takjaer@daimi.aau.dk)
* Tim Newsome (nuisance@cmu.edu)
* Kamil Toman (toman@artax.karlin.mff.cuni.cz)
* All Rights Reserved
* cacafire fire demo for libcaca
* Copyright (c) 2003 Sam Hocevar <sam@zoy.org>
* Jan Hubicka (hubicka@freesoft.cz)
* Thomas A. K. Kjaer (takjaer@daimi.aau.dk)
* Tim Newsome (nuisance@cmu.edu)
* Kamil Toman (toman@artax.karlin.mff.cuni.cz)
* All Rights Reserved
* *
* $Id$
* $Id$
* *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


#ifdef LIBCACA #ifdef LIBCACA


+ 16
- 16
examples/demo.c View File

@@ -1,24 +1,24 @@
/* /*
* demo demo using libcaca
* Copyright (c) 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* demo demo for libcaca
* Copyright (c) 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* $Id$
* $Id$
* *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


#include "config.h" #include "config.h"


+ 16
- 16
examples/spritedit.c View File

@@ -1,24 +1,24 @@
/* /*
* spritedit sprite editor using libcaca
* Copyright (c) 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* spritedit sprite editor for libcaca
* Copyright (c) 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* $Id$
* $Id$
* *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


#include "config.h" #include "config.h"


+ 16
- 16
examples/view.c View File

@@ -1,24 +1,24 @@
/* /*
* view image viewer for libcaca
* Copyright (c) 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* view image viewer for libcaca
* Copyright (c) 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* $Id$
* $Id$
* *
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


#include "config.h" #include "config.h"


+ 20
- 20
src/bitmap.c View File

@@ -1,30 +1,30 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file bitmap.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Bitmap functions
/** \file bitmap.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Bitmap functions
* *
* This file contains bitmap blitting functions.
* This file contains bitmap blitting functions.
*/ */


#include "config.h" #include "config.h"


+ 20
- 20
src/box.c View File

@@ -1,30 +1,30 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file box.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Simple box drawing functions
/** \file box.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Simple box drawing functions
* *
* This file contains box drawing functions, both filled and outline.
* This file contains box drawing functions, both filled and outline.
*/ */


#include "config.h" #include "config.h"


+ 59
- 42
src/caca.c View File

@@ -1,32 +1,32 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file caca.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Main \e libcaca functions
/** \file caca.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Main \e libcaca functions
* *
* This file contains the main functions used by \e libcaca applications to
* initialise the library, get the screen properties, set the framerate and
* so on.
* This file contains the main functions used by \e libcaca applications to
* initialise the library, get the screen properties, set the framerate and
* so on.
*/ */


#include "config.h" #include "config.h"
@@ -61,10 +61,14 @@ enum caca_driver _caca_driver;
static mmask_t oldmask; static mmask_t oldmask;
#endif #endif


/**
* \brief Initialise libcaca.
/** \brief Initialise \e libcaca.
* *
* \return 0 upon success, a non-zero value if an error occurs.
* This function initialises internal \e libcaca structures and the backend
* that will be used for subsequent graphical operations. It must be the
* first \e libcaca function to be called in a function. caca_end() should
* be called at the end of the program to free all allocated resources.
*
* \return 0 upon success, a non-zero value if an error occurs.
*/ */
int caca_init(void) int caca_init(void)
{ {
@@ -153,20 +157,22 @@ int caca_init(void)
return 0; return 0;
} }


/**
* \brief Get the screen width.
/** \brief Get the screen width.
*
* This function returns the current screen width, in character cells.
* *
* \return The screen width, in character cells.
* \return The screen width.
*/ */
unsigned int caca_get_width(void) unsigned int caca_get_width(void)
{ {
return _caca_width; return _caca_width;
} }


/**
* \brief Get the screen height.
/** \brief Get the screen height.
* *
* \return The screen height, in character cells.
* This function returns the current screen height, in character cells.
*
* \return The screen height.
*/ */
unsigned int caca_get_height(void) unsigned int caca_get_height(void)
{ {
@@ -209,11 +215,14 @@ const char *caca_get_color_name(enum caca_color color)
return color_names[color]; return color_names[color];
} }


/**
* \brief Get the current value of a feature.
/** \brief Get the current value of a feature.
*
* This function retrieves the value of an internal \e libcaca feature. A
* generic feature value is expected, such as CACA_ANTIALIASING.
* *
* \param feature The requested feature.
* \return The current value of the feature.
* \param feature The requested feature.
* \return The current value of the feature or CACA_UNKNOWN_FEATURE if an
* error occurred..
*/ */
enum caca_feature caca_get_feature(enum caca_feature feature) enum caca_feature caca_get_feature(enum caca_feature feature)
{ {
@@ -231,11 +240,14 @@ enum caca_feature caca_get_feature(enum caca_feature feature)
} }
} }


/**
* \brief Set a feature.
/** \brief Set a feature.
* *
* \param feature The wanted feature.
* \return void
* This function sets an internal \e libcaca feature such as the antialiasing
* or dithering modes. If a specific feature such as CACA_DITHERING_RANDOM,
* caca_set_feature() will set it immediately. If a generic feature is given
* instead, such as CACA_DITHERING, the default value will be used instead.
*
* \param feature The requested feature.
*/ */
void caca_set_feature(enum caca_feature feature) void caca_set_feature(enum caca_feature feature)
{ {
@@ -298,10 +310,11 @@ const char *caca_get_feature_name(enum caca_feature feature)
} }
} }


/**
* \brief Uninitialise libcaca.
/** \brief Uninitialise \e libcaca.
* *
* \return void
* This function frees all resources allocated by caca_init(). After
* caca_end() has been called, no other \e libcaca functions may be used
* unless a new call to caca_init() is done.
*/ */
void caca_end(void) void caca_end(void)
{ {
@@ -346,6 +359,10 @@ void caca_end(void)
#endif #endif
} }


/*
* XXX: The following functions are local.
*/

static void caca_init_driver(void) static void caca_init_driver(void)
{ {
#if defined(HAVE_GETENV) && defined(HAVE_STRCASECMP) #if defined(HAVE_GETENV) && defined(HAVE_STRCASECMP)


+ 123
- 101
src/caca.h View File

@@ -1,88 +1,89 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file caca.h
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief The \e libcaca public header.
/** \file caca.h
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief The \e libcaca public header.
* *
* This header contains the public types and functions that applications
* using \e libcaca may use.
* This header contains the public types and functions that applications
* using \e libcaca may use.
*/ */


/** \mainpage libcaca developer documentation
*
* \section intro Introduction
*
* \e libcaca is a graphics library that outputs text instead of pixels,
* so that it can work on older video cards or text terminals. It is not
* unlike the famous AAlib library. libcaca needs a terminal to work,
* thus it should work on all Unix systems (including Mac OS X) using
* either the slang library or the ncurses library, on DOS using the conio
* library, and on Windows systems using either slang or ncurses (through
* Cygwin emulation) or conio.
*
* \e libcaca is free software, released under the GNU Lesser General
* Public License. This ensures that \e libcaca will always remain free
* software.
*
* \section api The libcaca API
*
* The complete \e libcaca programming interface is available from the
* caca.h header.
*
* \section env Environment variables
*
* Some environment variables can be used to change the behaviour of
* \e libcaca without having to modify the program which uses it. These
* variables are:
*
* \li \b CACA_DRIVER: set the backend video driver. In order of preference:
* - \c conio uses the DOS conio.h interface.
* - \c ncurses uses the ncurses library.
* - \c slang uses the S-Lang library.
* - \c x11 uses the native X11 driver.
*
* \li \b CACA_BACKGROUND: set the background type.
* - \c solid uses solid coloured backgrounds for all characters. This
* feature does not work with all terminal emulators. This is the
* default choice.
* - \c black uses only black backgrounds to render characters.
*
* \li \b CACA_ANTIALIASING: set the antialiasing mode. Antialiasing
* smoothens the rendered image and avoids the commonly seen staircase
* effect.
* - \c none disables antialiasing.
* - \c prefilter uses a simple prefilter antialiasing method. This is
* the default choice.
*
* \li \b CACA_DITHERING: set the dithering mode. Dithering is necessary
* when rendering a picture that has more colours than the usually
* available palette.
* - \c none disables dithering.
* - \c ordered2 uses a 2x2 Bayer matrix for dithering.
* - \c ordered4 uses a 4x4 Bayer matrix for dithering. This is the
* default choice.
* - \c ordered8 uses a 8x8 Bayer matrix for dithering.
* - \c random uses random dithering.
/** \mainpage libcaca developer documentation
*
* \section intro Introduction
*
* \e libcaca is a graphics library that outputs text instead of pixels,
* so that it can work on older video cards or text terminals. It is not
* unlike the famous AAlib library. \e libcaca can use almost any virtual
* terminal to work, thus it should work on all Unix systems (including
* Mac OS X) using either the slang library or the ncurses library, on DOS
* using the conio library, and on Windows systems using either slang or
* ncurses (through Cygwin emulation) or conio. There is also a native X11
* driver that does not require a text terminal.
*
* \e libcaca is free software, released under the GNU Lesser General
* Public License. This ensures that \e libcaca will always remain free
* software.
*
* \section api The libcaca API
*
* The complete \e libcaca programming interface is available from the
* caca.h header.
*
* \section env Environment variables
*
* Some environment variables can be used to change the behaviour of
* \e libcaca without having to modify the program which uses it. These
* variables are:
*
* \li \b CACA_DRIVER: set the backend video driver. In order of preference:
* - \c conio uses the DOS conio.h interface.
* - \c ncurses uses the ncurses library.
* - \c slang uses the S-Lang library.
* - \c x11 uses the native X11 driver.
*
* \li \b CACA_BACKGROUND: set the background type.
* - \c solid uses solid coloured backgrounds for all characters. This
* feature does not work with all terminal emulators. This is the
* default choice.
* - \c black uses only black backgrounds to render characters.
*
* \li \b CACA_ANTIALIASING: set the antialiasing mode. Antialiasing
* smoothens the rendered image and avoids the commonly seen staircase
* effect.
* - \c none disables antialiasing.
* - \c prefilter uses a simple prefilter antialiasing method. This is
* the default choice.
*
* \li \b CACA_DITHERING: set the dithering mode. Dithering is necessary
* when rendering a picture that has more colours than the usually
* available palette.
* - \c none disables dithering.
* - \c ordered2 uses a 2x2 Bayer matrix for dithering.
* - \c ordered4 uses a 4x4 Bayer matrix for dithering. This is the
* default choice.
* - \c ordered8 uses a 8x8 Bayer matrix for dithering.
* - \c random uses random dithering.
*/ */


#ifndef __CACA_H__ #ifndef __CACA_H__
@@ -117,9 +118,6 @@ enum caca_color
CACA_COLOR_WHITE = 15 /**< The colour index for white. */ CACA_COLOR_WHITE = 15 /**< The colour index for white. */
}; };


/** \ingroup convenience */
const char *caca_get_color_name(enum caca_color);

/** \brief Internal features. /** \brief Internal features.
* *
* This enum lists all possible internal libcaca features such as the * This enum lists all possible internal libcaca features such as the
@@ -151,9 +149,6 @@ enum caca_feature
CACA_UNKNOWN_FEATURE = 0xffff /**< Unknown feature. */ CACA_UNKNOWN_FEATURE = 0xffff /**< Unknown feature. */
}; };


/** \ingroup convenience */
const char *caca_get_feature_name(enum caca_feature);

/* /*
* Backwards compatibility macros * Backwards compatibility macros
*/ */
@@ -208,36 +203,54 @@ enum caca_key
}; };


/** \defgroup basic Basic functions /** \defgroup basic Basic functions
* \@{ */
*
* These functions provide the basic \e libcaca routines for library
* initialisation, system information retrieval and configuration.
*
* @{ */
int caca_init(void); int caca_init(void);
void caca_set_delay(unsigned int); void caca_set_delay(unsigned int);
enum caca_feature caca_get_feature(enum caca_feature); enum caca_feature caca_get_feature(enum caca_feature);
void caca_set_feature(enum caca_feature); void caca_set_feature(enum caca_feature);
const char *caca_get_feature_name(enum caca_feature);
unsigned int caca_get_rendertime(void); unsigned int caca_get_rendertime(void);
unsigned int caca_get_width(void); unsigned int caca_get_width(void);
unsigned int caca_get_height(void); unsigned int caca_get_height(void);
void caca_refresh(void); void caca_refresh(void);
void caca_end(void); void caca_end(void);
/** \@} */
/* @} */


/** \defgroup event Event handling functions /** \defgroup event Event handling functions
* \@{ */
*
* These functions handle user events such as keyboard input and mouse
* clicks.
*
* @{ */
unsigned int caca_get_event(void); unsigned int caca_get_event(void);
/** \@} */
unsigned int caca_wait_event(void);
/* @} */


/** \defgroup char Character printing functions /** \defgroup char Character printing functions
* \@{ */
*
* These functions provide low-level character printing routines.
*
* @{ */
void caca_set_color(enum caca_color, enum caca_color); void caca_set_color(enum caca_color, enum caca_color);
enum caca_color caca_get_fg_color(void); enum caca_color caca_get_fg_color(void);
enum caca_color caca_get_bg_color(void); enum caca_color caca_get_bg_color(void);
const char *caca_get_color_name(enum caca_color);
void caca_putchar(int, int, char); void caca_putchar(int, int, char);
void caca_putstr(int, int, const char *); void caca_putstr(int, int, const char *);
void caca_printf(int, int, const char *, ...); void caca_printf(int, int, const char *, ...);
void caca_clear(void); void caca_clear(void);
/** \@} */
/* @} */


/** \defgroup prim Primitives drawing functions /** \defgroup prim Primitives drawing functions
* \@{ */
*
* These functions provide routines for primitive drawing, such as lines,
* boxes, triangles and ellipses.
*
* @{ */
void caca_draw_line(int, int, int, int, char); void caca_draw_line(int, int, int, int, char);
void caca_draw_polyline(const int x[], const int y[], int, char); void caca_draw_polyline(const int x[], const int y[], int, char);
void caca_draw_thin_line(int, int, int, int); void caca_draw_thin_line(int, int, int, int);
@@ -255,16 +268,23 @@ void caca_fill_box(int, int, int, int, char);
void caca_draw_triangle(int, int, int, int, int, int, char); void caca_draw_triangle(int, int, int, int, int, int, char);
void caca_draw_thin_triangle(int, int, int, int, int, int); void caca_draw_thin_triangle(int, int, int, int, int, int);
void caca_fill_triangle(int, int, int, int, int, int, char); void caca_fill_triangle(int, int, int, int, int, int, char);
/** \@} */
/* @} */


/** \defgroup math Mathematical functions /** \defgroup math Mathematical functions
* \@{ */
*
* These functions provide a few useful math-related routines.
*
* @{ */
int caca_rand(int, int); int caca_rand(int, int);
unsigned int caca_sqrt(unsigned int); unsigned int caca_sqrt(unsigned int);
/** \@} */
/* @} */


/** \defgroup sprite Sprite handling functions /** \defgroup sprite Sprite handling functions
* \@{ */
*
* These functions provide high level routines for sprite loading, animation
* and rendering.
*
* @{ */
struct caca_sprite; struct caca_sprite;
struct caca_sprite * caca_load_sprite(const char *); struct caca_sprite * caca_load_sprite(const char *);
int caca_get_sprite_frames(const struct caca_sprite *); int caca_get_sprite_frames(const struct caca_sprite *);
@@ -274,10 +294,14 @@ int caca_get_sprite_dx(const struct caca_sprite *, int);
int caca_get_sprite_dy(const struct caca_sprite *, int); int caca_get_sprite_dy(const struct caca_sprite *, int);
void caca_draw_sprite(int, int, const struct caca_sprite *, int); void caca_draw_sprite(int, int, const struct caca_sprite *, int);
void caca_free_sprite(struct caca_sprite *); void caca_free_sprite(struct caca_sprite *);
/** \@} */
/* @} */


/** \defgroup bitmap Bitmap handling functions /** \defgroup bitmap Bitmap handling functions
* \@{ */
*
* These functions provide high level routines for bitmap allocation and
* rendering.
*
* @{ */
struct caca_bitmap; struct caca_bitmap;
struct caca_bitmap *caca_create_bitmap(unsigned int, unsigned int, struct caca_bitmap *caca_create_bitmap(unsigned int, unsigned int,
unsigned int, unsigned int, unsigned int, unsigned int,
@@ -288,9 +312,7 @@ void caca_set_bitmap_palette(struct caca_bitmap *,
unsigned int b[], unsigned int a[]); unsigned int b[], unsigned int a[]);
void caca_draw_bitmap(int, int, int, int, const struct caca_bitmap *, void *); void caca_draw_bitmap(int, int, int, int, const struct caca_bitmap *, void *);
void caca_free_bitmap(struct caca_bitmap *); void caca_free_bitmap(struct caca_bitmap *);
/** \@} */

/** \defgroup convenience Convenience functions */
/* @} */


#ifdef __cplusplus #ifdef __cplusplus
} }


+ 20
- 20
src/caca_internals.h View File

@@ -1,30 +1,30 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file caca_internals.h
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief The \e libcaca private header.
/** \file caca_internals.h
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief The \e libcaca private header.
* *
* This header contains the private types and functions used by \e libcaca.
* This header contains the private types and functions used by \e libcaca.
*/ */


#ifndef __CACA_INTERNALS_H__ #ifndef __CACA_INTERNALS_H__


+ 21
- 21
src/conic.c View File

@@ -1,31 +1,31 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file conic.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Ellipse and circle drawing functions
/** \file conic.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Ellipse and circle drawing functions
* *
* This file contains ellipse and circle drawing functions, both filled
* and outline.
* This file contains ellipse and circle drawing functions, both filled
* and outline.
*/ */


#include "config.h" #include "config.h"


+ 93
- 63
src/graphics.c View File

@@ -1,30 +1,30 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file graphics.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Character drawing functions
/** \file graphics.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Character drawing functions
* *
* This file contains character and string drawing functions.
* This file contains character and string drawing functions.
*/ */


#include "config.h" #include "config.h"
@@ -99,12 +99,14 @@ static unsigned int _caca_rendertime;
static enum caca_color _caca_fgcolor = CACA_COLOR_LIGHTGRAY; static enum caca_color _caca_fgcolor = CACA_COLOR_LIGHTGRAY;
static enum caca_color _caca_bgcolor = CACA_COLOR_BLACK; static enum caca_color _caca_bgcolor = CACA_COLOR_BLACK;


/**
* \brief Set the default colour pair.
/** \brief Set the default colour pair.
* *
* \param fgcolor The desired foreground colour.
* \param bgcolor The desired background colour.
* \return void
* This function sets the default colour pair. String functions such as
* caca_printf() and graphical primitive functions such as caca_draw_line()
* will use these colour pairs.
*
* \param fgcolor The requested foreground colour.
* \param bgcolor The requested background colour.
*/ */
void caca_set_color(enum caca_color fgcolor, enum caca_color bgcolor) void caca_set_color(enum caca_color fgcolor, enum caca_color bgcolor)
{ {
@@ -141,33 +143,39 @@ void caca_set_color(enum caca_color fgcolor, enum caca_color bgcolor)
} }
} }


/**
* \brief Get the current foreground colour.
/** \brief Get the current foreground colour.
*
* This function returns the current foreground colour that was set with
* caca_set_color().
* *
* \return The current foreground colour.
* \return The current foreground colour.
*/ */
enum caca_color caca_get_fg_color(void) enum caca_color caca_get_fg_color(void)
{ {
return _caca_fgcolor; return _caca_fgcolor;
} }


/**
* \brief Get the current background colour.
/** \brief Get the current background colour.
*
* This function returns the current background colour that was set with
* caca_set_color().
* *
* \return The current background colour.
* \return The current background colour.
*/ */
enum caca_color caca_get_bg_color(void) enum caca_color caca_get_bg_color(void)
{ {
return _caca_bgcolor; return _caca_bgcolor;
} }


/**
* \brief Print a character at given coordinates.
/** \brief Print a character.
* *
* \param x The X coordinate of the character.
* \param y The Y coordinate of the character.
* \param c The character to print.
* \return void
* This function prints a character at the given coordinates, using the
* default foreground and background values. If the coordinates are outside
* the screen boundaries, nothing is printed.
*
* \param x X coordinate.
* \param y Y coordinate.
* \param c The character to print.
*/ */
void caca_putchar(int x, int y, char c) void caca_putchar(int x, int y, char c)
{ {
@@ -212,13 +220,16 @@ void caca_putchar(int x, int y, char c)
} }
} }


/**
* \brief Print a string at given coordinates.
/** \brief Print a string.
*
* This function prints a string at the given coordinates, using the
* default foreground and background values. The coordinates may be outside
* the screen boundaries (eg. a negative Y coordinate) and the string will
* be cropped accordingly if it is too long.
* *
* \param x The X coordinate of the string.
* \param y The Y coordinate of the string.
* \param s The string to print.
* \return void
* \param x X coordinate.
* \param y Y coordinate.
* \param s The string to print.
*/ */
void caca_putstr(int x, int y, const char *s) void caca_putstr(int x, int y, const char *s)
{ {
@@ -290,14 +301,18 @@ void caca_putstr(int x, int y, const char *s)
} }
} }


/**
* \brief Format a string at given coordinates.
/** \brief Format a string.
* *
* \param x The X coordinate of the string.
* \param y The Y coordinate of the string.
* \param format The format string to print.
* \param ... Arguments to the format string.
* \return void
* This function formats a string at the given coordinates, using the
* default foreground and background values. The coordinates may be outside
* the screen boundaries (eg. a negative Y coordinate) and the string will
* be cropped accordingly if it is too long. The syntax of the format
* string is the same as for the C printf() function.
*
* \param x X coordinate.
* \param y Y coordinate.
* \param format The format string to print.
* \param ... Arguments to the format string.
*/ */
void caca_printf(int x, int y, const char *format, ...) void caca_printf(int x, int y, const char *format, ...)
{ {
@@ -326,10 +341,9 @@ void caca_printf(int x, int y, const char *format, ...)
free(buf); free(buf);
} }


/**
* \brief Clear the screen.
/** \brief Clear the screen.
* *
* \return void
* This function clears the screen using a black background.
*/ */
void caca_clear(void) void caca_clear(void)
{ {
@@ -637,21 +651,31 @@ int _caca_end_graphics(void)
return 0; return 0;
} }


/**
* \brief Set the refresh delay.
/** \brief Set the refresh delay.
*
* This function sets the refresh delay in microseconds. The refresh delay
* is used by caca_refresh() to achieve constant framerate. See the
* caca_refresh() documentation for more details.
*
* If the argument is zero, constant framerate is disabled. This is the
* default behaviour.
* *
* \param usec The refresh delay in microseconds.
* \return void
* \param usec The refresh delay in microseconds.
*/ */
void caca_set_delay(unsigned int usec) void caca_set_delay(unsigned int usec)
{ {
_caca_delay = usec; _caca_delay = usec;
} }


/**
* \brief Get the average rendering time.
/** \brief Get the average rendering time.
* *
* \return The render time in microseconds.
* This function returns the average rendering time, which is the average
* measured time between two caca_refresh() calls, in microseconds. If
* constant framerate was activated by calling caca_set_delay(), the average
* rendering time will not be considerably shorter than the requested delay
* even if the real rendering time was shorter.
*
* \return The render time in microseconds.
*/ */
unsigned int caca_get_rendertime(void) unsigned int caca_get_rendertime(void)
{ {
@@ -678,10 +702,16 @@ static unsigned int _caca_getticks(void)
return ticks; return ticks;
} }


/**
* \brief Flush pending changes and redraw the screen.
/** \brief Flush pending changes and redraw the screen.
*
* This function flushes all graphical operations and prints them to the
* screen. Nothing will show on the screen caca_refresh() is not called.
* *
* \return void
* If caca_set_delay() was called with a non-zero value, caca_refresh()
* will use that value to achieve constant framerate: if two consecutive
* calls to caca_refresh() are within a time range shorter than the value
* set with caca_set_delay(), the second call will wait a bit before
* performing the screen refresh.
*/ */
void caca_refresh(void) void caca_refresh(void)
{ {


+ 51
- 22
src/io.c View File

@@ -1,30 +1,30 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file io.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Event handling functions
/** \file io.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Event handling functions
* *
* This file contains event handling functions for keyboard and mouse input.
* This file contains event handling functions for keyboard and mouse input.
*/ */


#include "config.h" #include "config.h"
@@ -54,8 +54,12 @@ static unsigned int _read_key(void);
static unsigned int keybuf[KEY_BUFLEN + 1]; /* zero-terminated */ static unsigned int keybuf[KEY_BUFLEN + 1]; /* zero-terminated */
static int keys = 0; static int keys = 0;


/**
* \brief Get the next mouse or keyboard input event.
/** \brief Get the next mouse or keyboard input event.
*
* This function polls the event queue for mouse or keyboard events and
* returns the event. It is non-blocking and returns zero if no event is
* pending in the queue. See also caca_wait_event() for a blocking version
* of this function.
* *
* \return The next event in the queue, or 0 if no event is pending. * \return The next event in the queue, or 0 if no event is pending.
*/ */
@@ -186,6 +190,31 @@ unsigned int caca_get_event(void)
return CACA_EVENT_KEY_PRESS | '\x1b'; return CACA_EVENT_KEY_PRESS | '\x1b';
} }


/** \brief Wait for the next mouse or keyboard input event.
*
* This function returns the first mouse or keyboard event in the queue. If
* no event is pending, it blocks until an event is received. See also
* caca_get_event() for a non-blocking version of this function.
*
* \return The next event in the queue.
*/
unsigned int caca_wait_event(void)
{
for( ; ; )
{
unsigned int event = caca_get_event();

if(event)
return event;

usleep(1000);
}
}

/*
* XXX: The following functions are local.
*/

static void _push_key(unsigned int key) static void _push_key(unsigned int key)
{ {
if(keys == KEY_BUFLEN) if(keys == KEY_BUFLEN)


+ 28
- 28
src/line.c View File

@@ -1,31 +1,31 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file line.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Line drawing functions
/** \file line.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Line drawing functions
* *
* This file contains line and polyline drawing functions, with both thin
* and thick styles.
* This file contains line and polyline drawing functions, with both thin
* and thick styles.
*/ */


#include "config.h" #include "config.h"
@@ -78,9 +78,9 @@ void caca_draw_line(int x1, int y1, int x2, int y2, char c)


/** /**
* \brief Draw a polyline on the screen using the given character and * \brief Draw a polyline on the screen using the given character and
* coordinate arrays. The first and last points are not connected,
* so in order to draw a polygon you need to specify the starting
* point at the end of the list as well.
* coordinate arrays. The first and last points are not connected,
* so in order to draw a polygon you need to specify the starting
* point at the end of the list as well.
* *
* \param x Array of X coordinates. Must have \p n + 1 elements. * \param x Array of X coordinates. Must have \p n + 1 elements.
* \param y Array of Y coordinates. Must have \p n + 1 elements. * \param y Array of Y coordinates. Must have \p n + 1 elements.
@@ -127,9 +127,9 @@ void caca_draw_thin_line(int x1, int y1, int x2, int y2)


/** /**
* \brief Draw a thin polyline on the screen using the given coordinate * \brief Draw a thin polyline on the screen using the given coordinate
* arrays and with ASCII art. The first and last points are not
* connected, so in order to draw a polygon you need to specify the
* starting point at the end of the list as well.
* arrays and with ASCII art. The first and last points are not
* connected, so in order to draw a polygon you need to specify the
* starting point at the end of the list as well.
* *
* \param x Array of X coordinates. Must have \p n + 1 elements. * \param x Array of X coordinates. Must have \p n + 1 elements.
* \param y Array of Y coordinates. Must have \p n + 1 elements. * \param y Array of Y coordinates. Must have \p n + 1 elements.
@@ -239,7 +239,7 @@ static uint8_t clip_bits(int x, int y)


/** /**
* \brief Solid line drawing function, using Bresenham's mid-point line * \brief Solid line drawing function, using Bresenham's mid-point line
* scan-conversion algorithm.
* scan-conversion algorithm.
* *
* \param s a line structure * \param s a line structure
* \return void * \return void


+ 20
- 20
src/math.c View File

@@ -1,30 +1,30 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file math.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Math functions
/** \file math.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Math functions
* *
* This file contains simple mathematical routines.
* This file contains simple mathematical routines.
*/ */


#include "config.h" #include "config.h"


+ 20
- 20
src/sprite.c View File

@@ -1,30 +1,30 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file sprite.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Sprite loading and blitting
/** \file sprite.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Sprite loading and blitting
* *
* This file contains a small framework for sprite loading and blitting.
* This file contains a small framework for sprite loading and blitting.
*/ */


#include "config.h" #include "config.h"


+ 20
- 20
src/triangle.c View File

@@ -1,30 +1,30 @@
/* /*
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* libcaca ASCII-Art library
* Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
* All Rights Reserved
* *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*/ */


/** \file triangle.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Triangle drawing functions
/** \file triangle.c
* \version \$Id$
* \author Sam Hocevar <sam@zoy.org>
* \brief Triangle drawing functions
* *
* This file contains triangle drawing functions, both filled and outline.
* This file contains triangle drawing functions, both filled and outline.
*/ */


#include "config.h" #include "config.h"


Loading…
Cancel
Save