From 515b4a994ae3b402e166ce5f3da03656b3823a90 Mon Sep 17 00:00:00 2001 From: Crayon2000 Date: Wed, 19 Aug 2009 17:47:29 +0000 Subject: [PATCH] [CHG] Modification for Doxygen documentation --- GRRLIB/GRRLIB/grrlib.h | 22 ++++++++-------- GRRLIB/GRRLIB/grrlib/GRRLIB__inline.h | 2 +- GRRLIB/GRRLIB/grrlib/GRRLIB__lib.h | 2 +- grrlib.doxygen | 35 ++++++++++++++------------ grrlib_logo.png | Bin 6917 -> 4477 bytes 5 files changed, 31 insertions(+), 30 deletions(-) diff --git a/GRRLIB/GRRLIB/grrlib.h b/GRRLIB/GRRLIB/grrlib.h index 830de6c..cecfe48 100644 --- a/GRRLIB/GRRLIB/grrlib.h +++ b/GRRLIB/GRRLIB/grrlib.h @@ -89,12 +89,14 @@ typedef unsigned int uint; // Primitive colour macros //============================================================================== // Feel free to convert these to inline functions if it floats your boat -#define R(c) (((c) >>24) &0xFF) // Exract RED component of colour -#define G(c) (((c) >>16) &0xFF) // Exract GREEN component of colour -#define B(c) (((c) >> 8) &0xFF) // Exract BLUE component of colour -#define A(c) ( (c) &0xFF) // Exract ALPHA component of colour +#define R(c) (((c) >>24) &0xFF) /**< Exract RED component of colour. */ +#define G(c) (((c) >>16) &0xFF) /**< Exract GREEN component of colour. */ +#define B(c) (((c) >> 8) &0xFF) /**< Exract BLUE component of colour. */ +#define A(c) ( (c) &0xFF) /**< Exract ALPHA component of colour. */ -// Build an RGB pixel from components +/** + * Build an RGB pixel from components. + */ #define RGBA(r,g,b,a) ( (u32)( ( ((u32)(r)) <<24) | \ ((((u32)(g)) &0xFF) <<16) | \ ((((u32)(b)) &0xFF) << 8) | \ @@ -104,17 +106,15 @@ typedef unsigned int uint; // typedefs, enumerators & structs //============================================================================== /** - * Compositions Modes - * NORMAL : a-over-b alpha composition (normal) - * ...more to come + * Compositions Modes. */ typedef enum Composition_Modes { - GRRLIB_COMPOSE_NORMAL, + GRRLIB_COMPOSE_NORMAL, /**< NORMAL : a-over-b alpha composition (normal) */ } GRRLIB_ComposeMode; //------------------------------------------------------------------------------ /** - * GRRLIB Blending Modes + * GRRLIB Blending Modes. */ typedef enum GRRLIB_blendMode { GRRLIB_BLEND_ALPHA = 0, /**< Alpha Blending. */ @@ -180,8 +180,6 @@ typedef struct GRRLIB_bytemapChar { */ typedef struct GRRLIB_bytemapFont { -//! the order of the fields here is changed -//! to encourage efficient structure packing in the compiler char *name; /**< Font name. */ u32 *palette; /**< Font palette. */ u16 nbChar; /**< Number of characters in font. */ diff --git a/GRRLIB/GRRLIB/grrlib/GRRLIB__inline.h b/GRRLIB/GRRLIB/grrlib/GRRLIB__inline.h index 5495161..72a8e5a 100644 --- a/GRRLIB/GRRLIB/grrlib/GRRLIB__inline.h +++ b/GRRLIB/GRRLIB/grrlib/GRRLIB__inline.h @@ -21,7 +21,7 @@ THE SOFTWARE. ------------------------------------------------------------------------------*/ /** - * @file GRRLIB_fnLibrary.h + * @file GRRLIB__inline.h * GRRLIB inline functions. */ diff --git a/GRRLIB/GRRLIB/grrlib/GRRLIB__lib.h b/GRRLIB/GRRLIB/grrlib/GRRLIB__lib.h index 3dd6cfd..efa3221 100644 --- a/GRRLIB/GRRLIB/grrlib/GRRLIB__lib.h +++ b/GRRLIB/GRRLIB/grrlib/GRRLIB__lib.h @@ -21,7 +21,7 @@ THE SOFTWARE. ------------------------------------------------------------------------------*/ /** - * @file GRRLIB_fnLibrary.h + * @file GRRLIB__lib.h * GRRLIB library functions. */ diff --git a/grrlib.doxygen b/grrlib.doxygen index 4301ce0..184ece1 100644 --- a/grrlib.doxygen +++ b/grrlib.doxygen @@ -1,4 +1,4 @@ -# Doxyfile 1.5.8 +# Doxyfile 1.5.9 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project @@ -31,7 +31,7 @@ PROJECT_NAME = GRRLIB # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 4.0.0 +PROJECT_NUMBER = 4.1.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. @@ -54,11 +54,11 @@ CREATE_SUBDIRS = NO # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, -# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, -# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, -# Spanish, Swedish, and Ukrainian. +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English @@ -224,7 +224,8 @@ OPTIMIZE_OUTPUT_VHDL = NO # the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, # Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat # .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C +# use: inc=Fortran f=C. Note that for custom extensions you also need to set +# FILE_PATTERNS otherwise the files are not read by doxygen. EXTENSION_MAPPING = @@ -470,12 +471,6 @@ ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. @@ -573,7 +568,8 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = .\GRRLIB\GRRLIB +INPUT = .\GRRLIB\GRRLIB \ + .\GRRLIB\GRRLIB\grrlib # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is @@ -1078,6 +1074,13 @@ LATEX_BATCHMODE = NO LATEX_HIDE_INDICES = NO +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- @@ -1476,7 +1479,7 @@ DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. -DOT_PATH = "../../Program Files/Graphviz/bin" +DOT_PATH = "C:\Program Files\Graphviz\bin" # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the diff --git a/grrlib_logo.png b/grrlib_logo.png index 17196cf5dda2599199b5454c364654b606f318a7..f490cfb00450364bb23a343458779f657d76f5ab 100644 GIT binary patch literal 4477 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 CQctn~ literal 6917 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⪚}>Dx!ayB zy`Qgf1}r<{oVxka#4Az=6DF}%^QCF-Zm0tNs9jo&FQo04v*J~~ea_Jz7XVS1`0&U! zVGh=9#g2c@3Ah8n^-Z5zE)xvWPwUXTyXVY%qGdT-53SPElPo>CK64LE*!ULx`2@m8 z$`OPl@8FLFjl%MS_|rkZbTY|I94hcj);AF&wKQ+}s6;g`cEnh>-M2xNTtv;L&e#JgUk3&=LlH9@w;Ip=ukl;N z#PXt(WpG@qvvyKvz2qf#AV%|53jf9c8T;mOR9ayyrd|W(mp+0p&>%I@3lIA-Xdr2w ziF)NsiCoR|9NrH9Ds>lNle?7JhFBi@wtcZV19S1)*jG1NYZm4o z6Oori(SA#=_`9^)<#cClXL)IZIyC=ir;x`Ljv7OS7ZLXcN#y#JlgrX=w+I7`mV9k| z?px#Bw7Owtaia&E`;O2tGu>v}fdZFY-)#M>OGA8Qk_T{sFdm*>0dH5^zVZ&gycvSy{%oIB|w4!>kYqk5PJWQz%u^g}fYbuu5Q7UJoiB1YX zVD%m2xx0iEx!W(O4@?b%>JcMIC|!}3j85?oVcz%9KWi9UTcD?si#$gk(`cs$Hitp3 z@M4OW{2{IcgEU%-4*~DTdT7dbjq%*=>{Tw8lSPVEafh3doR{3~MD{ttzC|W^nOlg8 zwQdMMIzH>X@foSK65_fR#vllSv9k(w=;W~EdDer~ z#$($-LVf44CsA|o;Mu&+HUtasXq0AwsT$*9u$#uVoRkcVrT^J(e04fWyMKM%w__Gksda}-Y zI(n^~KM4~~mxG@t(7NO4LE^qIeY8b+t>TqPLPTQ4ui7V?DJTUg>}JWKTzsTlZen-e zYilJ?x`O=8CsDZh-fIS4pX*$*Jr-L41U%-aY(8V=6#HW)WMT;0IEWIADyvp4{f#I^ z;4Za3w&);NP?(>TGGuOX$94f5?BLPY;$S+^9dCY?3%_`A^f4gFtm{CDj82ciDO zy6p7u{9!Z;FkJd4zJSIfr2Q{;{=3lb4nOuArO9P3g0EH)GLM-2U-AD=qMN2$DjPO3 hGTM(E?8fwf7ur2l_l=iU{_igbMOjsuYALgi{{h3&HHiQK