From 1f15ce0a421b896760936c6290c20d4f3a979ae8 Mon Sep 17 00:00:00 2001 From: penguin673 Date: Tue, 23 Dec 2008 01:05:03 +0000 Subject: [PATCH] Cleaned up and commented echo_gfx; replaced the last of the "#ifdef ARM9" to "#ifdef ECHO_NDS"; changed from doxygen.cfg to the more standard Doxyfile. --- Doxyfile | 304 +++++++++ doxygen.cfg | 1417 ----------------------------------------- echo_char_joints.h | 127 ++-- echo_character.cpp | 4 +- echo_character.h | 15 +- echo_error.cpp | 26 +- echo_error.h | 4 +- echo_gfx.cpp | 745 ++++++++++++---------- echo_gfx.h | 106 ++- echo_ingame_loader.h | 24 +- echo_math.cpp | 2 +- echo_model_stairs.cpp | 2 +- escgrid.cpp | 2 +- escgrid.h | 2 +- gen/gen_stairs.c | 2 +- grid.cpp | 2 +- 16 files changed, 905 insertions(+), 1879 deletions(-) create mode 100644 Doxyfile delete mode 100644 doxygen.cfg diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..d66a6ab --- /dev/null +++ b/Doxyfile @@ -0,0 +1,304 @@ +# Doxyfile 1.5.6 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = l-echo +PROJECT_NUMBER = 0.4.2 +OUTPUT_DIRECTORY = /home/jeff/workspace/l-echo/doc/ +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = /home/jeff/workspace/l-echo/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +TYPEDEF_HIDES_STRUCT = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /home/jeff/workspace/l-echo +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py \ + *.f90 \ + *.f \ + *.vhd \ + *.vhdl \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.PY \ + *.F90 \ + *.F \ + *.VHD \ + *.VHDL +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = NO +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +HTML_DYNAMIC_SECTIONS = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NONE +TREEVIEW_WIDTH = 250 +FORMULA_FONTSIZE = 10 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +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 = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = YES +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = NO +MSCGEN_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +DOT_FONTNAME = FreeSans +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = YES +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/doxygen.cfg b/doxygen.cfg deleted file mode 100644 index 9ab229e..0000000 --- a/doxygen.cfg +++ /dev/null @@ -1,1417 +0,0 @@ -# Doxyfile 1.5.6 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = l-echo - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = 83 - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = doc - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# 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, Slovak, Slovene, Spanish, Swedish, -# and Ukrainian. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen to replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = NO - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespace are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -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. - -SHOW_DIRECTORIES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be abled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = - -# 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 -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx -# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix filesystem feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER -# is applied to all files. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. Otherwise they will link to the documentstion. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. - -GENERATE_DOCSET = NO - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to FRAME, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. Other possible values -# for this tag are: HIERARCHIES, which will generate the Groups, Directories, -# and Class Hiererachy pages using a tree view instead of an ordered list; -# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which -# disables this behavior completely. For backwards compatibility with previous -# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE -# respectively. - -GENERATE_TREEVIEW = NONE - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = YES - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse -# the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option is superseded by the HAVE_DOT option below. This is only a -# fallback. It is recommended to install and use dot, since it yields more -# powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = NO - -# By default doxygen will write a font called FreeSans.ttf to the output -# directory and reference it in all dot files that doxygen generates. This -# font does not include all possible unicode characters however, so when you need -# these (or just want a differently looking font) you can specify the font name -# using DOT_FONTNAME. You need need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = FreeSans - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -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 = - -# 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 -# \dotfile command). - -DOTFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is enabled by default, which results in a transparent -# background. Warning: Depending on the platform used, enabling this option -# may lead to badly anti-aliased labels on the edges of a graph (i.e. they -# become hard to read). - -DOT_TRANSPARENT = YES - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = NO - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = NO diff --git a/echo_char_joints.h b/echo_char_joints.h index e632dbe..97e945d 100644 --- a/echo_char_joints.h +++ b/echo_char_joints.h @@ -24,93 +24,96 @@ /// Number of values in echo_char_joints...Just count them #define NUM_VALUES 27 -/** This union represents the joints and possible ways of bending them (at least, based on my body) - * This is setup so that there are two ways to access a value: - * 1) joints->[joint/body part]_[axis of rotation] (front is negative z, up is positive y, right is negative x) - * (positive is clockwise) - * 2) joints->[joint/body part (may be different)]_[action] - * For example: lhand_x is the same as lwrist +/** @brief Joint values of a mannequin + * + * This union represents the joints and possible ways of bending them (at least, based on my body)\n + * This is setup so that there are two ways to access a value:\n + * 1) joints->[joint/body part]_[axis of rotation] (front is negative z, up is positive y, right is negative x)\n + * (positive is clockwise)\n + * 2) joints->[joint/body part (may be different)]_[action]\n + * For example: lhand_x is the same as lwrist\n **/ -typedef union +union echo_char_joints { + /// An array of the values, so I can iteratively clear the joint values float value[NUM_VALUES]; struct { - float head_x; //nodding - float head_y; //turning head - float head_z; //tilting head - float waist_y; //turning waist - float waist_z; //bowing + float head_x; /// nodding + float head_y; /// turning head + float head_z; /// tilting head + float waist_y; /// turning waist + float waist_z; /// bowing - float lthigh_x; //lifting leg - float lthigh_y; //twisting leg (roll) - float lthigh_z; //opening legs + float lthigh_x; /// lifting leg + float lthigh_y; /// twisting leg (roll) + float lthigh_z; /// opening legs - float lleg_x; //bending leg - float lfoot_x; //flexing foot + float lleg_x; /// bending leg + float lfoot_x; /// flexing foot - float rthigh_x; //lifting leg - float rthigh_y; //twisting leg (roll) - float rthigh_z; //opening legs + float rthigh_x; /// lifting leg + float rthigh_y; /// twisting leg (roll) + float rthigh_z; /// opening legs - float rleg_x; //bending leg - float rfoot_x; //flexing foot + float rleg_x; /// bending leg + float rfoot_x; /// flexing foot - float lshoulder_z; //flapping arms - float lshoulder_y; //pushing out - float lshoulder_x; //swinging arms + float lshoulder_z; /// flapping arms + float lshoulder_y; /// pushing out + float lshoulder_x; /// swinging arms - float larm_x; //bending elbow - float larm_y; //twisting arm - float lhand_x; //wrist + float larm_x; /// bending elbow + float larm_y; /// twisting arm + float lhand_x; /// wrist - float rshoulder_z; //flapping arms - float rshoulder_y; //pushing out - float rshoulder_x; //swinging arms + float rshoulder_z; /// flapping arms + float rshoulder_y; /// pushing out + float rshoulder_x; /// swinging arms - float rarm_x; //bending elbow - float rarm_y; //twisting arm - float rhand_x; //wrist + float rarm_x; /// bending elbow + float rarm_y; /// twisting arm + float rhand_x; /// wrist }; struct { - float head_nod; //nodding - float head_turn; //turning head - float head_tilt; //tilting head - float waist_turn; //turning waist - float waist_bow; //bowing + float head_nod; /// nodding + float head_turn; /// turning head + float head_tilt; /// tilting head + float waist_turn; /// turning waist + float waist_bow; /// bowing - float lthigh_lift; //lifting leg - float lthigh_twist; //twisting leg (roll) - float lthigh_open; //opening legs + float lthigh_lift; /// lifting leg + float lthigh_twist; /// twisting leg (roll) + float lthigh_open; /// opening legs - float lleg_bend; //bending leg - float lfoot_bend; //flexing foot + float lleg_bend; /// bending leg + float lfoot_bend; /// flexing foot - float rthigh_lift; //lifting leg - float rthigh_twist; //twisting leg (roll) - float rthigh_open; //opening legs + float rthigh_lift; /// lifting leg + float rthigh_twist; /// twisting leg (roll) + float rthigh_open; /// opening legs - float rleg_bend; //bending leg - float rfoot_bend; //flexing foot + float rleg_bend; /// bending leg + float rfoot_bend; /// flexing foot - float lshoulder_flap; //flapping arms - float lshoulder_push; //pushing out - float lshoulder_swing; //swinging arms + float lshoulder_flap; /// flapping arms + float lshoulder_push; /// pushing out + float lshoulder_swing; /// swinging arms - float larm_bend; //bending elbow - float larm_twist; //twisting arm - float lwrist; //wrist + float larm_bend; /// bending elbow + float larm_twist; /// twisting arm + float lwrist; /// wrist - float rshoulder_flap; //flapping arms - float rshoulder_push; //pushing out - float rshoulder_swing; //swinging arms + float rshoulder_flap; /// flapping arms + float rshoulder_push; /// pushing out + float rshoulder_swing; /// swinging arms - float rarm_bend; //bending elbow - float rarm_twist; //twisting arm - float rwrist; //wrist + float rarm_bend; /// bending elbow + float rarm_twist; /// twisting arm + float rwrist; /// wrist }; -} echo_char_joints; +}; /** Set all joints to zero * @param joints Joints to set to zero diff --git a/echo_character.cpp b/echo_character.cpp index 5303bd7..ea0f403 100644 --- a/echo_character.cpp +++ b/echo_character.cpp @@ -68,7 +68,7 @@ #define DRAW_VEC(vec) draw((vec)->x, (vec)->y, (vec)->z) /** Initialize, and prepare to fall to that grid. - * @param start The initial grid on which to spawn + * @param g1 The initial grid on which to spawn */ echo_char::echo_char(grid* g1) { @@ -326,6 +326,8 @@ void echo_char::next_grid() /// Take one step in animation and movement; call each frame void echo_char::step() { + /// Set the color to white + gfx_color3f(1, 1, 1); /// If the character is (re)spawning... if(speed == SPEED_FALL_FROM_SKY) { diff --git a/echo_character.h b/echo_character.h index f311cd1..f579330 100644 --- a/echo_character.h +++ b/echo_character.h @@ -24,7 +24,7 @@ #ifndef __ECHO_CHARACTER__ #define __ECHO_CHARACTER__ -/** @brief echo_char represent an active mannequin (i.e., not a goal, or an "echo") +/** @brief echo_char represent an active mannequin (i.e., not a goal, or an "echo")\n * Usually the main character, echo_chars can also be antagonist characters * that sap a bit of the character's health if they collide. * @@ -55,15 +55,6 @@ class echo_char int num_goals; /// Is this character running (Grid Mode). int is_running; - /* - - - dist is the distance between the two grids. - - weight +=/-= (speed / dist) each step; - - - */ ///The percentage weight on the first grid (Grid Mode) float grid1per; /** The speed of the character. Depends on the Mode this character is\n @@ -113,9 +104,9 @@ class echo_char public: /** Initialize, and prepare to fall to that grid. - * @param start The initial grid on which to spawn + * @param g1 The initial grid on which to spawn */ - echo_char(grid* start); + echo_char(grid* g1); /// Destructor virtual ~echo_char(); /** Reinitializes the grid; spawns on g1 diff --git a/echo_error.cpp b/echo_error.cpp index c4e2e19..2e1cb02 100644 --- a/echo_error.cpp +++ b/echo_error.cpp @@ -17,38 +17,54 @@ along with L-Echo. If not, see . */ +/// Needed for quitting #include +/// Needed for printing #include #include +/** Report an error while loading + * @param msg The error message + */ void lderr(const char* msg) { ECHO_PRINT("Load Error: %s\n", msg); - //std::exit(1); } +/** Reports a memory error (usually the inability to allocate memory), and quits\n + * Used by the loader + */ void ldmemerr() { lderr("cannot allocate memory!"); std::exit(1); } +/** Report an error while loading + * @param msg1 The first error message + * @param msg2 The second error message, concatenated onto this first. + */ void lderr(const char* msg1, const char* msg2) { ECHO_PRINT("Load Error: %s%s\n", msg1, msg2); - //std::exit(1); } - +/** Report a warning while loading + * @param msg The warning message + */ void ldwarn(const char* msg) { ECHO_PRINT("Load Warning: %s\n", msg); } - +/** Stands for GENeral MEMory ERRor;\n + * Reports a memory error (usually the inability to allocate memory), and quits + */ void genmemerr() { ECHO_PRINT("Cannot allocate memory!\n"); std::exit(1); } - +/** Report a generic error, and quits + * @param msg The error message + */ void echo_error(const char* msg) { ECHO_PRINT(msg); diff --git a/echo_error.h b/echo_error.h index 63cb5eb..d2f6b91 100644 --- a/echo_error.h +++ b/echo_error.h @@ -36,7 +36,7 @@ void lderr(const char* msg); * @param msg2 The second error message, concatenated onto this first. */ void lderr(const char* msg1, const char* msg2); -/** Reports a memory error (usually the inability to allocate memory), and quits +/** Reports a memory error (usually the inability to allocate memory), and quits\n * Used by the loader */ void ldmemerr(); @@ -45,7 +45,7 @@ void ldmemerr(); */ void ldwarn(const char* msg); -/** Stands for GENeral MEMory ERRor; +/** Stands for GENeral MEMory ERRor;\n * Reports a memory error (usually the inability to allocate memory), and quits */ void genmemerr(); diff --git a/echo_gfx.cpp b/echo_gfx.cpp index 076562e..060680f 100644 --- a/echo_gfx.cpp +++ b/echo_gfx.cpp @@ -18,6 +18,15 @@ */ #include +#include +#include +#include +#include +#include +#include + +#include +#include #ifdef ECHO_NDS #include @@ -31,98 +40,28 @@ #include #endif -#include -#include -#include -#include #include -#include -#include -#include -#include - -#ifdef ECHO_NDS - #define POP_MATRIX glPopMatrix(1) -#else - #define POP_MATRIX glPopMatrix() -#endif - -#ifndef ECHO_NDS - static int drawing_outline = 0; -#endif #ifdef ECHO_NDS + #define POP_MATRIX glPopMatrix(1) #define SET_ID(id) glPolyFmt(POLY_ALPHA(31) | POLY_CULL_NONE | POLY_ID(id)); #else + static int drawing_outline = 0; #define SET_ID(id) + #define POP_MATRIX glPopMatrix() #endif -void draw_line(float x1, float y1, float z1, float x2, float y2, float z2) -{ - gfx_color3f(0, 0, 0); -#ifdef ECHO_NDS - glBegin(GL_TRIANGLES); - { - glVertex3f(x1, y1, z1); - glVertex3f(x2, y2, z2); - glVertex3f(x2, y2, z2); - } - glEnd(); -#else - glBegin(GL_LINES); - { - glVertex3f(x1, y1, z1); - glVertex3f(x2, y2, z2); - } - glEnd(); -#endif -} - -void draw_line(vector3f p1, vector3f p2) -{ - gfx_color3f(0, 0, 0); -#ifdef ECHO_NDS - glBegin(GL_TRIANGLES); - { - glVertex3f(p1.x, p1.y, p1.z); - glVertex3f(p2.x, p2.y, p2.z); - glVertex3f(p2.x, p2.y, p2.z); - } - glEnd(); -#else - glBegin(GL_LINES); - { - glVertex3f(p1.x, p1.y, p1.z); - glVertex3f(p2.x, p2.y, p2.z); - } - glEnd(); -#endif -} - -void draw_hole(vector3f pos) -{ - gfx_color3f(0, 0, 0); - gfx_push_matrix(); - { - glTranslatef(pos.x, pos.y + 0.03, pos.z); - glBegin(GL_QUADS); - { - glVertex3f(0, 0, HALF_GRID); - glVertex3f(HALF_GRID, 0, 0); - glVertex3f(0, 0, -HALF_GRID); - glVertex3f(-HALF_GRID, 0, 0); - } - glEnd(); - } - POP_MATRIX; -} - +/** Draw a hole (colored black) the size of grid at pos. + * It's a filled square that is formed from the midpoints of the edges of the grid. + * @param pos Where to draw the hole + */ void draw_hole(vector3f* pos) { gfx_color3f(0, 0, 0); gfx_push_matrix(); { - glTranslatef(pos->x, pos->y + 0.03, pos->z); + /// Translate slightly above the grid so there is no z-fighting + glTranslatef(pos->x, pos->y + 0.05f, pos->z); glBegin(GL_QUADS); { glVertex3f(0, 0, HALF_GRID); @@ -134,50 +73,35 @@ void draw_hole(vector3f* pos) } POP_MATRIX; } - - -void draw_launcher(vector3f pos) -{ - gfx_color3f(0, 0, 0); - gfx_push_matrix(); - { - glTranslatef(pos.x, pos.y + 0.03, pos.z); -#ifdef ECHO_NDS - glBegin(GL_TRIANGLE_STRIP); - { - glVertex3f(0, 0, HALF_GRID); - glVertex3f(HALF_GRID, 0, 0); - glVertex3f(0, 0, -HALF_GRID); - glVertex3f(-HALF_GRID, 0, 0); - } - glEnd(); -#else - glBegin(GL_LINE_LOOP); - { - glVertex3f(0, 0, HALF_GRID); - glVertex3f(HALF_GRID, 0, 0); - glVertex3f(0, 0, -HALF_GRID); - glVertex3f(-HALF_GRID, 0, 0); - } - glEnd(); -#endif - } - POP_MATRIX; -} - +/** Draw a launcher the size of grid at pos. + * It's a non-filled square that is formed from the midpoints of the edges of the grid. + * @param pos Where to draw the launcher + */ void draw_launcher(vector3f* pos) { gfx_color3f(0, 0, 0); gfx_push_matrix(); { - glTranslatef(pos->x, pos->y + 0.03, pos->z); + /// Translate slightly above the grid so there is no z-fighting + glTranslatef(pos->x, pos->y + 0.05f, pos->z); #ifdef ECHO_NDS - glBegin(GL_TRIANGLE_STRIP); + /// A strip of thin quads + glBegin(GL_QUAD_STRIP); { glVertex3f(0, 0, HALF_GRID); + glVertex3f(0, 0, HALF_GRID - 0.05f); + + glVertex3f(HALF_GRID - 0.05f, 0, 0); glVertex3f(HALF_GRID, 0, 0); + glVertex3f(0, 0, -HALF_GRID); + glVertex3f(0, 0, -HALF_GRID + 0.05f); + glVertex3f(-HALF_GRID, 0, 0); + glVertex3f(-HALF_GRID + 0.05f, 0, 0); + + glVertex3f(0, 0, HALF_GRID); + glVertex3f(0, 0, HALF_GRID - 0.05f); } glEnd(); #else @@ -193,20 +117,12 @@ void draw_launcher(vector3f* pos) } POP_MATRIX; } - -void draw_rect(vector3f p1, vector3f p2, vector3f p3, vector3f p4) -{ - gfx_color3f(1, 1, 1); - glBegin(GL_QUADS); - { - glVertex3f(p1.x, p1.y, p1.z); - glVertex3f(p2.x, p2.y, p2.z); - glVertex3f(p3.x, p3.y, p3.z); - glVertex3f(p4.x, p4.y, p4.z); - } - glEnd(); -} - +/** Draws a WHITE rectangle (actually, a quadrilateral) at the specified points + * @param p1 The first point + * @param p2 The second point + * @param p3 The third point + * @param p4 The fourth point + */ void draw_rect(vector3f* p1, vector3f* p2, vector3f* p3, vector3f* p4) { gfx_color3f(1, 1, 1); @@ -219,7 +135,7 @@ void draw_rect(vector3f* p1, vector3f* p2, vector3f* p3, vector3f* p4) } glEnd(); } - +/// Draws a WHITE rectangle (actually, a quadrilateral) at the specified coordinates void draw_rect(float x1, float y1, float z1 , float x2, float y2, float z2 , float x3, float y3, float z3 @@ -237,6 +153,9 @@ void draw_rect(float x1, float y1, float z1 } #ifdef ECHO_NDS +/** Draws a WHITE rectangle (actually, a quadrilateral) at the specified coordinates + * Coordinates are in v16 (use floattof32 and f32tofloat to convert to and from) + */ void draw_rectv16(v16 x1, v16 y1, v16 z1 , v16 x2, v16 y2, v16 z2 , v16 x3, v16 y3, v16 z3 @@ -254,8 +173,12 @@ void draw_rectv16(v16 x1, v16 y1, v16 z1 } #endif +/** Draw a goal ("echo") at pos + * @param pos Where to draw the goal + */ void draw_goal_gfx(vector3f* pos) { + /// Don't draw the goal if the outline is currently being drawn #ifndef ECHO_NDS if(!drawing_outline) #endif @@ -267,214 +190,371 @@ void draw_goal_gfx(vector3f* pos) POP_MATRIX; } } - +/** Draw a character with joint values as specified + * @param joints Joint values of the character + */ void draw_character(echo_char_joints* joints) { - gfx_push_matrix(); //body + gfx_push_matrix(); { - glTranslatef(0, 1.875f, 0); - SET_ID(1); - draw_body(); - gfx_push_matrix(); //neck, head - { - glTranslatef(0, 0.3f, 0); - SET_ID(12); - draw_sphere_pointzero75(); - if(joints != NULL) - { - gfx_rotatef(joints->head_x, 1, 0, 0); - gfx_rotatef(joints->head_y, 0, 1, 0); - gfx_rotatef(joints->head_z, 0, 0, 1); - } - glTranslatef(0, 0.3f, 0); - SET_ID(0); - draw_head(); - } - POP_MATRIX; //end neck, hand - gfx_push_matrix(); //left hand + if(joints != NULL) { - glTranslatef(0.2f, 0.2f, 0); - SET_ID(13); - draw_sphere_pointzero75(); - if(joints != NULL) + /// Body + glTranslatef(0, 1.875f, 0); + SET_ID(1); + draw_body(); + + gfx_push_matrix(); { - gfx_rotatef(joints->lshoulder_x, 1, 0, 0); - gfx_rotatef(joints->lshoulder_y, 0, 1, 0); - gfx_rotatef(joints->lshoulder_z + 12, 0, 0, 1); + /// Neck + glTranslatef(0, 0.3f, 0); + SET_ID(12); + draw_sphere_pointzero75(); + + /// Head + glRotatef(joints->head_x, 1, 0, 0); + glRotatef(joints->head_y, 0, 1, 0); + glRotatef(joints->head_z, 0, 0, 1); + glTranslatef(0, 0.3f, 0); + SET_ID(0); + draw_head(); } - else - gfx_rotatef(12, 0, 0, 1); - glTranslatef(0, -0.05f, 0); - SET_ID(2); - draw_limb(); - glTranslatef(0, -0.45f, 0); - SET_ID(15); - draw_sphere_pointzero75(); - if(joints != NULL) + POP_MATRIX; + gfx_push_matrix(); { - gfx_rotatef(joints->larm_x, 1, 0, 0); - gfx_rotatef(joints->larm_y, 0, 1, 0); + /// Left Shoulder + glTranslatef(0.2f, 0.2f, 0); + SET_ID(13); + draw_sphere_pointzero75(); + + /// Upper Left Arm + glRotatef(joints->lshoulder_x, 1, 0, 0); + glRotatef(joints->lshoulder_y, 0, 1, 0); + glRotatef(joints->lshoulder_z + 12, 0, 0, 1); + glTranslatef(0, -0.05f, 0); + SET_ID(2); + draw_limb(); + + /// Left Elbow + glTranslatef(0, -0.45f, 0); + SET_ID(15); + draw_sphere_pointzero75(); + + /// Left Arm + glRotatef(joints->larm_x, 1, 0, 0); + glRotatef(joints->larm_y, 0, 1, 0); + glRotatef(-12, 0, 0, 1); + glTranslatef(0, -0.05f, 0); + SET_ID(4); + draw_limb(); + + /// Left Wrist + glTranslatef(0, -0.45f, 0); + SET_ID(14); + draw_sphere_pointzero75(); + + /// Left Hand + glRotatef(joints->lhand_x, 1, 0, 0); + glTranslatef(-0.03f, -0.06f, 0); + SET_ID(6); + draw_left_hand(); } - gfx_rotatef(-12, 0, 0, 1); - glTranslatef(0, -0.05f, 0); - SET_ID(4); - draw_limb(); - glTranslatef(0, -0.45f, 0); - SET_ID(14); - draw_sphere_pointzero75(); - if(joints != NULL) - gfx_rotatef(joints->lhand_x, 1, 0, 0); - glTranslatef(-0.03f, -0.06f, 0); - SET_ID(6); - draw_left_hand(); - } - POP_MATRIX; //end left hand - gfx_push_matrix(); //right hand - { - glTranslatef(-0.2f, 0.2f, 0); - SET_ID(13); - draw_sphere_pointzero75(); - if(joints != NULL) + POP_MATRIX; + gfx_push_matrix(); { - gfx_rotatef(joints->rshoulder_x, 1, 0, 0); - gfx_rotatef(joints->rshoulder_y, 0, 1, 0); - gfx_rotatef(joints->rshoulder_z - 12, 0, 0, 1); + /// Right Shoulder + glTranslatef(-0.2f, 0.2f, 0); + SET_ID(13); + draw_sphere_pointzero75(); + + /// Upper Right Arm + glRotatef(joints->rshoulder_x, 1, 0, 0); + glRotatef(joints->rshoulder_y, 0, 1, 0); + glRotatef(joints->rshoulder_z - 12, 0, 0, 1); + glTranslatef(0, -0.05f, 0); + SET_ID(3); + draw_limb(); + + /// Right Elbow + glTranslatef(0, -0.45f, 0); + SET_ID(15); + draw_sphere_pointzero75(); + + /// Right Arm + glRotatef(joints->rarm_x, 1, 0, 0); + glRotatef(joints->rarm_y, 0, 1, 0); + glRotatef(12, 0, 0, 1); + glTranslatef(0, -0.05f, 0); + SET_ID(5); + draw_limb(); + + /// Right Wrist + glTranslatef(0, -0.45f, 0); + SET_ID(14); + draw_sphere_pointzero75(); + + /// Right Hand + glRotatef(joints->rhand_x, 1, 0, 0); + glTranslatef(0.03f, -0.06f, 0); + SET_ID(6); + draw_right_hand(); } - else - gfx_rotatef(-12, 0, 0, 1); - glTranslatef(0, -0.05f, 0); - SET_ID(3); - draw_limb(); - glTranslatef(0, -0.45f, 0); - SET_ID(15); - draw_sphere_pointzero75(); - if(joints != NULL) + POP_MATRIX; + gfx_push_matrix(); { - gfx_rotatef(joints->rarm_x, 1, 0, 0); - gfx_rotatef(joints->rarm_y, 0, 1, 0); + /// Hip + SET_ID(13); + glTranslatef(0, -0.32f, 0); + draw_sphere_point1(); + + /// Lower Body + glRotatef(joints->waist_y, 0, 1, 0); + glRotatef(joints->waist_z, 0, 0, 1); + glTranslatef(0, -0.32f, 0); + SET_ID(1); + draw_lower_body(); + + gfx_push_matrix(); + { + /// Left...um...Buttocks + glTranslatef(0.1f, -0.06f, 0); + SET_ID(12); + draw_sphere_pointzero75(); + + /// Left Thigh + glRotatef(joints->lthigh_x, 1, 0, 0); + glRotatef(joints->lthigh_y, 0, 1, 0); + glRotatef(joints->lthigh_z, 0, 0, 1); + glTranslatef(0, -0.05f, 0); + SET_ID(7); + draw_limb(); + + /// Left Knee + glTranslatef(0, -0.45f, 0); + SET_ID(12); + draw_sphere_pointzero75(); + + /// Left Leg + glRotatef(joints->lleg_x, 1, 0, 0); + glTranslatef(0, -0.05f, 0); + SET_ID(9); + draw_limb(); + + /// Left Ankle + glTranslatef(0, -0.45f, 0); + SET_ID(13); + draw_sphere_pointzero75(); + + /// Left Foot + glRotatef(joints->lfoot_x, 1, 0, 0); + glTranslatef(0.01f, -0.15f, 0.025f); + SET_ID(11); + draw_foot(); + } + POP_MATRIX; + gfx_push_matrix(); + { + /// Right Buttocks + glTranslatef(-0.1f, -0.06f, 0); + SET_ID(12); + draw_sphere_pointzero75(); + + /// Right Thigh + glRotatef(joints->rthigh_x, 1, 0, 0); + glRotatef(joints->rthigh_y, 0, 1, 0); + glRotatef(joints->rthigh_z, 0, 0, 1); + glTranslatef(0, -0.05f, 0); + SET_ID(8); + draw_limb(); + + /// Right Knee + glTranslatef(0, -0.45f, 0); + SET_ID(12); + draw_sphere_pointzero75(); + + /// Right Leg + glRotatef(joints->rleg_x, 1, 0, 0); + glTranslatef(0, -0.05f, 0); + SET_ID(10); + draw_limb(); + + /// Right Ankle + glTranslatef(0, -0.45f, 0); + SET_ID(13); + draw_sphere_pointzero75(); + + /// Right Foot + glRotatef(joints->rfoot_x, 1, 0, 0); + glTranslatef(-0.01f, -0.15f, 0.025f); + SET_ID(11); + draw_foot(); + } + POP_MATRIX; } - gfx_rotatef(12, 0, 0, 1); - glTranslatef(0, -0.05f, 0); - SET_ID(5); - draw_limb(); - glTranslatef(0, -0.45f, 0); - SET_ID(14); - draw_sphere_pointzero75(); - if(joints != NULL) - gfx_rotatef(joints->rhand_x, 1, 0, 0); - glTranslatef(0.03f, -0.06f, 0); - SET_ID(6); - draw_right_hand(); + POP_MATRIX; } - POP_MATRIX; //end right hand - gfx_push_matrix(); //waist, lower body + /// If the given joints was NULL... + else { - SET_ID(13); - glTranslatef(0, -0.32f, 0); - draw_sphere_point1(); - if(joints != NULL) - { - gfx_rotatef(joints->waist_y, 0, 1, 0); - gfx_rotatef(joints->waist_z, 0, 0, 1); - } - glTranslatef(0, -0.32f, 0); + glTranslatef(0, 1.875f, 0); SET_ID(1); - draw_lower_body(); - gfx_push_matrix(); //left leg + draw_body(); + gfx_push_matrix(); //neck, head { - glTranslatef(0.1f, -0.06f, 0); + glTranslatef(0, 0.3f, 0); SET_ID(12); draw_sphere_pointzero75(); - if(joints != NULL) - { - gfx_rotatef(joints->lthigh_x, 1, 0, 0); - gfx_rotatef(joints->lthigh_y, 0, 1, 0); - gfx_rotatef(joints->lthigh_z, 0, 0, 1); - } + glTranslatef(0, 0.3f, 0); + SET_ID(0); + draw_head(); + } + POP_MATRIX; //end neck, hand + gfx_push_matrix(); //left hand + { + glTranslatef(0.2f, 0.2f, 0); + SET_ID(13); + draw_sphere_pointzero75(); + glRotatef(12, 0, 0, 1); glTranslatef(0, -0.05f, 0); - SET_ID(7); + SET_ID(2); draw_limb(); glTranslatef(0, -0.45f, 0); - SET_ID(12); + SET_ID(15); draw_sphere_pointzero75(); - if(joints != NULL) - gfx_rotatef(joints->lleg_x, 1, 0, 0); + glRotatef(-12, 0, 0, 1); glTranslatef(0, -0.05f, 0); - SET_ID(9); + SET_ID(4); draw_limb(); glTranslatef(0, -0.45f, 0); - SET_ID(13); + SET_ID(14); draw_sphere_pointzero75(); - if(joints != NULL) - gfx_rotatef(joints->lfoot_x, 1, 0, 0); - glTranslatef(0.01f, -0.15f, 0.025f); - SET_ID(11); - draw_foot(); + glTranslatef(-0.03f, -0.06f, 0); + SET_ID(6); + draw_left_hand(); } - POP_MATRIX; //end left leg - gfx_push_matrix(); //right leg + POP_MATRIX; //end left hand + gfx_push_matrix(); //right hand { - glTranslatef(-0.1f, -0.06f, 0); - SET_ID(12); + glTranslatef(-0.2f, 0.2f, 0); + SET_ID(13); draw_sphere_pointzero75(); - if(joints != NULL) - { - gfx_rotatef(joints->rthigh_x, 1, 0, 0); - gfx_rotatef(joints->rthigh_y, 0, 1, 0); - gfx_rotatef(joints->rthigh_z, 0, 0, 1); - } + glRotatef(-12, 0, 0, 1); glTranslatef(0, -0.05f, 0); - SET_ID(8); + SET_ID(3); draw_limb(); glTranslatef(0, -0.45f, 0); - SET_ID(12); + SET_ID(15); draw_sphere_pointzero75(); - if(joints != NULL) - gfx_rotatef(joints->rleg_x, 1, 0, 0); + glRotatef(12, 0, 0, 1); glTranslatef(0, -0.05f, 0); - SET_ID(10); + SET_ID(5); draw_limb(); glTranslatef(0, -0.45f, 0); - SET_ID(13); + SET_ID(14); draw_sphere_pointzero75(); - if(joints != NULL) - gfx_rotatef(joints->rfoot_x, 1, 0, 0); - glTranslatef(-0.01f, -0.15f, 0.025f); - SET_ID(11); - draw_foot(); + glTranslatef(0.03f, -0.06f, 0); + SET_ID(6); + draw_right_hand(); + } + POP_MATRIX; //end right hand + gfx_push_matrix(); //waist, lower body + { + SET_ID(13); + glTranslatef(0, -0.32f, 0); + draw_sphere_point1(); + glTranslatef(0, -0.32f, 0); + SET_ID(1); + draw_lower_body(); + gfx_push_matrix(); //left leg + { + glTranslatef(0.1f, -0.06f, 0); + SET_ID(12); + draw_sphere_pointzero75(); + glTranslatef(0, -0.05f, 0); + SET_ID(7); + draw_limb(); + glTranslatef(0, -0.45f, 0); + SET_ID(12); + draw_sphere_pointzero75(); + glTranslatef(0, -0.05f, 0); + SET_ID(9); + draw_limb(); + glTranslatef(0, -0.45f, 0); + SET_ID(13); + draw_sphere_pointzero75(); + glTranslatef(0.01f, -0.15f, 0.025f); + SET_ID(11); + draw_foot(); + } + POP_MATRIX; //end left leg + gfx_push_matrix(); //right leg + { + glTranslatef(-0.1f, -0.06f, 0); + SET_ID(12); + draw_sphere_pointzero75(); + glTranslatef(0, -0.05f, 0); + SET_ID(8); + draw_limb(); + glTranslatef(0, -0.45f, 0); + SET_ID(12); + draw_sphere_pointzero75(); + glTranslatef(0, -0.05f, 0); + SET_ID(10); + draw_limb(); + glTranslatef(0, -0.45f, 0); + SET_ID(13); + draw_sphere_pointzero75(); + glTranslatef(-0.01f, -0.15f, 0.025f); + SET_ID(11); + draw_foot(); + } + POP_MATRIX; //end right leg } - POP_MATRIX; //end right leg + POP_MATRIX; //end lower body } - POP_MATRIX; //end lower body } POP_MATRIX; //end body } +/** Rotates the current matrix by angle "angle" at vector (follows the right-hand rule) + * @param angle The angle to rotate by (DEGREES!) + * @param x The X-Coordinate of the vector to rotate around + * @param y The Y-Coordinate of the vector to rotate around + * @param z The Z-Coordinate of the vector to rotate around + */ void gfx_rotatef(float angle, float x, float y, float z) { glRotatef(angle, x, y, z); } - +/** Translates the current matrix by vector + * @param x The X-Coordinate of the vector to translate to + * @param y The Y-Coordinate of the vector to translate to + * @param z The Z-Coordinate of the vector to translate to + */ void gfx_translatef(float x, float y, float z) { glTranslatef(x, y, z); } - +/// Pushes a matrix void gfx_push_matrix() { glPushMatrix(); } - +/// Pops a matrix void gfx_pop_matrix() { POP_MATRIX; } - +/// Sets the current matrix to the identity matrix void gfx_identity() { glLoadIdentity(); } - +/** Set the color + * @param r The intensity of red from 0 to 1.0f, 1.0f being the brightest + * @param g The intensity of green from 0 to 1.0f, 1.0f being the brightest + * @param b The intensity of blue from 0 to 1.0f, 1.0f being the brightest + */ void gfx_color3f(float r, float g, float b) { #ifndef ECHO_NDS @@ -483,86 +563,49 @@ void gfx_color3f(float r, float g, float b) glColor3f(r, g, b); } -//From http://www.codeproject.com/KB/openGL/Outline_Mode.aspx #ifndef ECHO_NDS -#define OUTLINE_POLYOFFSET -void gfx_outline_start() -{ - drawing_outline = 1; -#ifdef OUTLINE_POLYOFFSET - //Method 1 - // Push the GL attribute bits so that we don't wreck any settings - - glPushAttrib( GL_ALL_ATTRIB_BITS ); - // Enable polygon offsets, and offset filled polygons forward by 2.5 - - glEnable( GL_POLYGON_OFFSET_FILL ); - glPolygonOffset( -2.5f, -2.5f ); - // Set the render mode to be line rendering with a thick line width - - glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); - glLineWidth( 4.0f ); - // Set the colour to be white - - glColor3f( 0.0f, 0.0f, 0.0f ); -#else - //Method 2 - // Push the GL attribute bits so that we don't wreck any settings - - glPushAttrib( GL_ALL_ATTRIB_BITS ); - // Set the clear value for the stencil buffer, then clear it - - glClearStencil(0); - glClear( GL_STENCIL_BUFFER_BIT ); - glEnable( GL_STENCIL_TEST ); - // Set the stencil buffer to write a 1 in every time - // a pixel is written to the screen - - glStencilFunc( GL_ALWAYS, 1, 0xFFFF ); - glStencilOp( GL_KEEP, GL_KEEP, GL_REPLACE ); - // Render the object in black - - glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); - glColor3f( 1.0f, 1.0f, 1.0f ); -#endif -} -void gfx_outline_mid() -{ - drawing_outline = 0; -#ifdef OUTLINE_POLYOFFSET - //Method 1 - // Set the polygon mode to be filled triangles - - glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); - // Set the colour to the background - - glColor3f( 1.0f, 1.0f, 1.0f ); -#else - //Method 2 - // Set the stencil buffer to only allow writing - // to the screen when the value of the - // stencil buffer is not 1 - - glStencilFunc( GL_NOTEQUAL, 1, 0xFFFF ); - glStencilOp( GL_KEEP, GL_KEEP, GL_REPLACE ); - // Draw the object with thick lines - - glLineWidth( 3.0f ); - glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); - glColor3f( 0.0f, 0.0f, 0.0f ); -#endif -} -void gfx_outline_end() -{ - // Pop the state changes off the attribute stack - // to set things back how they were - - glPopAttrib(); -} + /// Adapted from http://www.codeproject.com/KB/openGL/Outline_Mode.aspx + void gfx_outline_start() + { + drawing_outline = 1; + //Method 1 + // Push the GL attribute bits so that we don't wreck any settings + + glPushAttrib( GL_ALL_ATTRIB_BITS ); + // Enable polygon offsets, and offset filled polygons forward by 2.5 + + glEnable( GL_POLYGON_OFFSET_FILL ); + glPolygonOffset( -2.5f, -2.5f ); + // Set the render mode to be line rendering with a thick line width + + glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); + glLineWidth( 4.0f ); + // Set the colour to be white + + glColor3f( 0.0f, 0.0f, 0.0f ); + } + void gfx_outline_mid() + { + drawing_outline = 0; + //Method 1 + // Set the polygon mode to be filled triangles + + glPolygonMode( GL_FRONT_AND_BACK, GL_FILL ); + // Set the colour to the background + + glColor3f( 1.0f, 1.0f, 1.0f ); + } + void gfx_outline_end() + { + // Pop the state changes off the attribute stack + // to set things back how they were + + glPopAttrib(); + } #else -void gfx_set_polyID(unsigned int polyID) -{ - SET_ID(polyID); -} + void gfx_set_polyID(unsigned int polyID) + { + SET_ID(polyID); + } #endif diff --git a/echo_gfx.h b/echo_gfx.h index b916c0f..a50b6bf 100644 --- a/echo_gfx.h +++ b/echo_gfx.h @@ -17,54 +17,126 @@ along with L-Echo. If not, see . */ -#include +/// Various L-Echo libraries #include #include +#include -void draw_line(float x1, float y1, float z1, float x2, float y2, float z2); -void draw_line(vector3f p1, vector3f p2); -void draw_rect(vector3f p1, vector3f p2, vector3f p3, vector3f p4); +/// Need NDS library for the definition of v16 +#ifdef ECHO_NDS + #include +#endif + +/** Draws a WHITE rectangle (actually, a quadrilateral) at the specified points + * @param p1 The first point + * @param p2 The second point + * @param p3 The third point + * @param p4 The fourth point + */ void draw_rect(vector3f* p1, vector3f* p2, vector3f* p3, vector3f* p4); +/// Draws a WHITE rectangle (actually, a quadrilateral) at the specified coordinates void draw_rect(float x1, float y1, float z1 , float x2, float y2, float z2 , float x3, float y3, float z3 , float x4, float y4, float z4); -#ifdef ARM9 -#include +#ifdef ECHO_NDS +/** Draws a WHITE rectangle (actually, a quadrilateral) at the specified coordinates + * Coordinates are in v16 (use floattof32 and f32tofloat to convert to and from) + */ void draw_rectv16(v16 x1, v16 y1, v16 z1 , v16 x2, v16 y2, v16 z2 , v16 x3, v16 y3, v16 z3 , v16 x4, v16 y4, v16 z4); #endif -void draw_head(); -void draw_body(); -void draw_lower_body(); -void draw_limb(); -void draw_hole(vector3f pos); + +/** Draw a hole (colored black) the size of grid at pos + * It's a filled square that is formed from the midpoints of the edges of the grid. + * @param pos Where to draw the hole + */ void draw_hole(vector3f* pos); -void draw_launcher(vector3f pos); +/** Draw a launcher the size of grid at pos + * It's a non-filled square that is formed from the midpoints of the edges of the grid. + * @param pos Where to draw the launcher + */ void draw_launcher(vector3f* pos); +/** Draw a goal ("echo") at pos + * @param pos Where to draw the goal + */ void draw_goal_gfx(vector3f* pos); +/** Draw a character with joint values as specified + * @param joints Joint values of the character + */ void draw_character(echo_char_joints* joints); + +/// These functions are NOT defined in echo_gfx.cpp, but generated +/// Draw the head of the character (does not translate) +void draw_head(); +/// Draw the body of the character (does not translate) +void draw_body(); +/// Draw the lower body of the character (does not translate) +void draw_lower_body(); +/// Draw a limb (arm, leg, thigh) of the character (does not translate) +void draw_limb(); +/// Draw a set stairs (does not translate) void draw_stairs(); +/// Draw the left hand of the character (does not translate) void draw_left_hand(); +/// Draw the right hand of the character (does not translate) void draw_right_hand(); +/// Draw a foot (does not translate) void draw_foot(); +/// Draw a sphere with radius 0.1f (Used for the hip) (does not translate) void draw_sphere_point1(); +/// Draw a sphere with radius 0.075f (Used for joints) (does not translate) void draw_sphere_pointzero75(); +/** These functions encapsulate the functionality of their GL equivalents; + * used by other files that do not include GL + */ +/// Sets the current matrix to the identity matrix void gfx_identity(); +/// Pushes a matrix void gfx_push_matrix(); +/// Pops a matrix void gfx_pop_matrix(); +/** Rotates the current matrix by angle "angle" at vector (follows the right-hand rule) + * @param angle The angle to rotate by (DEGREES!) + * @param x The X-Coordinate of the vector to rotate around + * @param y The Y-Coordinate of the vector to rotate around + * @param z The Z-Coordinate of the vector to rotate around + */ void gfx_rotatef(float angle, float x, float y, float z); +/** Translates the current matrix by vector + * @param x The X-Coordinate of the vector to translate to + * @param y The Y-Coordinate of the vector to translate to + * @param z The Z-Coordinate of the vector to translate to + */ void gfx_translatef(float x, float y, float z); +/** Set the color + * @param r The intensity of red from 0 to 1.0f, 1.0f being the brightest + * @param g The intensity of green from 0 to 1.0f, 1.0f being the brightest + * @param b The intensity of blue from 0 to 1.0f, 1.0f being the brightest + */ void gfx_color3f(float r, float g, float b); -#ifndef ARM9 -void gfx_outline_start(); -void gfx_outline_mid(); -void gfx_outline_end(); +#ifndef ECHO_NDS + /// Call before 1st render + void gfx_outline_start(); + /// Call between the 1st and 2nd renders + void gfx_outline_mid(); + /// Call after the second render + void gfx_outline_end(); #else -void gfx_set_polyID(unsigned int polyID); + /** Sets the polygon ID of the following polygons to polyID. + * This is used to force polygons to have different outlines. + * As there is a limited number of polyIDs, they are split up like so: + * 0 - 15: The character's various parts + * 16 - 18: Stairs + * 19 - 45: Grids + * PolyIDs of grids are split up among freeform_grids and non-freeform_grids, + * and they in turn are split up among each level. + * @param polyID The polyID from 0 to 63. + */ + void gfx_set_polyID(unsigned int polyID); #endif diff --git a/echo_ingame_loader.h b/echo_ingame_loader.h index a6606be..d3c8493 100644 --- a/echo_ingame_loader.h +++ b/echo_ingame_loader.h @@ -17,27 +17,39 @@ along with L-Echo. If not, see . */ +#include #include #include #ifndef __ECHO_INTERNAL_FILES__ #define __ECHO_INTERNAL_FILES__ -typedef struct +/** @brief A list of files;\n + * Used for menus and loading. + */ +struct echo_files { + /// The current directory; ALWAYS dynamically allocated char* current_dir; + /// Array of files names; this array and file names are always ALWAYS dynamically allocated char** file_names; + /// The number of file names contained in file_names. int num_files; -#ifdef ARM9 +#ifdef ECHO_NDS + /** The NDS can't use stat for some reason (at loeast, when I wrote this + * loader), so the directories are placed at the top when loading. + * num_dir is the number of directories there are, and thus the index + * to the first file. + */ int num_dir; #endif -} echo_files; +}; #endif STATUS delete_echo_files(echo_files* files); -#ifndef ARM9 -int is_dir(const char* dir, const char* fname); -int is_dir(const char* fname); +#ifndef ECHO_NDS + int is_dir(const char* dir, const char* fname); + int is_dir(const char* fname); #endif char* echo_merge(const char* arg1, const char* arg2); diff --git a/echo_math.cpp b/echo_math.cpp index 6d6d534..d29e37a 100644 --- a/echo_math.cpp +++ b/echo_math.cpp @@ -33,7 +33,7 @@ #define ECHO_SINI(deg) ((int)f32tofloat(sinLerp(degreesToAngle(deg)))) #define ECHO_SINF(deg) (f32tofloat(sinLerp(degreesToAngle(deg)))) - #define ECHO_ACOSF_DEG(ratio) (angleToDegrees(acosLerp(floatToFixed((ratio), 12)))) + #define ECHO_ACOSF_DEG(ratio) (angleToDegrees(acosLerp(floattof32(ratio)))) #else static float cos_table[360]; diff --git a/echo_model_stairs.cpp b/echo_model_stairs.cpp index 6ea0671..3775a56 100644 --- a/echo_model_stairs.cpp +++ b/echo_model_stairs.cpp @@ -34,7 +34,7 @@ //stats: LATS: 6, ANGLE_INCR: 0.523599, NDS_LATS: 2, NDS_ANGLE_INCR: 1.570796 -#ifdef ARM9 +#ifdef ECHO_NDS #define SET_ID(id) gfx_set_polyID(id) #else #define SET_ID(id) diff --git a/escgrid.cpp b/escgrid.cpp index b041208..197ce72 100644 --- a/escgrid.cpp +++ b/escgrid.cpp @@ -231,7 +231,7 @@ int escgrid::num_neighbors(vector3f angle) return(esc ? esc->num_neighbors(angle) : grid::num_neighbors(angle)); } -#ifdef ARM9 +#ifdef ECHO_NDS unsigned int escgrid::get_polyID(vector3f angle) { grid* esc = get_esc(angle); diff --git a/escgrid.h b/escgrid.h index 8d76cbd..aaef7fb 100644 --- a/escgrid.h +++ b/escgrid.h @@ -61,7 +61,7 @@ class escgrid : public grid virtual void init_to_null(); grid* get_esc(vector3f angle); -#ifdef ARM9 +#ifdef ECHO_NDS virtual unsigned int get_polyID(vector3f angle); #endif protected: diff --git a/gen/gen_stairs.c b/gen/gen_stairs.c index 7deaa3f..7525ecf 100644 --- a/gen/gen_stairs.c +++ b/gen/gen_stairs.c @@ -7,7 +7,7 @@ int main() { PRINT_STATS; float each = -0.5f; - printf("#ifdef ARM9\n"); + printf("#ifdef ECHO_NDS\n"); printf("\t#define SET_ID(id) gfx_set_polyID(id)\n"); printf("#else\n"); printf("\t#define SET_ID(id)\n"); diff --git a/grid.cpp b/grid.cpp index fc6ddd7..74a946e 100644 --- a/grid.cpp +++ b/grid.cpp @@ -83,7 +83,7 @@ void grid::init_to_null() neighbors = NULL; triggers = NULL; points = NULL; -#ifdef ARM9 +#ifdef ECHO_NDS polyID = 0; #endif already_init = 1;