diff options
| author | manuel <manuel@nc8430.lan> | 2009-04-27 00:25:16 +0200 |
|---|---|---|
| committer | manuel <manuel@nc8430.lan> | 2009-04-27 00:25:16 +0200 |
| commit | aa139a7d2b3f26af7590edbf413df67195c5d900 (patch) | |
| tree | ba99ea3b2af9aa191386550f025520117f18f4f8 | |
| parent | 384539f7cc9feaa7ef7cee385cce472c6966c843 (diff) | |
| download | ooprog-aa139a7d2b3f26af7590edbf413df67195c5d900.tar.gz ooprog-aa139a7d2b3f26af7590edbf413df67195c5d900.tar.bz2 ooprog-aa139a7d2b3f26af7590edbf413df67195c5d900.zip | |
Adding ue2
39 files changed, 3678 insertions, 0 deletions
diff --git a/ue2/Makefile b/ue2/Makefile new file mode 100644 index 0000000..1ee99ae --- /dev/null +++ b/ue2/Makefile | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | # Makefile for ue2 | ||
| 2 | # Author: Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 3 | # Created: 26.04.2009 | ||
| 4 | |||
| 5 | SUBDIRS= imgsynth2 | ||
| 6 | RECURSIVE_TARGETS= all-recursive debug test clean | ||
| 7 | |||
| 8 | all: all-recursive | ||
| 9 | |||
| 10 | $(RECURSIVE_TARGETS): | ||
| 11 | @failcom='exit 1'; \ | ||
| 12 | target=`echo $@ | sed s/-recursive//`; \ | ||
| 13 | list='$(SUBDIRS)'; for subdir in $$list; do \ | ||
| 14 | echo "Making $$target in $$subdir"; \ | ||
| 15 | (cd $$subdir && $(MAKE) $$target) \ | ||
| 16 | || eval $$failcom; \ | ||
| 17 | done; \ | ||
| 18 | test -z "$$fail" | ||
| 19 | |||
| 20 | doxygen: | ||
| 21 | @doxygen doxygen.conf | ||
| 22 | |||
| 23 | protokoll: | ||
| 24 | @echo "Making protokoll"; \ | ||
| 25 | (cd protokoll && $(MAKE)) | ||
| 26 | |||
| 27 | .PHONY: protokoll doxygen clean | ||
| 28 | |||
| 29 | # vim600: noet sw=8 ts=8 | ||
diff --git a/ue2/angabe.pdf b/ue2/angabe.pdf new file mode 100644 index 0000000..dc6df65 --- /dev/null +++ b/ue2/angabe.pdf | |||
| Binary files differ | |||
diff --git a/ue2/doxygen.conf b/ue2/doxygen.conf new file mode 100644 index 0000000..4ea8eec --- /dev/null +++ b/ue2/doxygen.conf | |||
| @@ -0,0 +1,1299 @@ | |||
| 1 | # Doxyfile 1.5.3 | ||
| 2 | |||
| 3 | # This file describes the settings to be used by the documentation system | ||
| 4 | # doxygen (www.doxygen.org) for a project | ||
| 5 | # | ||
| 6 | # All text after a hash (#) is considered a comment and will be ignored | ||
| 7 | # The format is: | ||
| 8 | # TAG = value [value, ...] | ||
| 9 | # For lists items can also be appended using: | ||
| 10 | # TAG += value [value, ...] | ||
| 11 | # Values that contain spaces should be placed between quotes (" ") | ||
| 12 | |||
| 13 | #--------------------------------------------------------------------------- | ||
| 14 | # Project related configuration options | ||
| 15 | #--------------------------------------------------------------------------- | ||
| 16 | |||
| 17 | # This tag specifies the encoding used for all characters in the config file that | ||
| 18 | # follow. The default is UTF-8 which is also the encoding used for all text before | ||
| 19 | # the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into | ||
| 20 | # libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of | ||
| 21 | # possible encodings. | ||
| 22 | |||
| 23 | DOXYFILE_ENCODING = UTF-8 | ||
| 24 | |||
| 25 | # The PROJECT_NAME tag is a single word (or a sequence of words surrounded | ||
| 26 | # by quotes) that should identify the project. | ||
| 27 | |||
| 28 | PROJECT_NAME = imgsynth | ||
| 29 | |||
| 30 | # The PROJECT_NUMBER tag can be used to enter a project or revision number. | ||
| 31 | # This could be handy for archiving the generated documentation or | ||
| 32 | # if some version control system is used. | ||
| 33 | |||
| 34 | PROJECT_NUMBER = | ||
| 35 | |||
| 36 | # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) | ||
| 37 | # base path where the generated documentation will be put. | ||
| 38 | # If a relative path is entered, it will be relative to the location | ||
| 39 | # where doxygen was started. If left blank the current directory will be used. | ||
| 40 | |||
| 41 | OUTPUT_DIRECTORY = doxygen/ | ||
| 42 | |||
| 43 | # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create | ||
| 44 | # 4096 sub-directories (in 2 levels) under the output directory of each output | ||
| 45 | # format and will distribute the generated files over these directories. | ||
| 46 | # Enabling this option can be useful when feeding doxygen a huge amount of | ||
| 47 | # source files, where putting all generated files in the same directory would | ||
| 48 | # otherwise cause performance problems for the file system. | ||
| 49 | |||
| 50 | CREATE_SUBDIRS = NO | ||
| 51 | |||
| 52 | # The OUTPUT_LANGUAGE tag is used to specify the language in which all | ||
| 53 | # documentation generated by doxygen is written. Doxygen will use this | ||
| 54 | # information to generate all constant output in the proper language. | ||
| 55 | # The default language is English, other supported languages are: | ||
| 56 | # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, | ||
| 57 | # Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, | ||
| 58 | # Italian, Japanese, Japanese-en (Japanese with English messages), Korean, | ||
| 59 | # Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, | ||
| 60 | # Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. | ||
| 61 | |||
| 62 | OUTPUT_LANGUAGE = English | ||
| 63 | |||
| 64 | # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will | ||
| 65 | # include brief member descriptions after the members that are listed in | ||
| 66 | # the file and class documentation (similar to JavaDoc). | ||
| 67 | # Set to NO to disable this. | ||
| 68 | |||
| 69 | BRIEF_MEMBER_DESC = YES | ||
| 70 | |||
| 71 | # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend | ||
| 72 | # the brief description of a member or function before the detailed description. | ||
| 73 | # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the | ||
| 74 | # brief descriptions will be completely suppressed. | ||
| 75 | |||
| 76 | REPEAT_BRIEF = YES | ||
| 77 | |||
| 78 | # This tag implements a quasi-intelligent brief description abbreviator | ||
| 79 | # that is used to form the text in various listings. Each string | ||
| 80 | # in this list, if found as the leading text of the brief description, will be | ||
| 81 | # stripped from the text and the result after processing the whole list, is | ||
| 82 | # used as the annotated text. Otherwise, the brief description is used as-is. | ||
| 83 | # If left blank, the following values are used ("$name" is automatically | ||
| 84 | # replaced with the name of the entity): "The $name class" "The $name widget" | ||
| 85 | # "The $name file" "is" "provides" "specifies" "contains" | ||
| 86 | # "represents" "a" "an" "the" | ||
| 87 | |||
| 88 | ABBREVIATE_BRIEF = | ||
| 89 | |||
| 90 | # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then | ||
| 91 | # Doxygen will generate a detailed section even if there is only a brief | ||
| 92 | # description. | ||
| 93 | |||
| 94 | ALWAYS_DETAILED_SEC = NO | ||
| 95 | |||
| 96 | # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all | ||
| 97 | # inherited members of a class in the documentation of that class as if those | ||
| 98 | # members were ordinary class members. Constructors, destructors and assignment | ||
| 99 | # operators of the base classes will not be shown. | ||
| 100 | |||
| 101 | INLINE_INHERITED_MEMB = NO | ||
| 102 | |||
| 103 | # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full | ||
| 104 | # path before files name in the file list and in the header files. If set | ||
| 105 | # to NO the shortest path that makes the file name unique will be used. | ||
| 106 | |||
| 107 | FULL_PATH_NAMES = YES | ||
| 108 | |||
| 109 | # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag | ||
| 110 | # can be used to strip a user-defined part of the path. Stripping is | ||
| 111 | # only done if one of the specified strings matches the left-hand part of | ||
| 112 | # the path. The tag can be used to show relative paths in the file list. | ||
| 113 | # If left blank the directory from which doxygen is run is used as the | ||
| 114 | # path to strip. | ||
| 115 | |||
| 116 | STRIP_FROM_PATH = | ||
| 117 | |||
| 118 | # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of | ||
| 119 | # the path mentioned in the documentation of a class, which tells | ||
| 120 | # the reader which header file to include in order to use a class. | ||
| 121 | # If left blank only the name of the header file containing the class | ||
| 122 | # definition is used. Otherwise one should specify the include paths that | ||
| 123 | # are normally passed to the compiler using the -I flag. | ||
| 124 | |||
| 125 | STRIP_FROM_INC_PATH = | ||
| 126 | |||
| 127 | # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter | ||
| 128 | # (but less readable) file names. This can be useful is your file systems | ||
| 129 | # doesn't support long names like on DOS, Mac, or CD-ROM. | ||
| 130 | |||
| 131 | SHORT_NAMES = NO | ||
| 132 | |||
| 133 | # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen | ||
| 134 | # will interpret the first line (until the first dot) of a JavaDoc-style | ||
| 135 | # comment as the brief description. If set to NO, the JavaDoc | ||
| 136 | # comments will behave just like regular Qt-style comments | ||
| 137 | # (thus requiring an explicit @brief command for a brief description.) | ||
| 138 | |||
| 139 | JAVADOC_AUTOBRIEF = NO | ||
| 140 | |||
| 141 | # If the QT_AUTOBRIEF tag is set to YES then Doxygen will | ||
| 142 | # interpret the first line (until the first dot) of a Qt-style | ||
| 143 | # comment as the brief description. If set to NO, the comments | ||
| 144 | # will behave just like regular Qt-style comments (thus requiring | ||
| 145 | # an explicit \brief command for a brief description.) | ||
| 146 | |||
| 147 | QT_AUTOBRIEF = NO | ||
| 148 | |||
| 149 | # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen | ||
| 150 | # treat a multi-line C++ special comment block (i.e. a block of //! or /// | ||
| 151 | # comments) as a brief description. This used to be the default behaviour. | ||
| 152 | # The new default is to treat a multi-line C++ comment block as a detailed | ||
| 153 | # description. Set this tag to YES if you prefer the old behaviour instead. | ||
| 154 | |||
| 155 | MULTILINE_CPP_IS_BRIEF = NO | ||
| 156 | |||
| 157 | # If the DETAILS_AT_TOP tag is set to YES then Doxygen | ||
| 158 | # will output the detailed description near the top, like JavaDoc. | ||
| 159 | # If set to NO, the detailed description appears after the member | ||
| 160 | # documentation. | ||
| 161 | |||
| 162 | DETAILS_AT_TOP = NO | ||
| 163 | |||
| 164 | # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented | ||
| 165 | # member inherits the documentation from any documented member that it | ||
| 166 | # re-implements. | ||
| 167 | |||
| 168 | INHERIT_DOCS = YES | ||
| 169 | |||
| 170 | # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce | ||
| 171 | # a new page for each member. If set to NO, the documentation of a member will | ||
| 172 | # be part of the file/class/namespace that contains it. | ||
| 173 | |||
| 174 | SEPARATE_MEMBER_PAGES = NO | ||
| 175 | |||
| 176 | # The TAB_SIZE tag can be used to set the number of spaces in a tab. | ||
| 177 | # Doxygen uses this value to replace tabs by spaces in code fragments. | ||
| 178 | |||
| 179 | TAB_SIZE = 8 | ||
| 180 | |||
| 181 | # This tag can be used to specify a number of aliases that acts | ||
| 182 | # as commands in the documentation. An alias has the form "name=value". | ||
| 183 | # For example adding "sideeffect=\par Side Effects:\n" will allow you to | ||
| 184 | # put the command \sideeffect (or @sideeffect) in the documentation, which | ||
| 185 | # will result in a user-defined paragraph with heading "Side Effects:". | ||
| 186 | # You can put \n's in the value part of an alias to insert newlines. | ||
| 187 | |||
| 188 | ALIASES = "module=\par Modulname:\n" | ||
| 189 | ALIASES += "func=\par Functionname:\n" | ||
| 190 | ALIASES += "method=\par Methodname:\n" | ||
| 191 | ALIASES += "globalvars=\par Global variables used:\n" | ||
| 192 | #ALIASES += "exceptions=\par Exceptions thrown:\n" | ||
| 193 | ALIASES += "conditions=\par Conditions:\n" | ||
| 194 | |||
| 195 | # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C | ||
| 196 | # sources only. Doxygen will then generate output that is more tailored for C. | ||
| 197 | # For instance, some of the names that are used will be different. The list | ||
| 198 | # of all members will be omitted, etc. | ||
| 199 | |||
| 200 | OPTIMIZE_OUTPUT_FOR_C = NO | ||
| 201 | |||
| 202 | # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java | ||
| 203 | # sources only. Doxygen will then generate output that is more tailored for Java. | ||
| 204 | # For instance, namespaces will be presented as packages, qualified scopes | ||
| 205 | # will look different, etc. | ||
| 206 | |||
| 207 | OPTIMIZE_OUTPUT_JAVA = NO | ||
| 208 | |||
| 209 | # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to | ||
| 210 | # include (a tag file for) the STL sources as input, then you should | ||
| 211 | # set this tag to YES in order to let doxygen match functions declarations and | ||
| 212 | # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. | ||
| 213 | # func(std::string) {}). This also make the inheritance and collaboration | ||
| 214 | # diagrams that involve STL classes more complete and accurate. | ||
| 215 | |||
| 216 | BUILTIN_STL_SUPPORT = NO | ||
| 217 | |||
| 218 | # If you use Microsoft's C++/CLI language, you should set this option to YES to | ||
| 219 | # enable parsing support. | ||
| 220 | |||
| 221 | CPP_CLI_SUPPORT = NO | ||
| 222 | |||
| 223 | # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC | ||
| 224 | # tag is set to YES, then doxygen will reuse the documentation of the first | ||
| 225 | # member in the group (if any) for the other members of the group. By default | ||
| 226 | # all members of a group must be documented explicitly. | ||
| 227 | |||
| 228 | DISTRIBUTE_GROUP_DOC = NO | ||
| 229 | |||
| 230 | # Set the SUBGROUPING tag to YES (the default) to allow class member groups of | ||
| 231 | # the same type (for instance a group of public functions) to be put as a | ||
| 232 | # subgroup of that type (e.g. under the Public Functions section). Set it to | ||
| 233 | # NO to prevent subgrouping. Alternatively, this can be done per class using | ||
| 234 | # the \nosubgrouping command. | ||
| 235 | |||
| 236 | SUBGROUPING = YES | ||
| 237 | |||
| 238 | #--------------------------------------------------------------------------- | ||
| 239 | # Build related configuration options | ||
| 240 | #--------------------------------------------------------------------------- | ||
| 241 | |||
| 242 | # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in | ||
| 243 | # documentation are documented, even if no documentation was available. | ||
| 244 | # Private class members and static file members will be hidden unless | ||
| 245 | # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES | ||
| 246 | |||
| 247 | EXTRACT_ALL = NO | ||
| 248 | |||
| 249 | # If the EXTRACT_PRIVATE tag is set to YES all private members of a class | ||
| 250 | # will be included in the documentation. | ||
| 251 | |||
| 252 | EXTRACT_PRIVATE = NO | ||
| 253 | |||
| 254 | # If the EXTRACT_STATIC tag is set to YES all static members of a file | ||
| 255 | # will be included in the documentation. | ||
| 256 | |||
| 257 | EXTRACT_STATIC = NO | ||
| 258 | |||
| 259 | # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) | ||
| 260 | # defined locally in source files will be included in the documentation. | ||
| 261 | # If set to NO only classes defined in header files are included. | ||
| 262 | |||
| 263 | EXTRACT_LOCAL_CLASSES = YES | ||
| 264 | |||
| 265 | # This flag is only useful for Objective-C code. When set to YES local | ||
| 266 | # methods, which are defined in the implementation section but not in | ||
| 267 | # the interface are included in the documentation. | ||
| 268 | # If set to NO (the default) only methods in the interface are included. | ||
| 269 | |||
| 270 | EXTRACT_LOCAL_METHODS = NO | ||
| 271 | |||
| 272 | # If this flag is set to YES, the members of anonymous namespaces will be extracted | ||
| 273 | # and appear in the documentation as a namespace called 'anonymous_namespace{file}', | ||
| 274 | # where file will be replaced with the base name of the file that contains the anonymous | ||
| 275 | # namespace. By default anonymous namespace are hidden. | ||
| 276 | |||
| 277 | EXTRACT_ANON_NSPACES = NO | ||
| 278 | |||
| 279 | # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all | ||
| 280 | # undocumented members of documented classes, files or namespaces. | ||
| 281 | # If set to NO (the default) these members will be included in the | ||
| 282 | # various overviews, but no documentation section is generated. | ||
| 283 | # This option has no effect if EXTRACT_ALL is enabled. | ||
| 284 | |||
| 285 | HIDE_UNDOC_MEMBERS = NO | ||
| 286 | |||
| 287 | # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all | ||
| 288 | # undocumented classes that are normally visible in the class hierarchy. | ||
| 289 | # If set to NO (the default) these classes will be included in the various | ||
| 290 | # overviews. This option has no effect if EXTRACT_ALL is enabled. | ||
| 291 | |||
| 292 | HIDE_UNDOC_CLASSES = NO | ||
| 293 | |||
| 294 | # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all | ||
| 295 | # friend (class|struct|union) declarations. | ||
| 296 | # If set to NO (the default) these declarations will be included in the | ||
| 297 | # documentation. | ||
| 298 | |||
| 299 | HIDE_FRIEND_COMPOUNDS = NO | ||
| 300 | |||
| 301 | # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any | ||
| 302 | # documentation blocks found inside the body of a function. | ||
| 303 | # If set to NO (the default) these blocks will be appended to the | ||
| 304 | # function's detailed documentation block. | ||
| 305 | |||
| 306 | HIDE_IN_BODY_DOCS = NO | ||
| 307 | |||
| 308 | # The INTERNAL_DOCS tag determines if documentation | ||
| 309 | # that is typed after a \internal command is included. If the tag is set | ||
| 310 | # to NO (the default) then the documentation will be excluded. | ||
| 311 | # Set it to YES to include the internal documentation. | ||
| 312 | |||
| 313 | INTERNAL_DOCS = NO | ||
| 314 | |||
| 315 | # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate | ||
| 316 | # file names in lower-case letters. If set to YES upper-case letters are also | ||
| 317 | # allowed. This is useful if you have classes or files whose names only differ | ||
| 318 | # in case and if your file system supports case sensitive file names. Windows | ||
| 319 | # and Mac users are advised to set this option to NO. | ||
| 320 | |||
| 321 | CASE_SENSE_NAMES = YES | ||
| 322 | |||
| 323 | # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen | ||
| 324 | # will show members with their full class and namespace scopes in the | ||
| 325 | # documentation. If set to YES the scope will be hidden. | ||
| 326 | |||
| 327 | HIDE_SCOPE_NAMES = NO | ||
| 328 | |||
| 329 | # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen | ||
| 330 | # will put a list of the files that are included by a file in the documentation | ||
| 331 | # of that file. | ||
| 332 | |||
| 333 | SHOW_INCLUDE_FILES = YES | ||
| 334 | |||
| 335 | # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] | ||
| 336 | # is inserted in the documentation for inline members. | ||
| 337 | |||
| 338 | INLINE_INFO = YES | ||
| 339 | |||
| 340 | # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen | ||
| 341 | # will sort the (detailed) documentation of file and class members | ||
| 342 | # alphabetically by member name. If set to NO the members will appear in | ||
| 343 | # declaration order. | ||
| 344 | |||
| 345 | SORT_MEMBER_DOCS = YES | ||
| 346 | |||
| 347 | # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the | ||
| 348 | # brief documentation of file, namespace and class members alphabetically | ||
| 349 | # by member name. If set to NO (the default) the members will appear in | ||
| 350 | # declaration order. | ||
| 351 | |||
| 352 | SORT_BRIEF_DOCS = NO | ||
| 353 | |||
| 354 | # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be | ||
| 355 | # sorted by fully-qualified names, including namespaces. If set to | ||
| 356 | # NO (the default), the class list will be sorted only by class name, | ||
| 357 | # not including the namespace part. | ||
| 358 | # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. | ||
| 359 | # Note: This option applies only to the class list, not to the | ||
| 360 | # alphabetical list. | ||
| 361 | |||
| 362 | SORT_BY_SCOPE_NAME = NO | ||
| 363 | |||
| 364 | # The GENERATE_TODOLIST tag can be used to enable (YES) or | ||
| 365 | # disable (NO) the todo list. This list is created by putting \todo | ||
| 366 | # commands in the documentation. | ||
| 367 | |||
| 368 | GENERATE_TODOLIST = YES | ||
| 369 | |||
| 370 | # The GENERATE_TESTLIST tag can be used to enable (YES) or | ||
| 371 | # disable (NO) the test list. This list is created by putting \test | ||
| 372 | # commands in the documentation. | ||
| 373 | |||
| 374 | GENERATE_TESTLIST = YES | ||
| 375 | |||
| 376 | # The GENERATE_BUGLIST tag can be used to enable (YES) or | ||
| 377 | # disable (NO) the bug list. This list is created by putting \bug | ||
| 378 | # commands in the documentation. | ||
| 379 | |||
| 380 | GENERATE_BUGLIST = YES | ||
| 381 | |||
| 382 | # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or | ||
| 383 | # disable (NO) the deprecated list. This list is created by putting | ||
| 384 | # \deprecated commands in the documentation. | ||
| 385 | |||
| 386 | GENERATE_DEPRECATEDLIST= YES | ||
| 387 | |||
| 388 | # The ENABLED_SECTIONS tag can be used to enable conditional | ||
| 389 | # documentation sections, marked by \if sectionname ... \endif. | ||
| 390 | |||
| 391 | ENABLED_SECTIONS = | ||
| 392 | |||
| 393 | # The MAX_INITIALIZER_LINES tag determines the maximum number of lines | ||
| 394 | # the initial value of a variable or define consists of for it to appear in | ||
| 395 | # the documentation. If the initializer consists of more lines than specified | ||
| 396 | # here it will be hidden. Use a value of 0 to hide initializers completely. | ||
| 397 | # The appearance of the initializer of individual variables and defines in the | ||
| 398 | # documentation can be controlled using \showinitializer or \hideinitializer | ||
| 399 | # command in the documentation regardless of this setting. | ||
| 400 | |||
| 401 | MAX_INITIALIZER_LINES = 30 | ||
| 402 | |||
| 403 | # Set the SHOW_USED_FILES tag to NO to disable the list of files generated | ||
| 404 | # at the bottom of the documentation of classes and structs. If set to YES the | ||
| 405 | # list will mention the files that were used to generate the documentation. | ||
| 406 | |||
| 407 | SHOW_USED_FILES = YES | ||
| 408 | |||
| 409 | # If the sources in your project are distributed over multiple directories | ||
| 410 | # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy | ||
| 411 | # in the documentation. The default is NO. | ||
| 412 | |||
| 413 | SHOW_DIRECTORIES = NO | ||
| 414 | |||
| 415 | # The FILE_VERSION_FILTER tag can be used to specify a program or script that | ||
| 416 | # doxygen should invoke to get the current version for each file (typically from the | ||
| 417 | # version control system). Doxygen will invoke the program by executing (via | ||
| 418 | # popen()) the command <command> <input-file>, where <command> is the value of | ||
| 419 | # the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file | ||
| 420 | # provided by doxygen. Whatever the program writes to standard output | ||
| 421 | # is used as the file version. See the manual for examples. | ||
| 422 | |||
| 423 | FILE_VERSION_FILTER = | ||
| 424 | |||
| 425 | #--------------------------------------------------------------------------- | ||
| 426 | # configuration options related to warning and progress messages | ||
| 427 | #--------------------------------------------------------------------------- | ||
| 428 | |||
| 429 | # The QUIET tag can be used to turn on/off the messages that are generated | ||
| 430 | # by doxygen. Possible values are YES and NO. If left blank NO is used. | ||
| 431 | |||
| 432 | QUIET = NO | ||
| 433 | |||
| 434 | # The WARNINGS tag can be used to turn on/off the warning messages that are | ||
| 435 | # generated by doxygen. Possible values are YES and NO. If left blank | ||
| 436 | # NO is used. | ||
| 437 | |||
| 438 | WARNINGS = YES | ||
| 439 | |||
| 440 | # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings | ||
| 441 | # for undocumented members. If EXTRACT_ALL is set to YES then this flag will | ||
| 442 | # automatically be disabled. | ||
| 443 | |||
| 444 | WARN_IF_UNDOCUMENTED = YES | ||
| 445 | |||
| 446 | # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for | ||
| 447 | # potential errors in the documentation, such as not documenting some | ||
| 448 | # parameters in a documented function, or documenting parameters that | ||
| 449 | # don't exist or using markup commands wrongly. | ||
| 450 | |||
| 451 | WARN_IF_DOC_ERROR = YES | ||
| 452 | |||
| 453 | # This WARN_NO_PARAMDOC option can be abled to get warnings for | ||
| 454 | # functions that are documented, but have no documentation for their parameters | ||
| 455 | # or return value. If set to NO (the default) doxygen will only warn about | ||
| 456 | # wrong or incomplete parameter documentation, but not about the absence of | ||
| 457 | # documentation. | ||
| 458 | |||
| 459 | WARN_NO_PARAMDOC = NO | ||
| 460 | |||
| 461 | # The WARN_FORMAT tag determines the format of the warning messages that | ||
| 462 | # doxygen can produce. The string should contain the $file, $line, and $text | ||
| 463 | # tags, which will be replaced by the file and line number from which the | ||
| 464 | # warning originated and the warning text. Optionally the format may contain | ||
| 465 | # $version, which will be replaced by the version of the file (if it could | ||
| 466 | # be obtained via FILE_VERSION_FILTER) | ||
| 467 | |||
| 468 | WARN_FORMAT = "$file:$line: $text" | ||
| 469 | |||
| 470 | # The WARN_LOGFILE tag can be used to specify a file to which warning | ||
| 471 | # and error messages should be written. If left blank the output is written | ||
| 472 | # to stderr. | ||
| 473 | |||
| 474 | WARN_LOGFILE = | ||
| 475 | |||
| 476 | #--------------------------------------------------------------------------- | ||
| 477 | # configuration options related to the input files | ||
| 478 | #--------------------------------------------------------------------------- | ||
| 479 | |||
| 480 | # The INPUT tag can be used to specify the files and/or directories that contain | ||
| 481 | # documented source files. You may enter file names like "myfile.cpp" or | ||
| 482 | # directories like "/usr/src/myproject". Separate the files or directories | ||
| 483 | # with spaces. | ||
| 484 | |||
| 485 | INPUT = imgsynth | ||
| 486 | |||
| 487 | # This tag can be used to specify the character encoding of the source files that | ||
| 488 | # doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default | ||
| 489 | # input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. | ||
| 490 | # See http://www.gnu.org/software/libiconv for the list of possible encodings. | ||
| 491 | |||
| 492 | INPUT_ENCODING = UTF-8 | ||
| 493 | |||
| 494 | # If the value of the INPUT tag contains directories, you can use the | ||
| 495 | # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp | ||
| 496 | # and *.h) to filter out the source-files in the directories. If left | ||
| 497 | # blank the following patterns are tested: | ||
| 498 | # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx | ||
| 499 | # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py | ||
| 500 | |||
| 501 | FILE_PATTERNS = | ||
| 502 | |||
| 503 | # The RECURSIVE tag can be used to turn specify whether or not subdirectories | ||
| 504 | # should be searched for input files as well. Possible values are YES and NO. | ||
| 505 | # If left blank NO is used. | ||
| 506 | |||
| 507 | RECURSIVE = NO | ||
| 508 | |||
| 509 | # The EXCLUDE tag can be used to specify files and/or directories that should | ||
| 510 | # excluded from the INPUT source files. This way you can easily exclude a | ||
| 511 | # subdirectory from a directory tree whose root is specified with the INPUT tag. | ||
| 512 | |||
| 513 | EXCLUDE = | ||
| 514 | |||
| 515 | # The EXCLUDE_SYMLINKS tag can be used select whether or not files or | ||
| 516 | # directories that are symbolic links (a Unix filesystem feature) are excluded | ||
| 517 | # from the input. | ||
| 518 | |||
| 519 | EXCLUDE_SYMLINKS = NO | ||
| 520 | |||
| 521 | # If the value of the INPUT tag contains directories, you can use the | ||
| 522 | # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude | ||
| 523 | # certain files from those directories. Note that the wildcards are matched | ||
| 524 | # against the file with absolute path, so to exclude all test directories | ||
| 525 | # for example use the pattern */test/* | ||
| 526 | |||
| 527 | EXCLUDE_PATTERNS = | ||
| 528 | |||
| 529 | # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names | ||
| 530 | # (namespaces, classes, functions, etc.) that should be excluded from the output. | ||
| 531 | # The symbol name can be a fully qualified name, a word, or if the wildcard * is used, | ||
| 532 | # a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test | ||
| 533 | |||
| 534 | EXCLUDE_SYMBOLS = | ||
| 535 | |||
| 536 | # The EXAMPLE_PATH tag can be used to specify one or more files or | ||
| 537 | # directories that contain example code fragments that are included (see | ||
| 538 | # the \include command). | ||
| 539 | |||
| 540 | EXAMPLE_PATH = | ||
| 541 | |||
| 542 | # If the value of the EXAMPLE_PATH tag contains directories, you can use the | ||
| 543 | # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp | ||
| 544 | # and *.h) to filter out the source-files in the directories. If left | ||
| 545 | # blank all files are included. | ||
| 546 | |||
| 547 | EXAMPLE_PATTERNS = | ||
| 548 | |||
| 549 | # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be | ||
| 550 | # searched for input files to be used with the \include or \dontinclude | ||
| 551 | # commands irrespective of the value of the RECURSIVE tag. | ||
| 552 | # Possible values are YES and NO. If left blank NO is used. | ||
| 553 | |||
| 554 | EXAMPLE_RECURSIVE = NO | ||
| 555 | |||
| 556 | # The IMAGE_PATH tag can be used to specify one or more files or | ||
| 557 | # directories that contain image that are included in the documentation (see | ||
| 558 | # the \image command). | ||
| 559 | |||
| 560 | IMAGE_PATH = | ||
| 561 | |||
| 562 | # The INPUT_FILTER tag can be used to specify a program that doxygen should | ||
| 563 | # invoke to filter for each input file. Doxygen will invoke the filter program | ||
| 564 | # by executing (via popen()) the command <filter> <input-file>, where <filter> | ||
| 565 | # is the value of the INPUT_FILTER tag, and <input-file> is the name of an | ||
| 566 | # input file. Doxygen will then use the output that the filter program writes | ||
| 567 | # to standard output. If FILTER_PATTERNS is specified, this tag will be | ||
| 568 | # ignored. | ||
| 569 | |||
| 570 | INPUT_FILTER = | ||
| 571 | |||
| 572 | # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern | ||
| 573 | # basis. Doxygen will compare the file name with each pattern and apply the | ||
| 574 | # filter if there is a match. The filters are a list of the form: | ||
| 575 | # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further | ||
| 576 | # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER | ||
| 577 | # is applied to all files. | ||
| 578 | |||
| 579 | FILTER_PATTERNS = | ||
| 580 | |||
| 581 | # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using | ||
| 582 | # INPUT_FILTER) will be used to filter the input files when producing source | ||
| 583 | # files to browse (i.e. when SOURCE_BROWSER is set to YES). | ||
| 584 | |||
| 585 | FILTER_SOURCE_FILES = NO | ||
| 586 | |||
| 587 | #--------------------------------------------------------------------------- | ||
| 588 | # configuration options related to source browsing | ||
| 589 | #--------------------------------------------------------------------------- | ||
| 590 | |||
| 591 | # If the SOURCE_BROWSER tag is set to YES then a list of source files will | ||
| 592 | # be generated. Documented entities will be cross-referenced with these sources. | ||
| 593 | # Note: To get rid of all source code in the generated output, make sure also | ||
| 594 | # VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH | ||
| 595 | # then you must also enable this option. If you don't then doxygen will produce | ||
| 596 | # a warning and turn it on anyway | ||
| 597 | |||
| 598 | SOURCE_BROWSER = NO | ||
| 599 | |||
| 600 | # Setting the INLINE_SOURCES tag to YES will include the body | ||
| 601 | # of functions and classes directly in the documentation. | ||
| 602 | |||
| 603 | INLINE_SOURCES = NO | ||
| 604 | |||
| 605 | # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct | ||
| 606 | # doxygen to hide any special comment blocks from generated source code | ||
| 607 | # fragments. Normal C and C++ comments will always remain visible. | ||
| 608 | |||
| 609 | STRIP_CODE_COMMENTS = YES | ||
| 610 | |||
| 611 | # If the REFERENCED_BY_RELATION tag is set to YES (the default) | ||
| 612 | # then for each documented function all documented | ||
| 613 | # functions referencing it will be listed. | ||
| 614 | |||
| 615 | REFERENCED_BY_RELATION = YES | ||
| 616 | |||
| 617 | # If the REFERENCES_RELATION tag is set to YES (the default) | ||
| 618 | # then for each documented function all documented entities | ||
| 619 | # called/used by that function will be listed. | ||
| 620 | |||
| 621 | REFERENCES_RELATION = YES | ||
| 622 | |||
| 623 | # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) | ||
| 624 | # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from | ||
| 625 | # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will | ||
| 626 | # link to the source code. Otherwise they will link to the documentstion. | ||
| 627 | |||
| 628 | REFERENCES_LINK_SOURCE = YES | ||
| 629 | |||
| 630 | # If the USE_HTAGS tag is set to YES then the references to source code | ||
| 631 | # will point to the HTML generated by the htags(1) tool instead of doxygen | ||
| 632 | # built-in source browser. The htags tool is part of GNU's global source | ||
| 633 | # tagging system (see http://www.gnu.org/software/global/global.html). You | ||
| 634 | # will need version 4.8.6 or higher. | ||
| 635 | |||
| 636 | USE_HTAGS = NO | ||
| 637 | |||
| 638 | # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen | ||
| 639 | # will generate a verbatim copy of the header file for each class for | ||
| 640 | # which an include is specified. Set to NO to disable this. | ||
| 641 | |||
| 642 | VERBATIM_HEADERS = YES | ||
| 643 | |||
| 644 | #--------------------------------------------------------------------------- | ||
| 645 | # configuration options related to the alphabetical class index | ||
| 646 | #--------------------------------------------------------------------------- | ||
| 647 | |||
| 648 | # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index | ||
| 649 | # of all compounds will be generated. Enable this if the project | ||
| 650 | # contains a lot of classes, structs, unions or interfaces. | ||
| 651 | |||
| 652 | ALPHABETICAL_INDEX = NO | ||
| 653 | |||
| 654 | # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then | ||
| 655 | # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns | ||
| 656 | # in which this list will be split (can be a number in the range [1..20]) | ||
| 657 | |||
| 658 | COLS_IN_ALPHA_INDEX = 5 | ||
| 659 | |||
| 660 | # In case all classes in a project start with a common prefix, all | ||
| 661 | # classes will be put under the same header in the alphabetical index. | ||
| 662 | # The IGNORE_PREFIX tag can be used to specify one or more prefixes that | ||
| 663 | # should be ignored while generating the index headers. | ||
| 664 | |||
| 665 | IGNORE_PREFIX = | ||
| 666 | |||
| 667 | #--------------------------------------------------------------------------- | ||
| 668 | # configuration options related to the HTML output | ||
| 669 | #--------------------------------------------------------------------------- | ||
| 670 | |||
| 671 | # If the GENERATE_HTML tag is set to YES (the default) Doxygen will | ||
| 672 | # generate HTML output. | ||
| 673 | |||
| 674 | GENERATE_HTML = YES | ||
| 675 | |||
| 676 | # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. | ||
| 677 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be | ||
| 678 | # put in front of it. If left blank `html' will be used as the default path. | ||
| 679 | |||
| 680 | HTML_OUTPUT = . | ||
| 681 | |||
| 682 | # The HTML_FILE_EXTENSION tag can be used to specify the file extension for | ||
| 683 | # each generated HTML page (for example: .htm,.php,.asp). If it is left blank | ||
| 684 | # doxygen will generate files with .html extension. | ||
| 685 | |||
| 686 | HTML_FILE_EXTENSION = .html | ||
| 687 | |||
| 688 | # The HTML_HEADER tag can be used to specify a personal HTML header for | ||
| 689 | # each generated HTML page. If it is left blank doxygen will generate a | ||
| 690 | # standard header. | ||
| 691 | |||
| 692 | HTML_HEADER = | ||
| 693 | |||
| 694 | # The HTML_FOOTER tag can be used to specify a personal HTML footer for | ||
| 695 | # each generated HTML page. If it is left blank doxygen will generate a | ||
| 696 | # standard footer. | ||
| 697 | |||
| 698 | HTML_FOOTER = | ||
| 699 | |||
| 700 | # The HTML_STYLESHEET tag can be used to specify a user-defined cascading | ||
| 701 | # style sheet that is used by each HTML page. It can be used to | ||
| 702 | # fine-tune the look of the HTML output. If the tag is left blank doxygen | ||
| 703 | # will generate a default style sheet. Note that doxygen will try to copy | ||
| 704 | # the style sheet file to the HTML output directory, so don't put your own | ||
| 705 | # stylesheet in the HTML output directory as well, or it will be erased! | ||
| 706 | |||
| 707 | HTML_STYLESHEET = | ||
| 708 | |||
| 709 | # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, | ||
| 710 | # files or namespaces will be aligned in HTML using tables. If set to | ||
| 711 | # NO a bullet list will be used. | ||
| 712 | |||
| 713 | HTML_ALIGN_MEMBERS = YES | ||
| 714 | |||
| 715 | # If the GENERATE_HTMLHELP tag is set to YES, additional index files | ||
| 716 | # will be generated that can be used as input for tools like the | ||
| 717 | # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) | ||
| 718 | # of the generated HTML documentation. | ||
| 719 | |||
| 720 | GENERATE_HTMLHELP = NO | ||
| 721 | |||
| 722 | # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML | ||
| 723 | # documentation will contain sections that can be hidden and shown after the | ||
| 724 | # page has loaded. For this to work a browser that supports | ||
| 725 | # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox | ||
| 726 | # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). | ||
| 727 | |||
| 728 | HTML_DYNAMIC_SECTIONS = NO | ||
| 729 | |||
| 730 | # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can | ||
| 731 | # be used to specify the file name of the resulting .chm file. You | ||
| 732 | # can add a path in front of the file if the result should not be | ||
| 733 | # written to the html output directory. | ||
| 734 | |||
| 735 | CHM_FILE = | ||
| 736 | |||
| 737 | # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can | ||
| 738 | # be used to specify the location (absolute path including file name) of | ||
| 739 | # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run | ||
| 740 | # the HTML help compiler on the generated index.hhp. | ||
| 741 | |||
| 742 | HHC_LOCATION = | ||
| 743 | |||
| 744 | # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag | ||
| 745 | # controls if a separate .chi index file is generated (YES) or that | ||
| 746 | # it should be included in the master .chm file (NO). | ||
| 747 | |||
| 748 | GENERATE_CHI = NO | ||
| 749 | |||
| 750 | # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag | ||
| 751 | # controls whether a binary table of contents is generated (YES) or a | ||
| 752 | # normal table of contents (NO) in the .chm file. | ||
| 753 | |||
| 754 | BINARY_TOC = NO | ||
| 755 | |||
| 756 | # The TOC_EXPAND flag can be set to YES to add extra items for group members | ||
| 757 | # to the contents of the HTML help documentation and to the tree view. | ||
| 758 | |||
| 759 | TOC_EXPAND = NO | ||
| 760 | |||
| 761 | # The DISABLE_INDEX tag can be used to turn on/off the condensed index at | ||
| 762 | # top of each HTML page. The value NO (the default) enables the index and | ||
| 763 | # the value YES disables it. | ||
| 764 | |||
| 765 | DISABLE_INDEX = NO | ||
| 766 | |||
| 767 | # This tag can be used to set the number of enum values (range [1..20]) | ||
| 768 | # that doxygen will group on one line in the generated HTML documentation. | ||
| 769 | |||
| 770 | ENUM_VALUES_PER_LINE = 4 | ||
| 771 | |||
| 772 | # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be | ||
| 773 | # generated containing a tree-like index structure (just like the one that | ||
| 774 | # is generated for HTML Help). For this to work a browser that supports | ||
| 775 | # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, | ||
| 776 | # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are | ||
| 777 | # probably better off using the HTML help feature. | ||
| 778 | |||
| 779 | GENERATE_TREEVIEW = NO | ||
| 780 | |||
| 781 | # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be | ||
| 782 | # used to set the initial width (in pixels) of the frame in which the tree | ||
| 783 | # is shown. | ||
| 784 | |||
| 785 | TREEVIEW_WIDTH = 250 | ||
| 786 | |||
| 787 | #--------------------------------------------------------------------------- | ||
| 788 | # configuration options related to the LaTeX output | ||
| 789 | #--------------------------------------------------------------------------- | ||
| 790 | |||
| 791 | # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will | ||
| 792 | # generate Latex output. | ||
| 793 | |||
| 794 | GENERATE_LATEX = NO | ||
| 795 | |||
| 796 | # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. | ||
| 797 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be | ||
| 798 | # put in front of it. If left blank `latex' will be used as the default path. | ||
| 799 | |||
| 800 | LATEX_OUTPUT = latex | ||
| 801 | |||
| 802 | # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be | ||
| 803 | # invoked. If left blank `latex' will be used as the default command name. | ||
| 804 | |||
| 805 | LATEX_CMD_NAME = latex | ||
| 806 | |||
| 807 | # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to | ||
| 808 | # generate index for LaTeX. If left blank `makeindex' will be used as the | ||
| 809 | # default command name. | ||
| 810 | |||
| 811 | MAKEINDEX_CMD_NAME = makeindex | ||
| 812 | |||
| 813 | # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact | ||
| 814 | # LaTeX documents. This may be useful for small projects and may help to | ||
| 815 | # save some trees in general. | ||
| 816 | |||
| 817 | COMPACT_LATEX = NO | ||
| 818 | |||
| 819 | # The PAPER_TYPE tag can be used to set the paper type that is used | ||
| 820 | # by the printer. Possible values are: a4, a4wide, letter, legal and | ||
| 821 | # executive. If left blank a4wide will be used. | ||
| 822 | |||
| 823 | PAPER_TYPE = a4wide | ||
| 824 | |||
| 825 | # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX | ||
| 826 | # packages that should be included in the LaTeX output. | ||
| 827 | |||
| 828 | EXTRA_PACKAGES = | ||
| 829 | |||
| 830 | # The LATEX_HEADER tag can be used to specify a personal LaTeX header for | ||
| 831 | # the generated latex document. The header should contain everything until | ||
| 832 | # the first chapter. If it is left blank doxygen will generate a | ||
| 833 | # standard header. Notice: only use this tag if you know what you are doing! | ||
| 834 | |||
| 835 | LATEX_HEADER = | ||
| 836 | |||
| 837 | # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated | ||
| 838 | # is prepared for conversion to pdf (using ps2pdf). The pdf file will | ||
| 839 | # contain links (just like the HTML output) instead of page references | ||
| 840 | # This makes the output suitable for online browsing using a pdf viewer. | ||
| 841 | |||
| 842 | PDF_HYPERLINKS = NO | ||
| 843 | |||
| 844 | # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of | ||
| 845 | # plain latex in the generated Makefile. Set this option to YES to get a | ||
| 846 | # higher quality PDF documentation. | ||
| 847 | |||
| 848 | USE_PDFLATEX = NO | ||
| 849 | |||
| 850 | # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. | ||
| 851 | # command to the generated LaTeX files. This will instruct LaTeX to keep | ||
| 852 | # running if errors occur, instead of asking the user for help. | ||
| 853 | # This option is also used when generating formulas in HTML. | ||
| 854 | |||
| 855 | LATEX_BATCHMODE = NO | ||
| 856 | |||
| 857 | # If LATEX_HIDE_INDICES is set to YES then doxygen will not | ||
| 858 | # include the index chapters (such as File Index, Compound Index, etc.) | ||
| 859 | # in the output. | ||
| 860 | |||
| 861 | LATEX_HIDE_INDICES = NO | ||
| 862 | |||
| 863 | #--------------------------------------------------------------------------- | ||
| 864 | # configuration options related to the RTF output | ||
| 865 | #--------------------------------------------------------------------------- | ||
| 866 | |||
| 867 | # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output | ||
| 868 | # The RTF output is optimized for Word 97 and may not look very pretty with | ||
| 869 | # other RTF readers or editors. | ||
| 870 | |||
| 871 | GENERATE_RTF = NO | ||
| 872 | |||
| 873 | # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. | ||
| 874 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be | ||
| 875 | # put in front of it. If left blank `rtf' will be used as the default path. | ||
| 876 | |||
| 877 | RTF_OUTPUT = rtf | ||
| 878 | |||
| 879 | # If the COMPACT_RTF tag is set to YES Doxygen generates more compact | ||
| 880 | # RTF documents. This may be useful for small projects and may help to | ||
| 881 | # save some trees in general. | ||
| 882 | |||
| 883 | COMPACT_RTF = NO | ||
| 884 | |||
| 885 | # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated | ||
| 886 | # will contain hyperlink fields. The RTF file will | ||
| 887 | # contain links (just like the HTML output) instead of page references. | ||
| 888 | # This makes the output suitable for online browsing using WORD or other | ||
| 889 | # programs which support those fields. | ||
| 890 | # Note: wordpad (write) and others do not support links. | ||
| 891 | |||
| 892 | RTF_HYPERLINKS = NO | ||
| 893 | |||
| 894 | # Load stylesheet definitions from file. Syntax is similar to doxygen's | ||
| 895 | # config file, i.e. a series of assignments. You only have to provide | ||
| 896 | # replacements, missing definitions are set to their default value. | ||
| 897 | |||
| 898 | RTF_STYLESHEET_FILE = | ||
| 899 | |||
| 900 | # Set optional variables used in the generation of an rtf document. | ||
| 901 | # Syntax is similar to doxygen's config file. | ||
| 902 | |||
| 903 | RTF_EXTENSIONS_FILE = | ||
| 904 | |||
| 905 | #--------------------------------------------------------------------------- | ||
| 906 | # configuration options related to the man page output | ||
| 907 | #--------------------------------------------------------------------------- | ||
| 908 | |||
| 909 | # If the GENERATE_MAN tag is set to YES (the default) Doxygen will | ||
| 910 | # generate man pages | ||
| 911 | |||
| 912 | GENERATE_MAN = NO | ||
| 913 | |||
| 914 | # The MAN_OUTPUT tag is used to specify where the man pages will be put. | ||
| 915 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be | ||
| 916 | # put in front of it. If left blank `man' will be used as the default path. | ||
| 917 | |||
| 918 | MAN_OUTPUT = man | ||
| 919 | |||
| 920 | # The MAN_EXTENSION tag determines the extension that is added to | ||
| 921 | # the generated man pages (default is the subroutine's section .3) | ||
| 922 | |||
| 923 | MAN_EXTENSION = .3 | ||
| 924 | |||
| 925 | # If the MAN_LINKS tag is set to YES and Doxygen generates man output, | ||
| 926 | # then it will generate one additional man file for each entity | ||
| 927 | # documented in the real man page(s). These additional files | ||
| 928 | # only source the real man page, but without them the man command | ||
| 929 | # would be unable to find the correct page. The default is NO. | ||
| 930 | |||
| 931 | MAN_LINKS = NO | ||
| 932 | |||
| 933 | #--------------------------------------------------------------------------- | ||
| 934 | # configuration options related to the XML output | ||
| 935 | #--------------------------------------------------------------------------- | ||
| 936 | |||
| 937 | # If the GENERATE_XML tag is set to YES Doxygen will | ||
| 938 | # generate an XML file that captures the structure of | ||
| 939 | # the code including all documentation. | ||
| 940 | |||
| 941 | GENERATE_XML = NO | ||
| 942 | |||
| 943 | # The XML_OUTPUT tag is used to specify where the XML pages will be put. | ||
| 944 | # If a relative path is entered the value of OUTPUT_DIRECTORY will be | ||
| 945 | # put in front of it. If left blank `xml' will be used as the default path. | ||
| 946 | |||
| 947 | XML_OUTPUT = xml | ||
| 948 | |||
| 949 | # The XML_SCHEMA tag can be used to specify an XML schema, | ||
| 950 | # which can be used by a validating XML parser to check the | ||
| 951 | # syntax of the XML files. | ||
| 952 | |||
| 953 | XML_SCHEMA = | ||
| 954 | |||
| 955 | # The XML_DTD tag can be used to specify an XML DTD, | ||
| 956 | # which can be used by a validating XML parser to check the | ||
| 957 | # syntax of the XML files. | ||
| 958 | |||
| 959 | XML_DTD = | ||
| 960 | |||
| 961 | # If the XML_PROGRAMLISTING tag is set to YES Doxygen will | ||
| 962 | # dump the program listings (including syntax highlighting | ||
| 963 | # and cross-referencing information) to the XML output. Note that | ||
| 964 | # enabling this will significantly increase the size of the XML output. | ||
| 965 | |||
| 966 | XML_PROGRAMLISTING = YES | ||
| 967 | |||
| 968 | #--------------------------------------------------------------------------- | ||
| 969 | # configuration options for the AutoGen Definitions output | ||
| 970 | #--------------------------------------------------------------------------- | ||
| 971 | |||
| 972 | # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will | ||
| 973 | # generate an AutoGen Definitions (see autogen.sf.net) file | ||
| 974 | # that captures the structure of the code including all | ||
| 975 | # documentation. Note that this feature is still experimental | ||
| 976 | # and incomplete at the moment. | ||
| 977 | |||
| 978 | GENERATE_AUTOGEN_DEF = NO | ||
| 979 | |||
| 980 | #--------------------------------------------------------------------------- | ||
| 981 | # configuration options related to the Perl module output | ||
| 982 | #--------------------------------------------------------------------------- | ||
| 983 | |||
| 984 | # If the GENERATE_PERLMOD tag is set to YES Doxygen will | ||
| 985 | # generate a Perl module file that captures the structure of | ||
| 986 | # the code including all documentation. Note that this | ||
| 987 | # feature is still experimental and incomplete at the | ||
| 988 | # moment. | ||
| 989 | |||
| 990 | GENERATE_PERLMOD = NO | ||
| 991 | |||
| 992 | # If the PERLMOD_LATEX tag is set to YES Doxygen will generate | ||
| 993 | # the necessary Makefile rules, Perl scripts and LaTeX code to be able | ||
| 994 | # to generate PDF and DVI output from the Perl module output. | ||
| 995 | |||
| 996 | PERLMOD_LATEX = NO | ||
| 997 | |||
| 998 | # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be | ||
| 999 | # nicely formatted so it can be parsed by a human reader. This is useful | ||
| 1000 | # if you want to understand what is going on. On the other hand, if this | ||
| 1001 | # tag is set to NO the size of the Perl module output will be much smaller | ||
| 1002 | # and Perl will parse it just the same. | ||
| 1003 | |||
| 1004 | PERLMOD_PRETTY = YES | ||
| 1005 | |||
| 1006 | # The names of the make variables in the generated doxyrules.make file | ||
| 1007 | # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. | ||
| 1008 | # This is useful so different doxyrules.make files included by the same | ||
| 1009 | # Makefile don't overwrite each other's variables. | ||
| 1010 | |||
| 1011 | PERLMOD_MAKEVAR_PREFIX = | ||
| 1012 | |||
| 1013 | #--------------------------------------------------------------------------- | ||
| 1014 | # Configuration options related to the preprocessor | ||
| 1015 | #--------------------------------------------------------------------------- | ||
| 1016 | |||
| 1017 | # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will | ||
| 1018 | # evaluate all C-preprocessor directives found in the sources and include | ||
| 1019 | # files. | ||
| 1020 | |||
| 1021 | ENABLE_PREPROCESSING = YES | ||
| 1022 | |||
| 1023 | # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro | ||
| 1024 | # names in the source code. If set to NO (the default) only conditional | ||
| 1025 | # compilation will be performed. Macro expansion can be done in a controlled | ||
| 1026 | # way by setting EXPAND_ONLY_PREDEF to YES. | ||
| 1027 | |||
| 1028 | MACRO_EXPANSION = NO | ||
| 1029 | |||
| 1030 | # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES | ||
| 1031 | # then the macro expansion is limited to the macros specified with the | ||
| 1032 | # PREDEFINED and EXPAND_AS_DEFINED tags. | ||
| 1033 | |||
| 1034 | EXPAND_ONLY_PREDEF = NO | ||
| 1035 | |||
| 1036 | # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files | ||
| 1037 | # in the INCLUDE_PATH (see below) will be search if a #include is found. | ||
| 1038 | |||
| 1039 | SEARCH_INCLUDES = YES | ||
| 1040 | |||
| 1041 | # The INCLUDE_PATH tag can be used to specify one or more directories that | ||
| 1042 | # contain include files that are not input files but should be processed by | ||
| 1043 | # the preprocessor. | ||
| 1044 | |||
| 1045 | INCLUDE_PATH = | ||
| 1046 | |||
| 1047 | # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard | ||
| 1048 | # patterns (like *.h and *.hpp) to filter out the header-files in the | ||
| 1049 | # directories. If left blank, the patterns specified with FILE_PATTERNS will | ||
| 1050 | # be used. | ||
| 1051 | |||
| 1052 | INCLUDE_FILE_PATTERNS = | ||
| 1053 | |||
| 1054 | # The PREDEFINED tag can be used to specify one or more macro names that | ||
| 1055 | # are defined before the preprocessor is started (similar to the -D option of | ||
| 1056 | # gcc). The argument of the tag is a list of macros of the form: name | ||
| 1057 | # or name=definition (no spaces). If the definition and the = are | ||
| 1058 | # omitted =1 is assumed. To prevent a macro definition from being | ||
| 1059 | # undefined via #undef or recursively expanded use the := operator | ||
| 1060 | # instead of the = operator. | ||
| 1061 | |||
| 1062 | PREDEFINED = | ||
| 1063 | |||
| 1064 | # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then | ||
| 1065 | # this tag can be used to specify a list of macro names that should be expanded. | ||
| 1066 | # The macro definition that is found in the sources will be used. | ||
| 1067 | # Use the PREDEFINED tag if you want to use a different macro definition. | ||
| 1068 | |||
| 1069 | EXPAND_AS_DEFINED = | ||
| 1070 | |||
| 1071 | # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then | ||
| 1072 | # doxygen's preprocessor will remove all function-like macros that are alone | ||
| 1073 | # on a line, have an all uppercase name, and do not end with a semicolon. Such | ||
| 1074 | # function macros are typically used for boiler-plate code, and will confuse | ||
| 1075 | # the parser if not removed. | ||
| 1076 | |||
| 1077 | SKIP_FUNCTION_MACROS = YES | ||
| 1078 | |||
| 1079 | #--------------------------------------------------------------------------- | ||
| 1080 | # Configuration::additions related to external references | ||
| 1081 | #--------------------------------------------------------------------------- | ||
| 1082 | |||
| 1083 | # The TAGFILES option can be used to specify one or more tagfiles. | ||
| 1084 | # Optionally an initial location of the external documentation | ||
| 1085 | # can be added for each tagfile. The format of a tag file without | ||
| 1086 | # this location is as follows: | ||
| 1087 | # TAGFILES = file1 file2 ... | ||
| 1088 | # Adding location for the tag files is done as follows: | ||
| 1089 | # TAGFILES = file1=loc1 "file2 = loc2" ... | ||
| 1090 | # where "loc1" and "loc2" can be relative or absolute paths or | ||
| 1091 | # URLs. If a location is present for each tag, the installdox tool | ||
| 1092 | # does not have to be run to correct the links. | ||
| 1093 | # Note that each tag file must have a unique name | ||
| 1094 | # (where the name does NOT include the path) | ||
| 1095 | # If a tag file is not located in the directory in which doxygen | ||
| 1096 | # is run, you must also specify the path to the tagfile here. | ||
| 1097 | |||
| 1098 | TAGFILES = | ||
| 1099 | |||
| 1100 | # When a file name is specified after GENERATE_TAGFILE, doxygen will create | ||
| 1101 | # a tag file that is based on the input files it reads. | ||
| 1102 | |||
| 1103 | GENERATE_TAGFILE = | ||
| 1104 | |||
| 1105 | # If the ALLEXTERNALS tag is set to YES all external classes will be listed | ||
| 1106 | # in the class index. If set to NO only the inherited external classes | ||
| 1107 | # will be listed. | ||
| 1108 | |||
| 1109 | ALLEXTERNALS = NO | ||
| 1110 | |||
| 1111 | # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed | ||
| 1112 | # in the modules index. If set to NO, only the current project's groups will | ||
| 1113 | # be listed. | ||
| 1114 | |||
| 1115 | EXTERNAL_GROUPS = YES | ||
| 1116 | |||
| 1117 | # The PERL_PATH should be the absolute path and name of the perl script | ||
| 1118 | # interpreter (i.e. the result of `which perl'). | ||
| 1119 | |||
| 1120 | PERL_PATH = /usr/bin/perl | ||
| 1121 | |||
| 1122 | #--------------------------------------------------------------------------- | ||
| 1123 | # Configuration options related to the dot tool | ||
| 1124 | #--------------------------------------------------------------------------- | ||
| 1125 | |||
| 1126 | # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will | ||
| 1127 | # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base | ||
| 1128 | # or super classes. Setting the tag to NO turns the diagrams off. Note that | ||
| 1129 | # this option is superseded by the HAVE_DOT option below. This is only a | ||
| 1130 | # fallback. It is recommended to install and use dot, since it yields more | ||
| 1131 | # powerful graphs. | ||
| 1132 | |||
| 1133 | CLASS_DIAGRAMS = YES | ||
| 1134 | |||
| 1135 | # You can define message sequence charts within doxygen comments using the \msc | ||
| 1136 | # command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to | ||
| 1137 | # produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to | ||
| 1138 | # specify the directory where the mscgen tool resides. If left empty the tool is assumed to | ||
| 1139 | # be found in the default search path. | ||
| 1140 | |||
| 1141 | MSCGEN_PATH = | ||
| 1142 | |||
| 1143 | # If set to YES, the inheritance and collaboration graphs will hide | ||
| 1144 | # inheritance and usage relations if the target is undocumented | ||
| 1145 | # or is not a class. | ||
| 1146 | |||
| 1147 | HIDE_UNDOC_RELATIONS = YES | ||
| 1148 | |||
| 1149 | # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is | ||
| 1150 | # available from the path. This tool is part of Graphviz, a graph visualization | ||
| 1151 | # toolkit from AT&T and Lucent Bell Labs. The other options in this section | ||
| 1152 | # have no effect if this option is set to NO (the default) | ||
| 1153 | |||
| 1154 | HAVE_DOT = NO | ||
| 1155 | |||
| 1156 | # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen | ||
| 1157 | # will generate a graph for each documented class showing the direct and | ||
| 1158 | # indirect inheritance relations. Setting this tag to YES will force the | ||
| 1159 | # the CLASS_DIAGRAMS tag to NO. | ||
| 1160 | |||
| 1161 | CLASS_GRAPH = YES | ||
| 1162 | |||
| 1163 | # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen | ||
| 1164 | # will generate a graph for each documented class showing the direct and | ||
| 1165 | # indirect implementation dependencies (inheritance, containment, and | ||
| 1166 | # class references variables) of the class with other documented classes. | ||
| 1167 | |||
| 1168 | COLLABORATION_GRAPH = YES | ||
| 1169 | |||
| 1170 | # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen | ||
| 1171 | # will generate a graph for groups, showing the direct groups dependencies | ||
| 1172 | |||
| 1173 | GROUP_GRAPHS = YES | ||
| 1174 | |||
| 1175 | # If the UML_LOOK tag is set to YES doxygen will generate inheritance and | ||
| 1176 | # collaboration diagrams in a style similar to the OMG's Unified Modeling | ||
| 1177 | # Language. | ||
| 1178 | |||
| 1179 | UML_LOOK = NO | ||
| 1180 | |||
| 1181 | # If set to YES, the inheritance and collaboration graphs will show the | ||
| 1182 | # relations between templates and their instances. | ||
| 1183 | |||
| 1184 | TEMPLATE_RELATIONS = NO | ||
| 1185 | |||
| 1186 | # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT | ||
| 1187 | # tags are set to YES then doxygen will generate a graph for each documented | ||
| 1188 | # file showing the direct and indirect include dependencies of the file with | ||
| 1189 | # other documented files. | ||
| 1190 | |||
| 1191 | INCLUDE_GRAPH = YES | ||
| 1192 | |||
| 1193 | # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and | ||
| 1194 | # HAVE_DOT tags are set to YES then doxygen will generate a graph for each | ||
| 1195 | # documented header file showing the documented files that directly or | ||
| 1196 | # indirectly include this file. | ||
| 1197 | |||
| 1198 | INCLUDED_BY_GRAPH = YES | ||
| 1199 | |||
| 1200 | # If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will | ||
| 1201 | # generate a call dependency graph for every global function or class method. | ||
| 1202 | # Note that enabling this option will significantly increase the time of a run. | ||
| 1203 | # So in most cases it will be better to enable call graphs for selected | ||
| 1204 | # functions only using the \callgraph command. | ||
| 1205 | |||
| 1206 | CALL_GRAPH = NO | ||
| 1207 | |||
| 1208 | # If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will | ||
| 1209 | # generate a caller dependency graph for every global function or class method. | ||
| 1210 | # Note that enabling this option will significantly increase the time of a run. | ||
| 1211 | # So in most cases it will be better to enable caller graphs for selected | ||
| 1212 | # functions only using the \callergraph command. | ||
| 1213 | |||
| 1214 | CALLER_GRAPH = NO | ||
| 1215 | |||
| 1216 | # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen | ||
| 1217 | # will graphical hierarchy of all classes instead of a textual one. | ||
| 1218 | |||
| 1219 | GRAPHICAL_HIERARCHY = YES | ||
| 1220 | |||
| 1221 | # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES | ||
| 1222 | # then doxygen will show the dependencies a directory has on other directories | ||
| 1223 | # in a graphical way. The dependency relations are determined by the #include | ||
| 1224 | # relations between the files in the directories. | ||
| 1225 | |||
| 1226 | DIRECTORY_GRAPH = YES | ||
| 1227 | |||
| 1228 | # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images | ||
| 1229 | # generated by dot. Possible values are png, jpg, or gif | ||
| 1230 | # If left blank png will be used. | ||
| 1231 | |||
| 1232 | DOT_IMAGE_FORMAT = png | ||
| 1233 | |||
| 1234 | # The tag DOT_PATH can be used to specify the path where the dot tool can be | ||
| 1235 | # found. If left blank, it is assumed the dot tool can be found in the path. | ||
| 1236 | |||
| 1237 | DOT_PATH = | ||
| 1238 | |||
| 1239 | # The DOTFILE_DIRS tag can be used to specify one or more directories that | ||
| 1240 | # contain dot files that are included in the documentation (see the | ||
| 1241 | # \dotfile command). | ||
| 1242 | |||
| 1243 | DOTFILE_DIRS = | ||
| 1244 | |||
| 1245 | # The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of | ||
| 1246 | # nodes that will be shown in the graph. If the number of nodes in a graph | ||
| 1247 | # becomes larger than this value, doxygen will truncate the graph, which is | ||
| 1248 | # visualized by representing a node as a red box. Note that doxygen if the number | ||
| 1249 | # of direct children of the root node in a graph is already larger than | ||
| 1250 | # MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note | ||
| 1251 | # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. | ||
| 1252 | |||
| 1253 | DOT_GRAPH_MAX_NODES = 50 | ||
| 1254 | |||
| 1255 | # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the | ||
| 1256 | # graphs generated by dot. A depth value of 3 means that only nodes reachable | ||
| 1257 | # from the root by following a path via at most 3 edges will be shown. Nodes | ||
| 1258 | # that lay further from the root node will be omitted. Note that setting this | ||
| 1259 | # option to 1 or 2 may greatly reduce the computation time needed for large | ||
| 1260 | # code bases. Also note that the size of a graph can be further restricted by | ||
| 1261 | # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. | ||
| 1262 | |||
| 1263 | MAX_DOT_GRAPH_DEPTH = 0 | ||
| 1264 | |||
| 1265 | # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent | ||
| 1266 | # background. This is disabled by default, which results in a white background. | ||
| 1267 | # Warning: Depending on the platform used, enabling this option may lead to | ||
| 1268 | # badly anti-aliased labels on the edges of a graph (i.e. they become hard to | ||
| 1269 | # read). | ||
| 1270 | |||
| 1271 | DOT_TRANSPARENT = NO | ||
| 1272 | |||
| 1273 | # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output | ||
| 1274 | # files in one run (i.e. multiple -o and -T options on the command line). This | ||
| 1275 | # makes dot run faster, but since only newer versions of dot (>1.8.10) | ||
| 1276 | # support this, this feature is disabled by default. | ||
| 1277 | |||
| 1278 | DOT_MULTI_TARGETS = NO | ||
| 1279 | |||
| 1280 | # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will | ||
| 1281 | # generate a legend page explaining the meaning of the various boxes and | ||
| 1282 | # arrows in the dot generated graphs. | ||
| 1283 | |||
| 1284 | GENERATE_LEGEND = YES | ||
| 1285 | |||
| 1286 | # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will | ||
| 1287 | # remove the intermediate dot files that are used to generate | ||
| 1288 | # the various graphs. | ||
| 1289 | |||
| 1290 | DOT_CLEANUP = YES | ||
| 1291 | |||
| 1292 | #--------------------------------------------------------------------------- | ||
| 1293 | # Configuration::additions related to the search engine | ||
| 1294 | #--------------------------------------------------------------------------- | ||
| 1295 | |||
| 1296 | # The SEARCHENGINE tag specifies whether or not a search engine should be | ||
| 1297 | # used. If set to NO the values of all tags below this one will be ignored. | ||
| 1298 | |||
| 1299 | SEARCHENGINE = NO | ||
diff --git a/ue2/imgsynth2/Makefile b/ue2/imgsynth2/Makefile new file mode 100644 index 0000000..cbf3d33 --- /dev/null +++ b/ue2/imgsynth2/Makefile | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | # Makefile for imgsynth2 | ||
| 2 | # Author: Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 3 | # Created: 26.04.2009 | ||
| 4 | |||
| 5 | CC= g++ | ||
| 6 | LD= $(CC) | ||
| 7 | DEBUGFLAGS= -DNDEBUG | ||
| 8 | CFLAGS= -O -ansi -pedantic-errors -Wall $(DEBUGFLAGS) | ||
| 9 | LDFLAGS= | ||
| 10 | LIBS= -lboost_program_options | ||
| 11 | |||
| 12 | BIN= imgsynth2 | ||
| 13 | OBJS= cpixelformat_bgr24.o cpixelformat_bgr555.o \ | ||
| 14 | cbitmap.o cscriptparser.o imgsynth2.o | ||
| 15 | HEADERS= cpixelformat.h cpixelformat_bgr24.h cpixelformat_bgr555.h \ | ||
| 16 | cfile.h cbitmap.h cscriptparser.h | ||
| 17 | |||
| 18 | .SUFFIXES: .cpp .o | ||
| 19 | |||
| 20 | all: $(BIN) | ||
| 21 | |||
| 22 | .cpp.o: | ||
| 23 | $(CC) $(CFLAGS) -c $< -o $@ | ||
| 24 | |||
| 25 | $(OBJS): $(HEADERS) | ||
| 26 | |||
| 27 | $(BIN): $(OBJS) | ||
| 28 | $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) | ||
| 29 | |||
| 30 | debug: | ||
| 31 | @$(MAKE) all "DEBUGFLAGS=-DDEBUG -g" | ||
| 32 | |||
| 33 | clean: | ||
| 34 | rm -f $(OBJS) $(BIN) | ||
| 35 | |||
| 36 | run test: all | ||
| 37 | @./test/test.sh | ||
| 38 | |||
| 39 | .PHONY: clean | ||
| 40 | |||
| 41 | # vim600: noet sw=8 ts=8 | ||
diff --git a/ue2/imgsynth2/cbitmap.cpp b/ue2/imgsynth2/cbitmap.cpp new file mode 100644 index 0000000..fc1a7c0 --- /dev/null +++ b/ue2/imgsynth2/cbitmap.cpp | |||
| @@ -0,0 +1,382 @@ | |||
| 1 | /** | ||
| 2 | * @module cbitmap | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief Implementation of CFile handling Windows Bitmaps. | ||
| 5 | * @date 17.04.2009 | ||
| 6 | */ | ||
| 7 | |||
| 8 | #include <boost/lexical_cast.hpp> | ||
| 9 | #include <boost/numeric/conversion/cast.hpp> | ||
| 10 | #ifdef DEBUG | ||
| 11 | # include <iostream> | ||
| 12 | #endif | ||
| 13 | #include "cbitmap.h" | ||
| 14 | #include "cpixelformat_bgr24.h" | ||
| 15 | #include "cpixelformat_bgr555.h" | ||
| 16 | |||
| 17 | using namespace std; | ||
| 18 | |||
| 19 | CBitmap::CBitmap() | ||
| 20 | : m_pixeldata(NULL), m_pixelformat(NULL) | ||
| 21 | { | ||
| 22 | m_types.insert("BMP"); | ||
| 23 | |||
| 24 | /* add our handlers */ | ||
| 25 | m_handlers.insert(new CPixelFormat_BGR24(this)); | ||
| 26 | m_handlers.insert(new CPixelFormat_BGR555(this)); | ||
| 27 | } | ||
| 28 | |||
| 29 | /*----------------------------------------------------------------------------*/ | ||
| 30 | |||
| 31 | CBitmap::~CBitmap() | ||
| 32 | { | ||
| 33 | /* delete pixeldata */ | ||
| 34 | if (m_pixeldata != NULL) | ||
| 35 | delete[] m_pixeldata; | ||
| 36 | m_pixeldata = NULL; | ||
| 37 | |||
| 38 | /* delete pixelformat handlers */ | ||
| 39 | set<CPixelFormat *>::iterator it; | ||
| 40 | for (it = m_handlers.begin(); it != m_handlers.end(); it++) | ||
| 41 | delete *it; | ||
| 42 | m_pixelformat = NULL; | ||
| 43 | } | ||
| 44 | |||
| 45 | /*----------------------------------------------------------------------------*/ | ||
| 46 | |||
| 47 | void CBitmap::read(std::ifstream& in) | ||
| 48 | { | ||
| 49 | /* read and check file header */ | ||
| 50 | in.read(reinterpret_cast<char *>(&m_fileheader), sizeof(m_fileheader)); | ||
| 51 | |||
| 52 | if (m_fileheader.bfType[0] != 'B' || m_fileheader.bfType[1] != 'M') | ||
| 53 | throw FileError("Imagefile has invalid Bitmap header."); | ||
| 54 | /* bfSize is unreliable (http://de.wikipedia.org/wiki/Windows_Bitmap) */ | ||
| 55 | if (m_fileheader.bfSize < 0) | ||
| 56 | throw FileError("Bitmap filesize is less than zero?"); | ||
| 57 | |||
| 58 | /* read and check info header */ | ||
| 59 | in.read(reinterpret_cast<char *>(&m_infoheader), sizeof(m_infoheader)); | ||
| 60 | |||
| 61 | if (m_infoheader.biSize != 40) | ||
| 62 | throw FileError("Bitmap info header size is invalid."); | ||
| 63 | if (m_infoheader.biPlanes != 1) | ||
| 64 | throw FileError("Bitmap color planes is not set to 1."); | ||
| 65 | if (m_infoheader.biCompression != 0) | ||
| 66 | throw FileError("Bitmap compression is set but not supported."); | ||
| 67 | if (m_infoheader.biSizeImage < 0) | ||
| 68 | throw FileError("Bitmap image size is less than zero?"); | ||
| 69 | if (m_infoheader.biClrUsed != 0 || m_infoheader.biClrImportant != 0) | ||
| 70 | throw FileError("Bitmap colortable is used but not supported."); | ||
| 71 | |||
| 72 | /* read pixel data using separate class */ | ||
| 73 | if (m_infoheader.biSizeImage > 0) | ||
| 74 | { | ||
| 75 | if (m_pixeldata != NULL) | ||
| 76 | delete[] m_pixeldata; | ||
| 77 | m_pixeldata = new uint8_t[m_infoheader.biSizeImage]; | ||
| 78 | in.read(reinterpret_cast<char *>(m_pixeldata), m_infoheader.biSizeImage); | ||
| 79 | } | ||
| 80 | |||
| 81 | /* get pixelformat instance */ | ||
| 82 | m_pixelformat = NULL; | ||
| 83 | set<CPixelFormat *>::iterator it; | ||
| 84 | for (it = m_handlers.begin(); it != m_handlers.end(); it++) | ||
| 85 | { | ||
| 86 | if (m_infoheader.biBitCount == (*it)->getBitCount()) | ||
| 87 | { | ||
| 88 | m_pixelformat = *it; | ||
| 89 | break; | ||
| 90 | } | ||
| 91 | } | ||
| 92 | if (m_pixelformat == NULL) | ||
| 93 | throw FileError("Bitmap bitcount is not supported."); | ||
| 94 | } | ||
| 95 | |||
| 96 | /*----------------------------------------------------------------------------*/ | ||
| 97 | |||
| 98 | void CBitmap::write(std::ofstream& out) | ||
| 99 | { | ||
| 100 | /* set header values */ | ||
| 101 | m_fileheader.bfSize = m_infoheader.biSizeImage + sizeof(m_infoheader) + sizeof(m_fileheader); | ||
| 102 | |||
| 103 | /* write file header */ | ||
| 104 | out.write(reinterpret_cast<char *>(&m_fileheader), sizeof(m_fileheader)); | ||
| 105 | |||
| 106 | /* write info header */ | ||
| 107 | out.write(reinterpret_cast<char *>(&m_infoheader), sizeof(m_infoheader)); | ||
| 108 | |||
| 109 | /* write pixel data */ | ||
| 110 | if (m_pixeldata != NULL) | ||
| 111 | out.write(reinterpret_cast<char *>(m_pixeldata), m_infoheader.biSizeImage); | ||
| 112 | } | ||
| 113 | |||
| 114 | /*----------------------------------------------------------------------------*/ | ||
| 115 | |||
| 116 | void CBitmap::callFunc(const std::string& func, const std::list<std::string>& params) | ||
| 117 | { | ||
| 118 | if (func.empty()) | ||
| 119 | throw FileError("Function name is empty."); | ||
| 120 | |||
| 121 | if (func == "fillrect") | ||
| 122 | fillrect(params); | ||
| 123 | else if (func == "mirror_x") | ||
| 124 | mirror_x(params); | ||
| 125 | else if (func == "mirror_y") | ||
| 126 | mirror_y(params); | ||
| 127 | else if (func == "invert") | ||
| 128 | invert(params); | ||
| 129 | else | ||
| 130 | throw FileError("Unknown function '" + func + "'."); | ||
| 131 | } | ||
| 132 | |||
| 133 | /*----------------------------------------------------------------------------*/ | ||
| 134 | |||
| 135 | void CBitmap::fillrect(std::list<std::string> params) | ||
| 136 | { | ||
| 137 | /* check prerequirements */ | ||
| 138 | if (params.size() != 7) | ||
| 139 | throw FileError("Invalid number of function parameters (must be 7)."); | ||
| 140 | |||
| 141 | /* do nothing if no pixel exists */ | ||
| 142 | if (m_pixeldata == NULL || m_pixelformat == NULL) | ||
| 143 | return; | ||
| 144 | |||
| 145 | /* convert parameters */ | ||
| 146 | uint32_t pparams[7]; | ||
| 147 | int i = 0; | ||
| 148 | try | ||
| 149 | { | ||
| 150 | for(i = 0; i < 7; i++) | ||
| 151 | { | ||
| 152 | pparams[i] = boost::lexical_cast<uint32_t>(params.front()); | ||
| 153 | params.pop_front(); | ||
| 154 | } | ||
| 155 | } | ||
| 156 | catch(boost::bad_lexical_cast& ex) | ||
| 157 | { | ||
| 158 | throw FileError("Invalid parameter (" + params.front() + ")."); | ||
| 159 | } | ||
| 160 | |||
| 161 | /* width and height can be negativ */ | ||
| 162 | uint32_t width = static_cast<uint32_t>(abs(m_infoheader.biWidth)); | ||
| 163 | uint32_t height = static_cast<uint32_t>(abs(m_infoheader.biHeight)); | ||
| 164 | |||
| 165 | /* check parameter values are in range */ | ||
| 166 | if (pparams[0] < 0 || pparams[0] > width | ||
| 167 | || pparams[1] < 0 || pparams[1] > height) | ||
| 168 | throw FileError("At least one x/y-parameter is out of range."); | ||
| 169 | |||
| 170 | /* check parameter values are in range */ | ||
| 171 | unsigned int max[3]; | ||
| 172 | m_pixelformat->getMaxColor(&max[0], &max[1], &max[2]); | ||
| 173 | if (pparams[4] < 0 || pparams[4] > max[0] | ||
| 174 | || pparams[5] < 0 || pparams[5] > max[1] | ||
| 175 | || pparams[6] < 0 || pparams[6] > max[2]) | ||
| 176 | throw FileError("At least one pixel color parameter is out of range."); | ||
| 177 | |||
| 178 | if (pparams[2] < 0 || pparams[2] + pparams[0] > width | ||
| 179 | || pparams[3] < 0 || pparams[3] + pparams[1] > height) | ||
| 180 | throw FileError("At least one w/h-parameter is out of range."); | ||
| 181 | |||
| 182 | /* call setPixel for every pixel in the rectangel */ | ||
| 183 | for(uint32_t i = pparams[0]; i < pparams[2] + pparams[0]; i++) | ||
| 184 | { | ||
| 185 | for(uint32_t j = pparams[1]; j < pparams[3] + pparams[1]; j++) | ||
| 186 | { | ||
| 187 | try | ||
| 188 | { | ||
| 189 | m_pixelformat->setPixel(&pparams[4], i, j); | ||
| 190 | } | ||
| 191 | catch(CPixelFormat::PixelFormatError& ex) | ||
| 192 | { | ||
| 193 | stringstream errstr; | ||
| 194 | errstr << "Can't set pixel (pos=[" << i << "," << j << "] col=[" | ||
| 195 | << pparams[4] << "," << pparams[5] << "," << pparams[6] << "]): " | ||
| 196 | << ex.what(); | ||
| 197 | throw FileError(errstr.str()); | ||
| 198 | } | ||
| 199 | } | ||
| 200 | } | ||
| 201 | } | ||
| 202 | |||
| 203 | /*----------------------------------------------------------------------------*/ | ||
| 204 | |||
| 205 | #include <iostream> | ||
| 206 | void CBitmap::invert(std::list<std::string> params) | ||
| 207 | { | ||
| 208 | /* check prerequirements */ | ||
| 209 | if (params.size() != 0) | ||
| 210 | throw FileError("Invalid number of function parameters (must be 0)."); | ||
| 211 | |||
| 212 | /* do nothing if no pixel exists */ | ||
| 213 | if (m_pixeldata == NULL || m_pixelformat == NULL) | ||
| 214 | return; | ||
| 215 | |||
| 216 | /* width and height can be negativ */ | ||
| 217 | uint32_t width = static_cast<uint32_t>(abs(m_infoheader.biWidth)); | ||
| 218 | uint32_t height = static_cast<uint32_t>(abs(m_infoheader.biHeight)); | ||
| 219 | unsigned int pixelwidth = m_pixelformat->getBitCount()/8; | ||
| 220 | |||
| 221 | /* calc rowsize - boundary is 32 */ | ||
| 222 | uint32_t rowsize = 4 * static_cast<uint32_t>( | ||
| 223 | ((m_pixelformat->getBitCount() * abs(m_infoheader.biWidth)) + 31) / 32 | ||
| 224 | ); | ||
| 225 | |||
| 226 | for(uint32_t i = 0; i < height; i++) | ||
| 227 | { | ||
| 228 | for(uint32_t j = 0; j <= width; j++) | ||
| 229 | { | ||
| 230 | cout << j << endl; | ||
| 231 | } | ||
| 232 | } | ||
| 233 | |||
| 234 | #if 0 | ||
| 235 | /* uint32_t offset = i * rowsize; | ||
| 236 | |||
| 237 | for(uint32_t j = 0; j <= width/2; j++) | ||
| 238 | { | ||
| 239 | uint32_t poffset = offset + j * pixelwidth; | ||
| 240 | uint32_t pbackset = offset + width * pixelwidth - j * pixelwidth; | ||
| 241 | |||
| 242 | /* boundary check */ | ||
| 243 | if (pbackset > m_infoheader.biSizeImage) | ||
| 244 | throw FileError("Mirrored pixel position is out of range."); | ||
| 245 | |||
| 246 | /* mirroring, backup right data first */ | ||
| 247 | copy(m_pixeldata + pbackset - pixelwidth, m_pixeldata + pbackset, buf); | ||
| 248 | copy(m_pixeldata + poffset, m_pixeldata + poffset + pixelwidth, m_pixeldata + pbackset - pixelwidth); | ||
| 249 | copy(buf, buf + pixelwidth, m_pixeldata + poffset); | ||
| 250 | } | ||
| 251 | } | ||
| 252 | #endif | ||
| 253 | } | ||
| 254 | |||
| 255 | /*----------------------------------------------------------------------------*/ | ||
| 256 | |||
| 257 | void CBitmap::brightness(std::list<std::string> params) | ||
| 258 | { | ||
| 259 | } | ||
| 260 | |||
| 261 | /*----------------------------------------------------------------------------*/ | ||
| 262 | |||
| 263 | void CBitmap::mirror_y(std::list<std::string> params) | ||
| 264 | { | ||
| 265 | /* check prerequirements */ | ||
| 266 | if (params.size() != 0) | ||
| 267 | throw FileError("Invalid number of function parameters (must be 0)."); | ||
| 268 | |||
| 269 | /* do nothing if no pixel exists */ | ||
| 270 | if (m_pixeldata == NULL || m_pixelformat == NULL) | ||
| 271 | return; | ||
| 272 | |||
| 273 | /* height can be negativ */ | ||
| 274 | uint32_t height = static_cast<uint32_t>(abs(m_infoheader.biHeight)); | ||
| 275 | |||
| 276 | /* calc rowsize - boundary is 32 */ | ||
| 277 | uint32_t rowsize = 4 * static_cast<uint32_t>( | ||
| 278 | ((m_pixelformat->getBitCount() * abs(m_infoheader.biWidth)) + 31) / 32 | ||
| 279 | ); | ||
| 280 | |||
| 281 | uint8_t *buf = new uint8_t[rowsize]; | ||
| 282 | for(uint32_t i = 0; i < height/2; i++) | ||
| 283 | { | ||
| 284 | uint32_t j = height - i - 1; | ||
| 285 | uint32_t offset = i * rowsize; | ||
| 286 | uint32_t backset = j * rowsize; | ||
| 287 | |||
| 288 | /* boundary check */ | ||
| 289 | if (offset + rowsize > m_infoheader.biSizeImage | ||
| 290 | || backset + rowsize > m_infoheader.biSizeImage) | ||
| 291 | throw FileError("Mirrored pixel position is out of range."); | ||
| 292 | |||
| 293 | /* mirroring, backup lower data first */ | ||
| 294 | copy(m_pixeldata + backset, m_pixeldata + backset + rowsize, buf); | ||
| 295 | copy(m_pixeldata + offset, m_pixeldata + offset + rowsize, m_pixeldata + backset); | ||
| 296 | copy(buf, buf + rowsize, m_pixeldata + offset); | ||
| 297 | } | ||
| 298 | delete[] buf; | ||
| 299 | } | ||
| 300 | |||
| 301 | /*----------------------------------------------------------------------------*/ | ||
| 302 | |||
| 303 | void CBitmap::mirror_x(std::list<std::string> params) | ||
| 304 | { | ||
| 305 | /* check prerequirements */ | ||
| 306 | if (params.size() != 0) | ||
| 307 | throw FileError("Invalid number of function parameters (must be 0)."); | ||
| 308 | |||
| 309 | /* do nothing if no pixel exists */ | ||
| 310 | if (m_pixeldata == NULL || m_pixelformat == NULL) | ||
| 311 | return; | ||
| 312 | |||
| 313 | /* width and height can be negativ */ | ||
| 314 | uint32_t width = static_cast<uint32_t>(abs(m_infoheader.biWidth)); | ||
| 315 | uint32_t height = static_cast<uint32_t>(abs(m_infoheader.biHeight)); | ||
| 316 | |||
| 317 | /* calc rowsize - boundary is 32 */ | ||
| 318 | uint32_t rowsize = 4 * static_cast<uint32_t>( | ||
| 319 | ((m_pixelformat->getBitCount() * abs(m_infoheader.biWidth)) + 31) / 32 | ||
| 320 | ); | ||
| 321 | |||
| 322 | /* calc pixelwidth */ | ||
| 323 | unsigned int pixelwidth = m_pixelformat->getBitCount()/8; | ||
| 324 | |||
| 325 | uint8_t *buf = new uint8_t[pixelwidth]; | ||
| 326 | for(uint32_t i = 0; i < height; i++) | ||
| 327 | { | ||
| 328 | uint32_t offset = i * rowsize; | ||
| 329 | |||
| 330 | for(uint32_t j = 0; j <= width/2; j++) | ||
| 331 | { | ||
| 332 | uint32_t poffset = offset + j * pixelwidth; | ||
| 333 | uint32_t pbackset = offset + width * pixelwidth - j * pixelwidth; | ||
| 334 | |||
| 335 | /* boundary check */ | ||
| 336 | if (pbackset > m_infoheader.biSizeImage) | ||
| 337 | throw FileError("Mirrored pixel position is out of range."); | ||
| 338 | |||
| 339 | /* mirroring, backup right data first */ | ||
| 340 | copy(m_pixeldata + pbackset - pixelwidth, m_pixeldata + pbackset, buf); | ||
| 341 | copy(m_pixeldata + poffset, m_pixeldata + poffset + pixelwidth, m_pixeldata + pbackset - pixelwidth); | ||
| 342 | copy(buf, buf + pixelwidth, m_pixeldata + poffset); | ||
| 343 | } | ||
| 344 | } | ||
| 345 | delete[] buf; | ||
| 346 | } | ||
| 347 | |||
| 348 | /*----------------------------------------------------------------------------*/ | ||
| 349 | |||
| 350 | #ifdef DEBUG | ||
| 351 | void CBitmap::dump(std::ostream& out) | ||
| 352 | { | ||
| 353 | out | ||
| 354 | << "Bitmap File Header:" << endl | ||
| 355 | << " bfType=" << m_fileheader.bfType[0] << m_fileheader.bfType[1] | ||
| 356 | << ", bfSize=" << m_fileheader.bfSize | ||
| 357 | << ", bfReserved=" << m_fileheader.bfReserved | ||
| 358 | << ", bfOffBits=" << m_fileheader.bfOffBits | ||
| 359 | << endl; | ||
| 360 | |||
| 361 | out | ||
| 362 | << "Bitmap Info Header:" << endl | ||
| 363 | << " biSize=" << m_infoheader.biSize | ||
| 364 | << ", biWidth=" << m_infoheader.biWidth | ||
| 365 | << ", biHeight=" << m_infoheader.biHeight | ||
| 366 | << ", biPlanes=" << m_infoheader.biPlanes | ||
| 367 | << endl | ||
| 368 | |||
| 369 | << " biBitCount=" << m_infoheader.biBitCount | ||
| 370 | << ", biCompression=" << m_infoheader.biCompression | ||
| 371 | << ", biSizeImage=" << m_infoheader.biSizeImage | ||
| 372 | << endl | ||
| 373 | |||
| 374 | << " biXPelsPerMeter=" << m_infoheader.biXPelsPerMeter | ||
| 375 | << ", biYPelsPerMeter=" << m_infoheader.biYPelsPerMeter | ||
| 376 | << ", biClrUsed=" << m_infoheader.biClrUsed | ||
| 377 | << ", biClrImportant=" << m_infoheader.biClrImportant | ||
| 378 | << endl; | ||
| 379 | } | ||
| 380 | #endif | ||
| 381 | |||
| 382 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/cbitmap.h b/ue2/imgsynth2/cbitmap.h new file mode 100644 index 0000000..ca3d6ef --- /dev/null +++ b/ue2/imgsynth2/cbitmap.h | |||
| @@ -0,0 +1,236 @@ | |||
| 1 | /** | ||
| 2 | * @module cbitmap | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief Implementation of CFile handling Windows Bitmaps. | ||
| 5 | * @date 17.04.2009 | ||
| 6 | */ | ||
| 7 | |||
| 8 | #ifndef CBITMAP_H | ||
| 9 | #define CBITMAP_H | ||
| 10 | |||
| 11 | #include <stdint.h> | ||
| 12 | #include "cfile.h" | ||
| 13 | |||
| 14 | class CPixelFormat; | ||
| 15 | #include "cpixelformat.h" | ||
| 16 | |||
| 17 | /** | ||
| 18 | * @class CBitmap | ||
| 19 | * @brief Implementation of CFile handling Windows Bitmaps. | ||
| 20 | * | ||
| 21 | * In order to support operations on bitmaps with different color bitcounts | ||
| 22 | * different implementations of CPixelFormat are used. These classes are | ||
| 23 | * allowed to modify the bitmap headers and pixelbuffer directly. | ||
| 24 | * | ||
| 25 | * On error CFile::FileError is thrown. | ||
| 26 | */ | ||
| 27 | class CBitmap : public CFile | ||
| 28 | { | ||
| 29 | public: | ||
| 30 | /** | ||
| 31 | * @method CBitmap | ||
| 32 | * @brief Default ctor | ||
| 33 | * @param - | ||
| 34 | * @return - | ||
| 35 | * @globalvars none | ||
| 36 | * @exception none | ||
| 37 | * @conditions none | ||
| 38 | */ | ||
| 39 | CBitmap(); | ||
| 40 | |||
| 41 | /** | ||
| 42 | * @method ~CBitmap | ||
| 43 | * @brief Default dtor | ||
| 44 | * @param - | ||
| 45 | * @return - | ||
| 46 | * @globalvars none | ||
| 47 | * @exception none | ||
| 48 | * @conditions none | ||
| 49 | */ | ||
| 50 | ~CBitmap(); | ||
| 51 | |||
| 52 | /** | ||
| 53 | * @method read | ||
| 54 | * @brief Reads Windows Bitmap from filestream. | ||
| 55 | * On error an exception is thrown. | ||
| 56 | * @param in filestream to read data from | ||
| 57 | * @return - | ||
| 58 | * @globalvars none | ||
| 59 | * @exception CFile::FileError | ||
| 60 | * @exception bad_alloc | ||
| 61 | * @conditions none | ||
| 62 | */ | ||
| 63 | void read(std::ifstream& in); | ||
| 64 | |||
| 65 | /** | ||
| 66 | * @method write | ||
| 67 | * @brief Writes Windows Bitmap to filestream. | ||
| 68 | * @param out filestream to read data from | ||
| 69 | * @return - | ||
| 70 | * @globalvars none | ||
| 71 | * @exception FileError | ||
| 72 | * @exception bad_alloc | ||
| 73 | * @conditions none | ||
| 74 | */ | ||
| 75 | void write(std::ofstream& out); | ||
| 76 | |||
| 77 | /** | ||
| 78 | * @method callFunc | ||
| 79 | * @brief Delegates the function and its parameters to the correct | ||
| 80 | * internal method | ||
| 81 | * @param func function name | ||
| 82 | * @param params function parameters as list | ||
| 83 | * @return - | ||
| 84 | * @globalvars none | ||
| 85 | * @exception ParserError | ||
| 86 | * @conditions none | ||
| 87 | */ | ||
| 88 | void callFunc(const std::string& func, const std::list<std::string>& params); | ||
| 89 | |||
| 90 | #ifdef DEBUG | ||
| 91 | /** | ||
| 92 | * @method dump | ||
| 93 | * @brief Dumps the Windows Bitmap file headers to ostream | ||
| 94 | * @param out output stream | ||
| 95 | * @return - | ||
| 96 | * @globalvars | ||
| 97 | * @exception | ||
| 98 | * @conditions | ||
| 99 | */ | ||
| 100 | void dump(std::ostream& out); | ||
| 101 | #endif | ||
| 102 | |||
| 103 | /** | ||
| 104 | * @brief Windows Bitmap File Header structure | ||
| 105 | */ | ||
| 106 | #pragma pack(push,1) | ||
| 107 | typedef struct | ||
| 108 | { | ||
| 109 | /** the magic number used to identify the BMP file */ | ||
| 110 | uint8_t bfType[2]; | ||
| 111 | /** the size of the BMP file in bytes */ | ||
| 112 | uint32_t bfSize; | ||
| 113 | /** reserved */ | ||
| 114 | uint32_t bfReserved; | ||
| 115 | /** the offset of the byte where the bitmap data can be found */ | ||
| 116 | uint32_t bfOffBits; | ||
| 117 | } BITMAP_FILEHEADER; | ||
| 118 | #pragma pack(pop) | ||
| 119 | |||
| 120 | /** | ||
| 121 | * @brief Windows Bitmap Info Header structure | ||
| 122 | */ | ||
| 123 | #pragma pack(push,1) | ||
| 124 | typedef struct | ||
| 125 | { | ||
| 126 | /** the size of this header (40 bytes) */ | ||
| 127 | uint32_t biSize; | ||
| 128 | /** the bitmap width in pixels (signed integer) */ | ||
| 129 | int32_t biWidth; | ||
| 130 | /** the bitmap height in pixels (signed integer) */ | ||
| 131 | int32_t biHeight; | ||
| 132 | /** the number of color planes being used. Must be set to 1 */ | ||
| 133 | uint16_t biPlanes; | ||
| 134 | /** the number of bits per pixel, which is the color depth of the image */ | ||
| 135 | uint16_t biBitCount; | ||
| 136 | /** the compression method being used */ | ||
| 137 | uint32_t biCompression; | ||
| 138 | /** the image size */ | ||
| 139 | uint32_t biSizeImage; | ||
| 140 | /** the horizontal resolution of the image (pixel per meter) */ | ||
| 141 | int32_t biXPelsPerMeter; | ||
| 142 | /** the vertical resolution of the image (pixel per meter) */ | ||
| 143 | int32_t biYPelsPerMeter; | ||
| 144 | /** the number of colors in the color palette, or 0 to default to 2^n */ | ||
| 145 | uint32_t biClrUsed; | ||
| 146 | /** the number of important colors used, or 0 when every color is | ||
| 147 | * important; generally ignored. */ | ||
| 148 | uint32_t biClrImportant; | ||
| 149 | } BITMAP_INFOHEADER; | ||
| 150 | #pragma pack(pop) | ||
| 151 | |||
| 152 | /** | ||
| 153 | * @method getFileHeader | ||
| 154 | * @brief Returns reference to fileheader structure of bitmap | ||
| 155 | * @param - | ||
| 156 | * @return reference to fileheader structure | ||
| 157 | * @globalvars none | ||
| 158 | * @exception none | ||
| 159 | * @conditions none | ||
| 160 | */ | ||
| 161 | BITMAP_FILEHEADER &getFileHeader() | ||
| 162 | { | ||
| 163 | return m_fileheader; | ||
| 164 | } | ||
| 165 | |||
| 166 | /** | ||
| 167 | * @method getInfoHeader | ||
| 168 | * @brief Returns reference to infoheader structure of bitmap | ||
| 169 | * @param - | ||
| 170 | * @return reference to infoheader structure | ||
| 171 | * @globalvars none | ||
| 172 | * @exception none | ||
| 173 | * @conditions none | ||
| 174 | */ | ||
| 175 | BITMAP_INFOHEADER &getInfoHeader() | ||
| 176 | { | ||
| 177 | return m_infoheader; | ||
| 178 | } | ||
| 179 | |||
| 180 | /** | ||
| 181 | * @method getPixelData | ||
| 182 | * @brief Returns pointer to pixelbuffer | ||
| 183 | * @param - | ||
| 184 | * @return pointer to pixelbuffer | ||
| 185 | * @globalvars none | ||
| 186 | * @exception none | ||
| 187 | * @conditions none | ||
| 188 | */ | ||
| 189 | uint8_t *getPixelData() | ||
| 190 | { | ||
| 191 | return m_pixeldata; | ||
| 192 | } | ||
| 193 | |||
| 194 | protected: | ||
| 195 | /** | ||
| 196 | * @method fillrect | ||
| 197 | * @brief Fills rectangle in image starting on position x, y | ||
| 198 | * width size width, height and color red, green, blue. | ||
| 199 | * @param params function parameters as list | ||
| 200 | * @return - | ||
| 201 | * @globalvars none | ||
| 202 | * @exception FileError | ||
| 203 | * @conditions none | ||
| 204 | * | ||
| 205 | * Scriptfile syntax: fillrect(x, y, width, height, red, green, blue) | ||
| 206 | */ | ||
| 207 | void fillrect(std::list<std::string> params); | ||
| 208 | |||
| 209 | /* TODO */ | ||
| 210 | void invert(std::list<std::string> params); | ||
| 211 | |||
| 212 | /* TODO */ | ||
| 213 | void brightness(std::list<std::string> params); | ||
| 214 | |||
| 215 | /* TODO */ | ||
| 216 | void mirror_y(std::list<std::string> params); | ||
| 217 | |||
| 218 | /* TODO */ | ||
| 219 | void mirror_x(std::list<std::string> params); | ||
| 220 | |||
| 221 | /* members */ | ||
| 222 | /** fileheader */ | ||
| 223 | BITMAP_FILEHEADER m_fileheader; | ||
| 224 | /** infoheader */ | ||
| 225 | BITMAP_INFOHEADER m_infoheader; | ||
| 226 | /** pointer to pixelbuffer */ | ||
| 227 | uint8_t *m_pixeldata; | ||
| 228 | /** set of supported PixelFormat handlers */ | ||
| 229 | std::set<CPixelFormat *> m_handlers; | ||
| 230 | /** pointer to CPixelFormat implementation */ | ||
| 231 | CPixelFormat *m_pixelformat; | ||
| 232 | }; | ||
| 233 | |||
| 234 | #endif | ||
| 235 | |||
| 236 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/cfile.h b/ue2/imgsynth2/cfile.h new file mode 100644 index 0000000..a5c4d2a --- /dev/null +++ b/ue2/imgsynth2/cfile.h | |||
| @@ -0,0 +1,121 @@ | |||
| 1 | /** | ||
| 2 | * @module cfile | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief Abstract class for handling files. | ||
| 5 | * Needed for generic use in CScriptparser. | ||
| 6 | * @date 17.04.2009 | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef CFILE_H | ||
| 10 | #define CFILE_H | ||
| 11 | |||
| 12 | #include <string> | ||
| 13 | #include <set> | ||
| 14 | #include <list> | ||
| 15 | #include <fstream> | ||
| 16 | #include <stdexcept> | ||
| 17 | |||
| 18 | /** | ||
| 19 | * @class CFile | ||
| 20 | * @brief Abstract class for handling files. Needed for generic use in | ||
| 21 | * CScriptparser. | ||
| 22 | * | ||
| 23 | * In order for CScriptparser to determine which instance of CFile supports | ||
| 24 | * which filetype, every implemententation need to insert their filetypes to | ||
| 25 | * the member m_types in their constructor. | ||
| 26 | * | ||
| 27 | * On error throw FileError. | ||
| 28 | */ | ||
| 29 | class CFile | ||
| 30 | { | ||
| 31 | public: | ||
| 32 | /** | ||
| 33 | * @class FileError | ||
| 34 | * @brief Exception thrown by implemententations of CFile | ||
| 35 | */ | ||
| 36 | class FileError : public std::invalid_argument { | ||
| 37 | public: | ||
| 38 | /** | ||
| 39 | * @method FileError | ||
| 40 | * @brief Default exception ctor | ||
| 41 | * @param what message to pass along | ||
| 42 | * @return - | ||
| 43 | * @globalvars none | ||
| 44 | * @exception none | ||
| 45 | * @conditions none | ||
| 46 | */ | ||
| 47 | FileError(const std::string& what) | ||
| 48 | : std::invalid_argument(what) | ||
| 49 | {} | ||
| 50 | }; | ||
| 51 | |||
| 52 | /** | ||
| 53 | * @method ~CFile | ||
| 54 | * @brief Default dtor (virtual) | ||
| 55 | * @param - | ||
| 56 | * @return - | ||
| 57 | * @globalvars none | ||
| 58 | * @exception none | ||
| 59 | * @conditions none | ||
| 60 | */ | ||
| 61 | virtual ~CFile() | ||
| 62 | {}; | ||
| 63 | |||
| 64 | /** | ||
| 65 | * @method read | ||
| 66 | * @brief Pure virtual method (interface). Should read data from filestream. | ||
| 67 | * @param in filestream to read data from | ||
| 68 | * @return - | ||
| 69 | * @globalvars none | ||
| 70 | * @exception FileError | ||
| 71 | * @conditions none | ||
| 72 | */ | ||
| 73 | virtual void read(std::ifstream& in) = 0; | ||
| 74 | |||
| 75 | /** | ||
| 76 | * @method write | ||
| 77 | * @brief Pure virtual method (interface). Should write data to filestream. | ||
| 78 | * @param out filestream to write data to | ||
| 79 | * @return - | ||
| 80 | * @globalvars none | ||
| 81 | * @exception FileError | ||
| 82 | * @conditions none | ||
| 83 | */ | ||
| 84 | virtual void write(std::ofstream& out) = 0; | ||
| 85 | |||
| 86 | /** | ||
| 87 | * @method callFunc | ||
| 88 | * @brief Pure virtual method (interface). Should delegate the function | ||
| 89 | * and its parameters to the correct internal method. | ||
| 90 | * @param func function name | ||
| 91 | * @param params function parameters as list | ||
| 92 | * @return - | ||
| 93 | * @globalvars none | ||
| 94 | * @exception FileError | ||
| 95 | * @conditions none | ||
| 96 | */ | ||
| 97 | virtual void callFunc(const std::string& func, const std::list<std::string>& params) = 0; | ||
| 98 | |||
| 99 | /** | ||
| 100 | * @method supportsType | ||
| 101 | * @brief Check if filetype is supported by this implementation. | ||
| 102 | * @param type filetype | ||
| 103 | * @return true if filetype is supported. false otherwise | ||
| 104 | * @globalvars none | ||
| 105 | * @exception none | ||
| 106 | * @conditions none | ||
| 107 | */ | ||
| 108 | bool supportsType(const std::string& type) | ||
| 109 | { | ||
| 110 | return (m_types.find(type) == m_types.end()) ? false : true; | ||
| 111 | } | ||
| 112 | |||
| 113 | protected: | ||
| 114 | /* members */ | ||
| 115 | /** set of filetypes suppported by this implementation */ | ||
| 116 | std::set<std::string> m_types; | ||
| 117 | }; | ||
| 118 | |||
| 119 | #endif | ||
| 120 | |||
| 121 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/cpixelformat.h b/ue2/imgsynth2/cpixelformat.h new file mode 100644 index 0000000..49145df --- /dev/null +++ b/ue2/imgsynth2/cpixelformat.h | |||
| @@ -0,0 +1,124 @@ | |||
| 1 | /** | ||
| 2 | * @module cpixelformat | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief Abstract class for handling different color bitcount of Bitmaps. | ||
| 5 | * Needed for generic use in CBitmap. | ||
| 6 | * @date 18.04.2009 | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef CPIXELFORMAT_H | ||
| 10 | #define CPIXELFORMAT_H | ||
| 11 | |||
| 12 | #include <fstream> | ||
| 13 | #include <stdexcept> | ||
| 14 | |||
| 15 | class CBitmap; | ||
| 16 | #include "cbitmap.h" | ||
| 17 | |||
| 18 | /** | ||
| 19 | * @class CPixelFormat | ||
| 20 | * @brief Abstract class for handling different color bitcount of Bitmaps. | ||
| 21 | * | ||
| 22 | * Needed for generic use in CBitmap. | ||
| 23 | * | ||
| 24 | * On error throw PixelFormatError. | ||
| 25 | */ | ||
| 26 | class CPixelFormat | ||
| 27 | { | ||
| 28 | public: | ||
| 29 | /** | ||
| 30 | * @class PixelFormatError | ||
| 31 | * @brief Exception thrown by implemententations of CPixelFormat | ||
| 32 | */ | ||
| 33 | class PixelFormatError : public std::invalid_argument { | ||
| 34 | public: | ||
| 35 | /** | ||
| 36 | * @method PixelFormatError | ||
| 37 | * @brief Default exception ctor | ||
| 38 | * @param what message to pass along | ||
| 39 | * @return - | ||
| 40 | * @globalvars none | ||
| 41 | * @exception none | ||
| 42 | * @conditions none | ||
| 43 | */ | ||
| 44 | PixelFormatError(const std::string& what) | ||
| 45 | : std::invalid_argument(what) | ||
| 46 | {} | ||
| 47 | }; | ||
| 48 | |||
| 49 | /** | ||
| 50 | * @method CBitmap | ||
| 51 | * @brief Default ctor | ||
| 52 | * @param bitmap pointer to CBitmap instance | ||
| 53 | * @return - | ||
| 54 | * @globalvars none | ||
| 55 | * @exception none | ||
| 56 | * @conditions none | ||
| 57 | */ | ||
| 58 | CPixelFormat(CBitmap *bitmap) | ||
| 59 | : m_bitmap(bitmap) | ||
| 60 | {} | ||
| 61 | |||
| 62 | /** | ||
| 63 | * @method ~CPixelFormat | ||
| 64 | * @brief Default dtor (virtual) | ||
| 65 | * @param - | ||
| 66 | * @return - | ||
| 67 | * @globalvars none | ||
| 68 | * @exception none | ||
| 69 | * @conditions none | ||
| 70 | */ | ||
| 71 | virtual ~CPixelFormat() | ||
| 72 | {}; | ||
| 73 | |||
| 74 | /** | ||
| 75 | * @method setPixel | ||
| 76 | * @brief Modifies pixel at coordinates x, y | ||
| 77 | * @param pixel pointer to new pixel data | ||
| 78 | * @param x x-coordinate | ||
| 79 | * @param y y-coordinate | ||
| 80 | * @return - | ||
| 81 | * @globalvars none | ||
| 82 | * @exception PixelFormatError | ||
| 83 | * @conditions none | ||
| 84 | */ | ||
| 85 | virtual void setPixel(const uint32_t *pixel, const uint32_t x, const uint32_t y) = 0; | ||
| 86 | |||
| 87 | /** | ||
| 88 | * @method getPixel | ||
| 89 | * @brief Get pixel at coordinates x, y | ||
| 90 | * @param pixel pointer to pixel data | ||
| 91 | * @param x x-coordinate | ||
| 92 | * @param y y-coordinate | ||
| 93 | * @return - | ||
| 94 | * @globalvars none | ||
| 95 | * @exception PixelFormatError | ||
| 96 | * @conditions none | ||
| 97 | */ | ||
| 98 | //TODO virtual void getPixel(const uint32_t *pixel, const uint32_t x, const uint32_t y) = 0; | ||
| 99 | |||
| 100 | /** | ||
| 101 | * @method getBitCount | ||
| 102 | * @brief returns color bitcount supported by this class | ||
| 103 | * @param - | ||
| 104 | * @return color bitcount supported by this class | ||
| 105 | * @globalvars none | ||
| 106 | * @exception none | ||
| 107 | * @conditions none | ||
| 108 | */ | ||
| 109 | virtual uint32_t getBitCount() = 0; | ||
| 110 | |||
| 111 | /* | ||
| 112 | * TODO | ||
| 113 | */ | ||
| 114 | virtual void getMaxColor(unsigned int *red, unsigned int *green, unsigned int *blue) = 0; | ||
| 115 | |||
| 116 | protected: | ||
| 117 | /* members */ | ||
| 118 | /** pointer to CBitmap instance */ | ||
| 119 | CBitmap *m_bitmap; | ||
| 120 | }; | ||
| 121 | |||
| 122 | #endif | ||
| 123 | |||
| 124 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/cpixelformat_bgr24.cpp b/ue2/imgsynth2/cpixelformat_bgr24.cpp new file mode 100644 index 0000000..cc02dcc --- /dev/null +++ b/ue2/imgsynth2/cpixelformat_bgr24.cpp | |||
| @@ -0,0 +1,90 @@ | |||
| 1 | /** | ||
| 2 | * @module cpixelformat_BGR24 | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief Implementation of CPixelFormat handling 24bit color Windows Bitmaps. | ||
| 5 | * @date 18.04.2009 | ||
| 6 | */ | ||
| 7 | |||
| 8 | #include <boost/numeric/conversion/cast.hpp> | ||
| 9 | #include "cpixelformat_bgr24.h" | ||
| 10 | |||
| 11 | using namespace std; | ||
| 12 | |||
| 13 | void CPixelFormat_BGR24::getPixel(uint32_t *pixel, uint32_t x, uint32_t y) | ||
| 14 | { | ||
| 15 | /* | ||
| 16 | * pixel[0] ... red | ||
| 17 | * pixel[1] ... green | ||
| 18 | * pixel[2] ... blue | ||
| 19 | */ | ||
| 20 | if (m_bitmap->getPixelData() == NULL) | ||
| 21 | throw PixelFormatError("No pixelbuffer allocated."); | ||
| 22 | |||
| 23 | /* calc rowsize - boundary is 32 */ | ||
| 24 | uint32_t rowsize = 4 * static_cast<uint32_t>( | ||
| 25 | ((getBitCount() * abs(m_bitmap->getInfoHeader().biWidth)) + 31) / 32 | ||
| 26 | ); | ||
| 27 | |||
| 28 | /* if height is positive the y-coordinates are mirrored */ | ||
| 29 | if (m_bitmap->getInfoHeader().biHeight > 0) | ||
| 30 | y = m_bitmap->getInfoHeader().biHeight - y - 1; | ||
| 31 | uint32_t offset = y * rowsize + x * (4 * getBitCount() / 32); | ||
| 32 | |||
| 33 | /* boundary check */ | ||
| 34 | if (offset + getBitCount()/8 > m_bitmap->getInfoHeader().biSizeImage) | ||
| 35 | throw PixelFormatError("Pixel position is out of range."); | ||
| 36 | |||
| 37 | /* get pixel */ | ||
| 38 | try | ||
| 39 | { | ||
| 40 | pixel[0] = boost::numeric_cast<uint32_t>(*(m_bitmap->getPixelData() + offset + 2)); | ||
| 41 | pixel[1] = boost::numeric_cast<uint32_t>(*(m_bitmap->getPixelData() + offset + 1)); | ||
| 42 | pixel[2] = boost::numeric_cast<uint32_t>(*(m_bitmap->getPixelData() + offset)); | ||
| 43 | } | ||
| 44 | catch(boost::numeric::bad_numeric_cast& ex) | ||
| 45 | { | ||
| 46 | throw PixelFormatError("Unable to convert pixelcolor to correct size: " + string(ex.what())); | ||
| 47 | } | ||
| 48 | } | ||
| 49 | |||
| 50 | void CPixelFormat_BGR24::setPixel(const uint32_t *pixel, uint32_t x, uint32_t y) | ||
| 51 | { | ||
| 52 | /* | ||
| 53 | * pixel[0] ... red | ||
| 54 | * pixel[1] ... green | ||
| 55 | * pixel[2] ... blue | ||
| 56 | */ | ||
| 57 | if (m_bitmap->getPixelData() == NULL) | ||
| 58 | throw PixelFormatError("No pixelbuffer allocated."); | ||
| 59 | |||
| 60 | /* calc rowsize - boundary is 32 */ | ||
| 61 | uint32_t rowsize = 4 * static_cast<uint32_t>( | ||
| 62 | ((getBitCount() * abs(m_bitmap->getInfoHeader().biWidth)) + 31) / 32 | ||
| 63 | ); | ||
| 64 | |||
| 65 | /* if height is positive the y-coordinates are mirrored */ | ||
| 66 | if (m_bitmap->getInfoHeader().biHeight > 0) | ||
| 67 | y = m_bitmap->getInfoHeader().biHeight - y - 1; | ||
| 68 | uint32_t offset = y * rowsize + x * (4 * getBitCount() / 32); | ||
| 69 | |||
| 70 | /* boundary check */ | ||
| 71 | if (offset + getBitCount()/8 > m_bitmap->getInfoHeader().biSizeImage) | ||
| 72 | throw PixelFormatError("Pixel position is out of range."); | ||
| 73 | |||
| 74 | /* convert color values to correct types */ | ||
| 75 | uint8_t data[3]; | ||
| 76 | try | ||
| 77 | { | ||
| 78 | data[0] = boost::numeric_cast<uint8_t>(pixel[2]); | ||
| 79 | data[1] = boost::numeric_cast<uint8_t>(pixel[1]); | ||
| 80 | data[2] = boost::numeric_cast<uint8_t>(pixel[0]); | ||
| 81 | } | ||
| 82 | catch(boost::numeric::bad_numeric_cast& ex) | ||
| 83 | { | ||
| 84 | throw PixelFormatError("Unable to convert pixelcolor to correct size: " + string(ex.what())); | ||
| 85 | } | ||
| 86 | |||
| 87 | copy(data, data + 3, m_bitmap->getPixelData() + offset); | ||
| 88 | } | ||
| 89 | |||
| 90 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/cpixelformat_bgr24.h b/ue2/imgsynth2/cpixelformat_bgr24.h new file mode 100644 index 0000000..c3e1b72 --- /dev/null +++ b/ue2/imgsynth2/cpixelformat_bgr24.h | |||
| @@ -0,0 +1,89 @@ | |||
| 1 | /** | ||
| 2 | * @module cpixelformat_bgr24 | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief Implementation of CPixelFormat handling 24bit color Windows Bitmaps. | ||
| 5 | * @date 18.04.2009 | ||
| 6 | */ | ||
| 7 | |||
| 8 | #ifndef CPIXELFORMAT_BGR24_H | ||
| 9 | #define CPIXELFORMAT_BGR24_H | ||
| 10 | |||
| 11 | #include <fstream> | ||
| 12 | #include "cpixelformat.h" | ||
| 13 | |||
| 14 | /** | ||
| 15 | * @class CPixelFormat_BGR24 | ||
| 16 | * @brief Implementation of CPixelFormat handling 24bit color Windows Bitmaps. | ||
| 17 | * | ||
| 18 | * On error CPixelFormat::PixelFormatError is thrown. | ||
| 19 | */ | ||
| 20 | class CPixelFormat_BGR24 : public CPixelFormat | ||
| 21 | { | ||
| 22 | public: | ||
| 23 | /** | ||
| 24 | * @method CPixelFormat_BGR24 | ||
| 25 | * @brief Default ctor | ||
| 26 | * @param bitmap pointer to CBitmap instance | ||
| 27 | * @return - | ||
| 28 | * @globalvars none | ||
| 29 | * @exception none | ||
| 30 | * @conditions none | ||
| 31 | */ | ||
| 32 | CPixelFormat_BGR24(CBitmap *bitmap) | ||
| 33 | : CPixelFormat(bitmap) | ||
| 34 | {} | ||
| 35 | |||
| 36 | /** | ||
| 37 | * @method ~CPixelFormat_BGR24 | ||
| 38 | * @brief Default dtor | ||
| 39 | * @param - | ||
| 40 | * @return - | ||
| 41 | * @globalvars none | ||
| 42 | * @exception none | ||
| 43 | * @conditions none | ||
| 44 | */ | ||
| 45 | ~CPixelFormat_BGR24() | ||
| 46 | {} | ||
| 47 | |||
| 48 | /** | ||
| 49 | * @method setPixel | ||
| 50 | * @brief Modifies pixel at coordinates x, y | ||
| 51 | * @param pixel pointer to new pixel data | ||
| 52 | * @param x x-coordinate | ||
| 53 | * @param y y-coordinate | ||
| 54 | * @return - | ||
| 55 | * @globalvars none | ||
| 56 | * @exception PixelFormatError | ||
| 57 | * @conditions none | ||
| 58 | */ | ||
| 59 | void setPixel(const uint32_t *pixel, uint32_t x, uint32_t y); | ||
| 60 | |||
| 61 | /* TODO */ | ||
| 62 | void getPixel(uint32_t *pixel, uint32_t x, uint32_t y); | ||
| 63 | |||
| 64 | /** | ||
| 65 | * @method getBitCount | ||
| 66 | * @brief returns color bitcount supported by this class | ||
| 67 | * @param - | ||
| 68 | * @return color bitcount supported by this class | ||
| 69 | * @globalvars none | ||
| 70 | * @exception none | ||
| 71 | * @conditions none | ||
| 72 | */ | ||
| 73 | uint32_t getBitCount() | ||
| 74 | { | ||
| 75 | return 24; | ||
| 76 | } | ||
| 77 | |||
| 78 | /* | ||
| 79 | * TODO | ||
| 80 | */ | ||
| 81 | void getMaxColor(unsigned int *red, unsigned int *green, unsigned int *blue) | ||
| 82 | { | ||
| 83 | *red = *green = *blue = 255; /* 2^8 - 1 */ | ||
| 84 | } | ||
| 85 | }; | ||
| 86 | |||
| 87 | #endif | ||
| 88 | |||
| 89 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/cpixelformat_bgr555.cpp b/ue2/imgsynth2/cpixelformat_bgr555.cpp new file mode 100644 index 0000000..4a3c833 --- /dev/null +++ b/ue2/imgsynth2/cpixelformat_bgr555.cpp | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | /** | ||
| 2 | * @module cpixelformat_BGR555 | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief Implementation of CPixelFormat handling BGR555 color (real color) | ||
| 5 | * Windows Bitmaps. | ||
| 6 | * @date 18.04.2009 | ||
| 7 | */ | ||
| 8 | |||
| 9 | #include <boost/numeric/conversion/cast.hpp> | ||
| 10 | #include "cpixelformat_bgr555.h" | ||
| 11 | |||
| 12 | using namespace std; | ||
| 13 | |||
| 14 | void CPixelFormat_BGR555::setPixel(const uint32_t *pixel, uint32_t x, uint32_t y) | ||
| 15 | { | ||
| 16 | /* | ||
| 17 | * pixel[0] ... red | ||
| 18 | * pixel[1] ... green | ||
| 19 | * pixel[2] ... blue | ||
| 20 | */ | ||
| 21 | |||
| 22 | if (m_bitmap->getPixelData() == NULL) | ||
| 23 | throw PixelFormatError("No pixelbuffer allocated."); | ||
| 24 | |||
| 25 | /* calc rowsize - boundary is 32 */ | ||
| 26 | uint32_t rowsize = 4 * static_cast<uint32_t>( | ||
| 27 | ((CPixelFormat_BGR555::getBitCount() * abs(m_bitmap->getInfoHeader().biWidth)) + 31) / 32 | ||
| 28 | ); | ||
| 29 | |||
| 30 | /* if height is positive the y-coordinates are mirrored */ | ||
| 31 | if (m_bitmap->getInfoHeader().biHeight > 0) | ||
| 32 | y = m_bitmap->getInfoHeader().biHeight - y - 1; | ||
| 33 | uint32_t offset = y * rowsize + x * (4 * getBitCount() / 32); | ||
| 34 | |||
| 35 | /* boundary check */ | ||
| 36 | if (offset + getBitCount()/8 > m_bitmap->getInfoHeader().biSizeImage) | ||
| 37 | throw PixelFormatError("Pixel position is out of range."); | ||
| 38 | |||
| 39 | /* convert color values to correct types */ | ||
| 40 | uint8_t *o = m_bitmap->getPixelData() + offset; | ||
| 41 | *(uint16_t *)o = (uint16_t)(((pixel[2] << BGR555_BLUE_SHIFT) & BGR555_BLUE_MASK) | | ||
| 42 | ((pixel[1] << BGR555_GREEN_SHIFT) & BGR555_GREEN_MASK) | | ||
| 43 | ((pixel[0] << BGR555_RED_SHIFT) & BGR555_RED_MASK)); | ||
| 44 | } | ||
| 45 | |||
| 46 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/cpixelformat_bgr555.h b/ue2/imgsynth2/cpixelformat_bgr555.h new file mode 100644 index 0000000..7a49c7c --- /dev/null +++ b/ue2/imgsynth2/cpixelformat_bgr555.h | |||
| @@ -0,0 +1,96 @@ | |||
| 1 | /** | ||
| 2 | * @module cpixelformat_bgr555 | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief Implementation of CPixelFormat handling BGR555 color (real color) | ||
| 5 | * Windows Bitmaps. | ||
| 6 | * @date 26.04.2009 | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef CPIXELFORMAT_BGR555_H | ||
| 10 | #define CPIXELFORMAT_BGR555_H | ||
| 11 | |||
| 12 | #include <fstream> | ||
| 13 | #include "cpixelformat.h" | ||
| 14 | |||
| 15 | /* TODO */ | ||
| 16 | #define BGR555_RED_SHIFT 10 | ||
| 17 | #define BGR555_GREEN_SHIFT 5 | ||
| 18 | #define BGR555_BLUE_SHIFT 0 | ||
| 19 | #define BGR555_RED_MASK 0x7C00 | ||
| 20 | #define BGR555_GREEN_MASK 0x03E0 | ||
| 21 | #define BGR555_BLUE_MASK 0x001F | ||
| 22 | |||
| 23 | /** | ||
| 24 | * @class CPixelFormat_BGR555 | ||
| 25 | * @brief Implementation of CPixelFormat handling BGR555 color (real color) | ||
| 26 | * Windows Bitmaps. | ||
| 27 | * | ||
| 28 | * On error CPixelFormat::PixelFormatError is thrown. | ||
| 29 | */ | ||
| 30 | class CPixelFormat_BGR555 : public CPixelFormat | ||
| 31 | { | ||
| 32 | public: | ||
| 33 | /** | ||
| 34 | * @method CPixelFormat_BGR55 | ||
| 35 | * @brief Default ctor | ||
| 36 | * @param bitmap pointer to CBitmap instance | ||
| 37 | * @return - | ||
| 38 | * @globalvars none | ||
| 39 | * @exception none | ||
| 40 | * @conditions none | ||
| 41 | */ | ||
| 42 | CPixelFormat_BGR555(CBitmap *bitmap) | ||
| 43 | : CPixelFormat(bitmap) | ||
| 44 | {} | ||
| 45 | |||
| 46 | /** | ||
| 47 | * @method ~CPixelFormat_BGR555 | ||
| 48 | * @brief Default dtor | ||
| 49 | * @param - | ||
| 50 | * @return - | ||
| 51 | * @globalvars none | ||
| 52 | * @exception none | ||
| 53 | * @conditions none | ||
| 54 | */ | ||
| 55 | ~CPixelFormat_BGR555() | ||
| 56 | {} | ||
| 57 | |||
| 58 | /** | ||
| 59 | * @method setPixel | ||
| 60 | * @brief Modifies pixel at coordinates x, y | ||
| 61 | * @param pixel pointer to new pixel data | ||
| 62 | * @param x x-coordinate | ||
| 63 | * @param y y-coordinate | ||
| 64 | * @return - | ||
| 65 | * @globalvars none | ||
| 66 | * @exception PixelFormatError | ||
| 67 | * @conditions none | ||
| 68 | */ | ||
| 69 | void setPixel(const uint32_t *pixel, uint32_t x, uint32_t y); | ||
| 70 | |||
| 71 | /** | ||
| 72 | * @method getBitCount | ||
| 73 | * @brief returns color bitcount supported by this class | ||
| 74 | * @param - | ||
| 75 | * @return color bitcount supported by this class | ||
| 76 | * @globalvars none | ||
| 77 | * @exception none | ||
| 78 | * @conditions none | ||
| 79 | */ | ||
| 80 | uint32_t getBitCount() | ||
| 81 | { | ||
| 82 | return 16; | ||
| 83 | } | ||
| 84 | |||
| 85 | /* | ||
| 86 | * TODO | ||
| 87 | */ | ||
| 88 | void getMaxColor(unsigned int *red, unsigned int *green, unsigned int *blue) | ||
| 89 | { | ||
| 90 | *red = *green = *blue = 31; /* 2^5 -1 */ | ||
| 91 | } | ||
| 92 | }; | ||
| 93 | |||
| 94 | #endif | ||
| 95 | |||
| 96 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/cscriptparser.cpp b/ue2/imgsynth2/cscriptparser.cpp new file mode 100644 index 0000000..df3df1e --- /dev/null +++ b/ue2/imgsynth2/cscriptparser.cpp | |||
| @@ -0,0 +1,209 @@ | |||
| 1 | /** | ||
| 2 | * @module cscriptparser | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief class for parsing simple scriptfiles | ||
| 5 | * @date 17.04.2009 | ||
| 6 | */ | ||
| 7 | |||
| 8 | #include <fstream> | ||
| 9 | #include <boost/tokenizer.hpp> | ||
| 10 | #include <boost/algorithm/string.hpp> | ||
| 11 | #include "cscriptparser.h" | ||
| 12 | #include "cbitmap.h" | ||
| 13 | |||
| 14 | using namespace std; | ||
| 15 | using namespace boost; | ||
| 16 | |||
| 17 | CScriptparser::CScriptparser(const std::string& scriptfile) | ||
| 18 | : m_scriptfile(scriptfile), m_handler(NULL) | ||
| 19 | { | ||
| 20 | /* add our handlers */ | ||
| 21 | m_handlers.insert(new CBitmap); | ||
| 22 | } | ||
| 23 | |||
| 24 | /*----------------------------------------------------------------------------*/ | ||
| 25 | |||
| 26 | CScriptparser::~CScriptparser() | ||
| 27 | { | ||
| 28 | /* delete image handlers */ | ||
| 29 | set<CFile *>::iterator it; | ||
| 30 | for (it = m_handlers.begin(); it != m_handlers.end(); it++) | ||
| 31 | delete *it; | ||
| 32 | m_handler = NULL; | ||
| 33 | } | ||
| 34 | |||
| 35 | /*----------------------------------------------------------------------------*/ | ||
| 36 | |||
| 37 | void CScriptparser::parse() | ||
| 38 | { | ||
| 39 | /* open and read file */ | ||
| 40 | ifstream file(m_scriptfile.c_str(), ios::in); | ||
| 41 | if (!file) | ||
| 42 | throw ParserError("Unable to open scriptfile '" + m_scriptfile + "'."); | ||
| 43 | |||
| 44 | while (!file.eof() && file.good()) | ||
| 45 | { | ||
| 46 | /* read file pre line */ | ||
| 47 | getline(file, m_curline); | ||
| 48 | if (m_curline.empty()) | ||
| 49 | continue; | ||
| 50 | |||
| 51 | trim(m_curline); | ||
| 52 | |||
| 53 | /* ignore comments */ | ||
| 54 | if (m_curline.find_first_of('#') == 0) | ||
| 55 | continue; | ||
| 56 | |||
| 57 | /* line has no function call */ | ||
| 58 | size_t pos1 = m_curline.find_first_of('('); | ||
| 59 | size_t pos2 = m_curline.find_last_of(')'); | ||
| 60 | if (pos1 == string::npos || pos2 == string::npos) | ||
| 61 | throw ParserError("Invalid syntax. Not a function", m_curline); | ||
| 62 | |||
| 63 | /* first parse function name and tokenize all parameters */ | ||
| 64 | string func = m_curline.substr(0, pos1); | ||
| 65 | string params = m_curline.substr(pos1 + 1, pos2 - pos1 - 1); | ||
| 66 | list<string> funcparams; | ||
| 67 | tokenizer< char_separator<char> > tokens(params, char_separator<char>(",")); | ||
| 68 | /* BOOST_FOREACH isn't available on OOP-servers... */ | ||
| 69 | for (tokenizer< char_separator<char> >::iterator it = tokens.begin(); | ||
| 70 | it != tokens.end(); | ||
| 71 | it++) | ||
| 72 | { | ||
| 73 | string tok(*it); | ||
| 74 | trim(tok); | ||
| 75 | if (tok.find_first_of(' ') != string::npos) | ||
| 76 | { | ||
| 77 | if (tok.find_first_of('"') == string::npos) | ||
| 78 | throw ParserError("Invalid syntax", m_curline); | ||
| 79 | } | ||
| 80 | trim_if(tok, is_any_of("\"")); | ||
| 81 | funcparams.push_back(tok); | ||
| 82 | } | ||
| 83 | |||
| 84 | /* then call the corresponding function */ | ||
| 85 | callFunc(func, funcparams); | ||
| 86 | } | ||
| 87 | |||
| 88 | file.close(); | ||
| 89 | } | ||
| 90 | |||
| 91 | /*----------------------------------------------------------------------------*/ | ||
| 92 | |||
| 93 | void CScriptparser::callFunc(const std::string& func, const std::list<std::string>& funcparams) | ||
| 94 | { | ||
| 95 | if (func.empty()) | ||
| 96 | throw ParserError("Function name is empty.", m_curline); | ||
| 97 | |||
| 98 | if (func == "read") | ||
| 99 | read(funcparams); | ||
| 100 | else if (func == "write") | ||
| 101 | write(funcparams); | ||
| 102 | else | ||
| 103 | { | ||
| 104 | if (m_handler == NULL) | ||
| 105 | throw ParserError("No image is being processed.", m_curline); | ||
| 106 | |||
| 107 | /* call function from handler */ | ||
| 108 | try | ||
| 109 | { | ||
| 110 | m_handler->callFunc(func, funcparams); | ||
| 111 | } | ||
| 112 | catch(CFile::FileError& ex) | ||
| 113 | { | ||
| 114 | throw ParserError(ex.what(), m_curline); | ||
| 115 | } | ||
| 116 | } | ||
| 117 | } | ||
| 118 | |||
| 119 | /*----------------------------------------------------------------------------*/ | ||
| 120 | |||
| 121 | void CScriptparser::read(std::list<std::string> funcparams) | ||
| 122 | { | ||
| 123 | /* check prerequirements */ | ||
| 124 | if (funcparams.size() != 2) | ||
| 125 | throw ParserError("Invalid number of function parameters (must be 2).", m_curline); | ||
| 126 | if (m_handler != NULL) | ||
| 127 | throw ParserError("An image is already being processed. Unable to open another.", m_curline); | ||
| 128 | |||
| 129 | string type = funcparams.front(); | ||
| 130 | to_upper(type); | ||
| 131 | funcparams.pop_front(); | ||
| 132 | string filename = funcparams.front(); | ||
| 133 | |||
| 134 | /* fetch image handler supporting requested filetype */ | ||
| 135 | m_handler = NULL; | ||
| 136 | set<CFile *>::iterator it; | ||
| 137 | for (it = m_handlers.begin(); it != m_handlers.end(); it++) | ||
| 138 | { | ||
| 139 | if ((*it)->supportsType(type)) | ||
| 140 | { | ||
| 141 | m_handler = *it; | ||
| 142 | break; | ||
| 143 | } | ||
| 144 | } | ||
| 145 | if (m_handler == NULL) | ||
| 146 | throw ParserError("Unknown filetype.", m_curline); | ||
| 147 | |||
| 148 | /* open file in binary mode */ | ||
| 149 | ifstream file(filename.c_str(), ios::in | ios::binary); | ||
| 150 | if (!file) | ||
| 151 | throw ParserError("Unable to read file.", m_curline); | ||
| 152 | |||
| 153 | /* let handlers read() parse the file */ | ||
| 154 | try | ||
| 155 | { | ||
| 156 | m_handler->read(file); | ||
| 157 | if (!file.good()) | ||
| 158 | throw ParserError("Error while reading image file.", m_curline); | ||
| 159 | file.close(); | ||
| 160 | } | ||
| 161 | catch(CFile::FileError& ex) | ||
| 162 | { | ||
| 163 | file.close(); | ||
| 164 | throw ParserError(ex.what(), m_curline); | ||
| 165 | } | ||
| 166 | } | ||
| 167 | |||
| 168 | /*----------------------------------------------------------------------------*/ | ||
| 169 | |||
| 170 | void CScriptparser::write(std::list<std::string> funcparams) | ||
| 171 | { | ||
| 172 | /* check prerequirements */ | ||
| 173 | if (funcparams.size() != 2) | ||
| 174 | throw ParserError("Invalid number of function parameters (must be 2).", m_curline); | ||
| 175 | if (m_handler == NULL) | ||
| 176 | throw ParserError("No image is being processed.", m_curline); | ||
| 177 | |||
| 178 | string type = funcparams.front(); | ||
| 179 | to_upper(type); | ||
| 180 | funcparams.pop_front(); | ||
| 181 | string filename = funcparams.front(); | ||
| 182 | |||
| 183 | /* do we have an image handler supporting the filetype? */ | ||
| 184 | if (!m_handler->supportsType(type)) | ||
| 185 | throw ParserError("Unknown filetype.", m_curline); | ||
| 186 | |||
| 187 | /* open file in binary mode */ | ||
| 188 | ofstream file(filename.c_str(), ios::out | ios::binary); | ||
| 189 | if (!file) | ||
| 190 | throw ParserError("Unable to open file.", m_curline); | ||
| 191 | |||
| 192 | /* let handlers write() parse the file */ | ||
| 193 | try | ||
| 194 | { | ||
| 195 | m_handler->write(file); | ||
| 196 | if (!file.good()) | ||
| 197 | throw ParserError("Error while writing image file.", m_curline); | ||
| 198 | file.close(); | ||
| 199 | m_handler = NULL; | ||
| 200 | } | ||
| 201 | catch(CFile::FileError& ex) | ||
| 202 | { | ||
| 203 | file.close(); | ||
| 204 | m_handler = NULL; | ||
| 205 | throw ParserError(ex.what(), m_curline); | ||
| 206 | } | ||
| 207 | } | ||
| 208 | |||
| 209 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/cscriptparser.h b/ue2/imgsynth2/cscriptparser.h new file mode 100644 index 0000000..d4ebd0e --- /dev/null +++ b/ue2/imgsynth2/cscriptparser.h | |||
| @@ -0,0 +1,181 @@ | |||
| 1 | /** | ||
| 2 | * @module cscriptparser | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief class for parsing simple scriptfiles | ||
| 5 | * @date 17.04.2009 | ||
| 6 | */ | ||
| 7 | |||
| 8 | #ifndef CSCRIPTPARSER_H | ||
| 9 | #define CSCRIPTPARSER_H | ||
| 10 | |||
| 11 | #include <stdexcept> | ||
| 12 | #include <string> | ||
| 13 | #include <list> | ||
| 14 | #include <set> | ||
| 15 | #include "cfile.h" | ||
| 16 | |||
| 17 | /** | ||
| 18 | * @class CScriptparser | ||
| 19 | * | ||
| 20 | * Parses a simple line based scriptfile with some limitations: | ||
| 21 | * first function (starting a block) must be a read-command, | ||
| 22 | * last must be a write-command (ending this block). | ||
| 23 | * | ||
| 24 | * read- and write-commands have hard coded parameters, number#1 being a filetype. | ||
| 25 | * Classes handling certain filetypes must be of type CFile. | ||
| 26 | * Custom functions will be passed to CFile::callFunc(). | ||
| 27 | * | ||
| 28 | * On error ParserError will be thrown. | ||
| 29 | */ | ||
| 30 | class CScriptparser | ||
| 31 | { | ||
| 32 | public: | ||
| 33 | /** | ||
| 34 | * @class ParserError | ||
| 35 | * @brief Exception thrown by CScriptparser | ||
| 36 | */ | ||
| 37 | class ParserError : public std::invalid_argument { | ||
| 38 | public: | ||
| 39 | /** | ||
| 40 | * @method ParserError | ||
| 41 | * @brief Default exception ctor | ||
| 42 | * @param what message to pass along | ||
| 43 | * @return - | ||
| 44 | * @globalvars none | ||
| 45 | * @exception none | ||
| 46 | * @conditions none | ||
| 47 | */ | ||
| 48 | ParserError(const std::string& what) | ||
| 49 | : std::invalid_argument(what), m_line("") | ||
| 50 | {} | ||
| 51 | |||
| 52 | /** | ||
| 53 | * @method ParserError | ||
| 54 | * @brief Custom exception ctor | ||
| 55 | * @param what message to pass along | ||
| 56 | * @param line scriptline which is currently being parsed | ||
| 57 | * @return - | ||
| 58 | * @globalvars none | ||
| 59 | * @exception none | ||
| 60 | * @conditions none | ||
| 61 | */ | ||
| 62 | ParserError(const std::string& what, const std::string& line) | ||
| 63 | : std::invalid_argument(what), m_line(line) | ||
| 64 | {} | ||
| 65 | |||
| 66 | /** | ||
| 67 | * @method ~ParserError | ||
| 68 | * @brief Default dtor | ||
| 69 | * @param - | ||
| 70 | * @return - | ||
| 71 | * @globalvars none | ||
| 72 | * @exception not allowed | ||
| 73 | * @conditions none | ||
| 74 | */ | ||
| 75 | ~ParserError() throw() | ||
| 76 | {} | ||
| 77 | |||
| 78 | /** | ||
| 79 | * @method getLine | ||
| 80 | * @brief returns reference to currently parsed scriptline (if set) | ||
| 81 | * @return reference to currently parsed scriptline (maybe empty string) | ||
| 82 | * @globalvars none | ||
| 83 | * @exception none | ||
| 84 | * @conditions none | ||
| 85 | */ | ||
| 86 | const std::string &getLine() | ||
| 87 | { | ||
| 88 | return m_line; | ||
| 89 | } | ||
| 90 | |||
| 91 | private: | ||
| 92 | /* members*/ | ||
| 93 | std::string m_line; | ||
| 94 | }; | ||
| 95 | |||
| 96 | /** | ||
| 97 | * @method CScriptparser | ||
| 98 | * @brief Default ctor | ||
| 99 | * @param scriptfile filename of script to parse | ||
| 100 | * @return - | ||
| 101 | * @globalvars none | ||
| 102 | * @exception bad_alloc | ||
| 103 | * @conditions none | ||
| 104 | */ | ||
| 105 | CScriptparser(const std::string& scriptfile); | ||
| 106 | |||
| 107 | /** | ||
| 108 | * @method ~CScriptparser | ||
| 109 | * @brief Default dtor | ||
| 110 | * @param - | ||
| 111 | * @return - | ||
| 112 | * @globalvars none | ||
| 113 | * @exception none | ||
| 114 | * @conditions none | ||
| 115 | */ | ||
| 116 | ~CScriptparser(); | ||
| 117 | |||
| 118 | /** | ||
| 119 | * @method parse | ||
| 120 | * @brief Start parsing the scriptfile | ||
| 121 | * @param - | ||
| 122 | * @return - | ||
| 123 | * @globalvars none | ||
| 124 | * @exception ParserError | ||
| 125 | * @conditions none | ||
| 126 | */ | ||
| 127 | void parse(); | ||
| 128 | |||
| 129 | protected: | ||
| 130 | /** | ||
| 131 | * @method callFunc | ||
| 132 | * @brief Delegates the function and its parameters to the correct | ||
| 133 | * method (internal or handler) | ||
| 134 | * @param func function name | ||
| 135 | * @param funcparams function parameters as list | ||
| 136 | * @return - | ||
| 137 | * @globalvars none | ||
| 138 | * @exception ParserError | ||
| 139 | * @conditions none | ||
| 140 | */ | ||
| 141 | void callFunc(const std::string& func, const std::list<std::string>& funcparams); | ||
| 142 | |||
| 143 | /** | ||
| 144 | * @method read | ||
| 145 | * @brief Handles/wrappes read-command. according to the filetype the | ||
| 146 | * read-method of the corresponding handler will be called inside. | ||
| 147 | * @param funcparams function parameters as list | ||
| 148 | * @return - | ||
| 149 | * @globalvars none | ||
| 150 | * @exception ParserError | ||
| 151 | * @conditions none | ||
| 152 | * | ||
| 153 | * Scriptfile syntax: read(<FILETYPE>, <FILENAME>) | ||
| 154 | */ | ||
| 155 | void read(std::list<std::string> funcparams); | ||
| 156 | |||
| 157 | /** | ||
| 158 | * @method write | ||
| 159 | * @brief Handles/wrappes write-command. according to the filetype the | ||
| 160 | * write-method of the corresponding handler will be called inside. | ||
| 161 | * @param funcparams function parameters as list | ||
| 162 | * @return - | ||
| 163 | * @globalvars none | ||
| 164 | * @exception ParserError | ||
| 165 | * @conditions none | ||
| 166 | * | ||
| 167 | * Scriptfile syntax: write(<FILETYPE>, <FILENAME>) | ||
| 168 | */ | ||
| 169 | void write(std::list<std::string> funcparams); | ||
| 170 | |||
| 171 | private: | ||
| 172 | /* members */ | ||
| 173 | std::set<CFile *> m_handlers; | ||
| 174 | std::string m_scriptfile; | ||
| 175 | std::string m_curline; | ||
| 176 | CFile *m_handler; | ||
| 177 | }; | ||
| 178 | |||
| 179 | #endif | ||
| 180 | |||
| 181 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/imgsynth2.cpp b/ue2/imgsynth2/imgsynth2.cpp new file mode 100644 index 0000000..135d31f --- /dev/null +++ b/ue2/imgsynth2/imgsynth2.cpp | |||
| @@ -0,0 +1,84 @@ | |||
| 1 | /** | ||
| 2 | * @module imgsynth2 | ||
| 3 | * @author Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 4 | * @brief imgsynth2 reads a scriptfile given as commandline option | ||
| 5 | * and executes all known function inside. | ||
| 6 | * On error (e.g. unknown function) the program will terminate | ||
| 7 | * @date 17.04.2009 | ||
| 8 | * @par Exercise | ||
| 9 | * 2 | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include <iostream> | ||
| 13 | #include <boost/program_options.hpp> | ||
| 14 | #include "cscriptparser.h" | ||
| 15 | |||
| 16 | using namespace std; | ||
| 17 | namespace po = boost::program_options; | ||
| 18 | |||
| 19 | /** | ||
| 20 | * @func main | ||
| 21 | * @brief program entry point | ||
| 22 | * @param argc standard parameter of main | ||
| 23 | * @param argv standard parameter of main | ||
| 24 | * @return 0 on success, not 0 otherwise | ||
| 25 | * @globalvars none | ||
| 26 | * @exception none | ||
| 27 | * @conditions none | ||
| 28 | * | ||
| 29 | * setup commandline options, parse them and pass scriptfile to scriptparser | ||
| 30 | * instance. On error print error message to stderr. | ||
| 31 | * Unknown commandline options will print a usage message. | ||
| 32 | */ | ||
| 33 | int main(int argc, char* argv[]) | ||
| 34 | { | ||
| 35 | string me(argv[0]); | ||
| 36 | |||
| 37 | /* define commandline options */ | ||
| 38 | po::options_description desc("Allowed options"); | ||
| 39 | desc.add_options() | ||
| 40 | ("help,h", "this help message") | ||
| 41 | ("input,i", po::value<string>(), "input scriptfile"); | ||
| 42 | |||
| 43 | /* parse commandline options */ | ||
| 44 | po::variables_map vm; | ||
| 45 | try | ||
| 46 | { | ||
| 47 | po::store(po::parse_command_line(argc, argv, desc), vm); | ||
| 48 | po::notify(vm); | ||
| 49 | } | ||
| 50 | catch(po::error& ex) | ||
| 51 | { | ||
| 52 | cerr << "Error: " << ex.what() << endl; | ||
| 53 | } | ||
| 54 | |||
| 55 | /* print usage upon request or missing params */ | ||
| 56 | if (vm.count("help") || !vm.count("input")) | ||
| 57 | { | ||
| 58 | cout << "Usage: " << me << " -i <scriptfile>" << endl; | ||
| 59 | cout << desc << endl; | ||
| 60 | return 0; | ||
| 61 | } | ||
| 62 | |||
| 63 | CScriptparser parser(vm["input"].as<string>()); | ||
| 64 | try | ||
| 65 | { | ||
| 66 | parser.parse(); | ||
| 67 | } | ||
| 68 | catch(CScriptparser::ParserError& ex) | ||
| 69 | { | ||
| 70 | cerr << me << ": Error while processing scriptfile: " << ex.what() << endl; | ||
| 71 | if (!ex.getLine().empty()) | ||
| 72 | cerr << "Scriptline: '" << ex.getLine() << "'" << endl; | ||
| 73 | return 1; | ||
| 74 | } | ||
| 75 | catch(exception& ex) | ||
| 76 | { | ||
| 77 | cerr << me << ": Unexpected exception: " << ex.what() << endl; | ||
| 78 | return 1; | ||
| 79 | } | ||
| 80 | |||
| 81 | return 0; | ||
| 82 | } | ||
| 83 | |||
| 84 | /* vim: set et sw=2 ts=2: */ | ||
diff --git a/ue2/imgsynth2/test/input_yellow_man1_rgb24 b/ue2/imgsynth2/test/input_yellow_man1_rgb24 new file mode 100644 index 0000000..ce2743b --- /dev/null +++ b/ue2/imgsynth2/test/input_yellow_man1_rgb24 | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | #in: test/yellow_man1_rgb24_in.bmp | ||
| 2 | #out: test/yellow_man1_rgb24_out.bmp | ||
| 3 | #ref: test/yellow_man1_rgb24_ref.bmp | ||
| 4 | |||
| 5 | read(BMP, test/yellow_man1_rgb24_in.bmp) | ||
| 6 | |||
| 7 | fillrect(0,3,6,5,0,255,0) | ||
| 8 | fillrect(2,13,7,4,0,0,255) | ||
| 9 | |||
| 10 | write(BMP, "test/yellow_man1_rgb24_out.bmp") | ||
diff --git a/ue2/imgsynth2/test/input_yellow_man1_rgb555 b/ue2/imgsynth2/test/input_yellow_man1_rgb555 new file mode 100644 index 0000000..1723489 --- /dev/null +++ b/ue2/imgsynth2/test/input_yellow_man1_rgb555 | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | #in: test/yellow_man1_rgb555_in.bmp | ||
| 2 | #out: test/yellow_man1_rgb555_out.bmp | ||
| 3 | #ref: test/yellow_man1_rgb555_ref.bmp | ||
| 4 | |||
| 5 | read(BMP, test/yellow_man1_rgb555_in.bmp) | ||
| 6 | |||
| 7 | fillrect(0,3,6,5,0,31,0) | ||
| 8 | fillrect(2,13,7,4,0,0,31) | ||
| 9 | |||
| 10 | write(BMP, "test/yellow_man1_rgb555_out.bmp") | ||
diff --git a/ue2/imgsynth2/test/input_yellow_man2_rgb24 b/ue2/imgsynth2/test/input_yellow_man2_rgb24 new file mode 100644 index 0000000..37108b8 --- /dev/null +++ b/ue2/imgsynth2/test/input_yellow_man2_rgb24 | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | #in: test/yellow_man2_rgb24_in.bmp | ||
| 2 | #out: test/yellow_man2_rgb24_out.bmp | ||
| 3 | #ref: test/yellow_man2_rgb24_ref.bmp | ||
| 4 | |||
| 5 | read(BMP, test/yellow_man2_rgb24_in.bmp) | ||
| 6 | |||
| 7 | fillrect(0,3,6,5,0,255,0) | ||
| 8 | fillrect(2,13,6,4,0,0,255) | ||
| 9 | mirror_x() | ||
| 10 | mirror_y() | ||
| 11 | #invert() | ||
| 12 | |||
| 13 | write(BMP, "test/yellow_man2_rgb24_out.bmp") | ||
diff --git a/ue2/imgsynth2/test/input_yellow_man2_rgb555 b/ue2/imgsynth2/test/input_yellow_man2_rgb555 new file mode 100644 index 0000000..3c00301 --- /dev/null +++ b/ue2/imgsynth2/test/input_yellow_man2_rgb555 | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | #in: test/yellow_man2_rgb555_in.bmp | ||
| 2 | #out: test/yellow_man2_rgb555_out.bmp | ||
| 3 | #ref: test/yellow_man2_rgb555_ref.bmp | ||
| 4 | |||
| 5 | read(BMP, test/yellow_man2_rgb555_in.bmp) | ||
| 6 | |||
| 7 | fillrect(0,3,6,5,0,24,0) | ||
| 8 | fillrect(2,13,7,4,0,0,24) | ||
| 9 | mirror_x() | ||
| 10 | mirror_y() | ||
| 11 | #invert() | ||
| 12 | |||
| 13 | write(BMP, "test/yellow_man2_rgb555_out.bmp") | ||
diff --git a/ue2/imgsynth2/test/test.sh b/ue2/imgsynth2/test/test.sh new file mode 100755 index 0000000..5d760b9 --- /dev/null +++ b/ue2/imgsynth2/test/test.sh | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | #!/bin/bash | ||
| 2 | |||
| 3 | inputs=( $(ls test/input_* | sort -n) ) | ||
| 4 | |||
| 5 | for input in ${inputs[@]} | ||
| 6 | do | ||
| 7 | echo "Testing $input ..." | ||
| 8 | |||
| 9 | files=() | ||
| 10 | for tag in "#in: " "#out: " "#ref: " | ||
| 11 | do | ||
| 12 | tmp=$(grep "$tag" "$input") | ||
| 13 | if [ -z "$tmp" ] | ||
| 14 | then | ||
| 15 | echo " ERROR: Tag '$tag' missing" | ||
| 16 | exit 1 | ||
| 17 | fi | ||
| 18 | |||
| 19 | tmp=${tmp:${#tag}} | ||
| 20 | #if [ ! -e "$tmp" ] | ||
| 21 | #then | ||
| 22 | # echo " ERROR: File '$tmp' doesn't exist" | ||
| 23 | # exit 1 | ||
| 24 | #fi | ||
| 25 | |||
| 26 | files+=("$tmp") | ||
| 27 | done | ||
| 28 | |||
| 29 | rm -f "${files[1]}" | ||
| 30 | ./imgsynth2 -i "$input" | ||
| 31 | ret=$? | ||
| 32 | if [ $ret -ne 0 ] | ||
| 33 | then | ||
| 34 | echo " ERROR: Script didn't exit properly" | ||
| 35 | exit 1 | ||
| 36 | fi | ||
| 37 | |||
| 38 | md5_1=$(md5sum < "${files[1]}") | ||
| 39 | md5_2=$(md5sum < "${files[2]}") | ||
| 40 | if [ "$md5_1" != "$md5_2" ] | ||
| 41 | then | ||
| 42 | echo " ERROR: ${files[1]} and ${files[2]} differ" | ||
| 43 | exit 1 | ||
| 44 | else | ||
| 45 | echo " Test successful" | ||
| 46 | fi | ||
| 47 | done | ||
| 48 | |||
diff --git a/ue2/imgsynth2/test/yellow_man1_rgb24_in.bmp b/ue2/imgsynth2/test/yellow_man1_rgb24_in.bmp new file mode 100644 index 0000000..49372b2 --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man1_rgb24_in.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man1_rgb24_out.bmp b/ue2/imgsynth2/test/yellow_man1_rgb24_out.bmp new file mode 100644 index 0000000..340eab9 --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man1_rgb24_out.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man1_rgb24_ref.bmp b/ue2/imgsynth2/test/yellow_man1_rgb24_ref.bmp new file mode 100644 index 0000000..340eab9 --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man1_rgb24_ref.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man1_rgb555_in.bmp b/ue2/imgsynth2/test/yellow_man1_rgb555_in.bmp new file mode 100644 index 0000000..3824922 --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man1_rgb555_in.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man1_rgb555_out.bmp b/ue2/imgsynth2/test/yellow_man1_rgb555_out.bmp new file mode 100644 index 0000000..1c35ab5 --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man1_rgb555_out.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man1_rgb555_ref.bmp b/ue2/imgsynth2/test/yellow_man1_rgb555_ref.bmp new file mode 100644 index 0000000..1c35ab5 --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man1_rgb555_ref.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man2_rgb24_in.bmp b/ue2/imgsynth2/test/yellow_man2_rgb24_in.bmp new file mode 100644 index 0000000..39193a4 --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man2_rgb24_in.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man2_rgb24_out.bmp b/ue2/imgsynth2/test/yellow_man2_rgb24_out.bmp new file mode 100644 index 0000000..c859cda --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man2_rgb24_out.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man2_rgb24_ref.bmp b/ue2/imgsynth2/test/yellow_man2_rgb24_ref.bmp new file mode 100644 index 0000000..2ef73e5 --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man2_rgb24_ref.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man2_rgb555_in.bmp b/ue2/imgsynth2/test/yellow_man2_rgb555_in.bmp new file mode 100644 index 0000000..812311d --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man2_rgb555_in.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man2_rgb555_out.bmp b/ue2/imgsynth2/test/yellow_man2_rgb555_out.bmp new file mode 100644 index 0000000..60588e3 --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man2_rgb555_out.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/test/yellow_man2_rgb555_ref.bmp b/ue2/imgsynth2/test/yellow_man2_rgb555_ref.bmp new file mode 100644 index 0000000..1b63825 --- /dev/null +++ b/ue2/imgsynth2/test/yellow_man2_rgb555_ref.bmp | |||
| Binary files differ | |||
diff --git a/ue2/imgsynth2/x1 b/ue2/imgsynth2/x1 new file mode 100644 index 0000000..5593645 --- /dev/null +++ b/ue2/imgsynth2/x1 | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | 00000000 42 4d 8a 01 00 00 00 00 00 00 36 00 00 00 28 00 |BM........6...(.| | ||
| 2 | 00000010 00 00 09 00 00 00 11 00 00 00 01 00 10 00 00 00 |................| | ||
| 3 | 00000020 00 00 54 01 00 00 13 0b 00 00 13 0b 00 00 00 00 |..T.............| | ||
| 4 | 00000030 00 00 00 00 00 00 00 00 00 00 1f 00 1f 00 1f 00 |................| | ||
| 5 | 00000040 1f 00 1f 00 1f 00 1f 00 00 00 00 00 00 00 1f 00 |................| | ||
| 6 | 00000050 1f 00 1f 00 1f 00 1f 00 1f 00 1f 00 00 00 00 00 |................| | ||
| 7 | 00000060 00 00 1f 00 1f 00 1f 00 1f 00 1f 00 1f 00 1f 00 |................| | ||
| 8 | 00000070 00 00 00 00 00 00 1f 00 1f 00 1f 00 1f 00 1f 00 |................| | ||
| 9 | 00000080 1f 00 1f 00 00 00 00 00 00 00 00 00 a0 7f 00 00 |................| | ||
| 10 | 00000090 a0 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 11 | 000000a0 a0 7f 00 00 a0 7f 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 12 | 000000b0 a0 7f 00 00 a0 7f a0 7f a0 7f 00 00 a0 7f 00 00 |................| | ||
| 13 | 000000c0 00 00 00 00 a0 7f 00 00 a0 7f a0 7f a0 7f 00 00 |................| | ||
| 14 | 000000d0 a0 7f 00 00 00 00 00 00 a0 7f 00 00 a0 7f a0 7f |................| | ||
| 15 | 000000e0 a0 7f 00 00 a0 7f 00 00 00 00 e0 03 e0 03 e0 03 |................| | ||
| 16 | 000000f0 e0 03 e0 03 e0 03 00 00 a0 7f 00 00 00 00 e0 03 |................| | ||
| 17 | 00000100 e0 03 e0 03 e0 03 e0 03 e0 03 a0 7f 00 00 00 00 |................| | ||
| 18 | 00000110 00 00 e0 03 e0 03 e0 03 e0 03 e0 03 e0 03 00 00 |................| | ||
| 19 | 00000120 00 00 00 00 00 00 e0 03 e0 03 e0 03 e0 03 e0 03 |................| | ||
| 20 | 00000130 e0 03 00 00 00 00 00 00 00 00 e0 03 e0 03 e0 03 |................| | ||
| 21 | 00000140 e0 03 e0 03 e0 03 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 22 | 00000150 00 00 00 00 a0 7f a0 7f a0 7f 00 00 00 00 00 00 |................| | ||
| 23 | 00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 24 | * | ||
| 25 | 00000180 00 00 00 00 00 00 00 00 00 00 |..........| | ||
| 26 | 0000018a | ||
diff --git a/ue2/imgsynth2/x2 b/ue2/imgsynth2/x2 new file mode 100644 index 0000000..26cbf82 --- /dev/null +++ b/ue2/imgsynth2/x2 | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | 00000000 42 4d 8a 01 00 00 00 00 00 00 36 00 00 00 28 00 |BM........6...(.| | ||
| 2 | 00000010 00 00 09 00 00 00 11 00 00 00 01 00 10 00 00 00 |................| | ||
| 3 | 00000020 00 00 54 01 00 00 13 0b 00 00 13 0b 00 00 00 00 |..T.............| | ||
| 4 | 00000030 00 00 00 00 00 00 00 00 00 00 1f 00 1f 00 1f 00 |................| | ||
| 5 | 00000040 1f 00 1f 00 1f 00 1f 00 00 00 00 00 00 00 1f 00 |................| | ||
| 6 | 00000050 1f 00 1f 00 1f 00 1f 00 1f 00 1f 00 00 00 00 00 |................| | ||
| 7 | 00000060 00 00 1f 00 1f 7f 1f 00 1f 7f 1f 00 1f 00 1f 00 |................| | ||
| 8 | 00000070 00 00 00 00 00 00 1f 00 1f 7f 1f 00 1f 7f 1f 00 |................| | ||
| 9 | 00000080 1f 00 1f 00 00 00 00 00 00 00 00 00 a0 7f 00 00 |................| | ||
| 10 | 00000090 a0 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 11 | 000000a0 a0 7f 00 00 a0 7f 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 12 | 000000b0 a0 7f 00 00 a0 7f a0 7f a0 7f 00 00 a0 7f 00 00 |................| | ||
| 13 | 000000c0 00 00 00 00 a0 7f 00 00 a0 7f a0 7f a0 7f 00 00 |................| | ||
| 14 | 000000d0 a0 7f 00 00 00 00 00 00 a0 7f 00 00 a0 7f a0 7f |................| | ||
| 15 | 000000e0 a0 7f 00 00 a0 7f 00 00 00 00 00 00 00 7f 00 00 |................| | ||
| 16 | 000000f0 00 7f 00 7f 00 7f 00 00 a0 7f 00 00 00 00 00 00 |................| | ||
| 17 | 00000100 00 00 00 7f 00 7f 00 7f 00 7f a0 7f 00 00 00 00 |................| | ||
| 18 | 00000110 00 00 00 00 00 00 00 00 00 00 00 7f 00 00 00 00 |................| | ||
| 19 | 00000120 00 00 00 00 00 00 00 00 00 00 00 00 00 7f 00 7f |................| | ||
| 20 | 00000130 00 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 21 | 00000140 00 7f 00 7f 00 7f 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 22 | 00000150 00 00 00 00 a0 7f a0 7f a0 7f 00 00 00 00 00 00 |................| | ||
| 23 | 00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| | ||
| 24 | * | ||
| 25 | 00000180 00 00 00 00 00 00 00 00 00 00 |..........| | ||
| 26 | 0000018a | ||
diff --git a/ue2/protokoll/Makefile b/ue2/protokoll/Makefile new file mode 100644 index 0000000..94c8aa4 --- /dev/null +++ b/ue2/protokoll/Makefile | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | # Makefile for protokoll | ||
| 2 | # Author: Guenther Neuwirth (0626638), Manuel Mausz (0728348) | ||
| 3 | # Created: 26.04.2009 | ||
| 4 | |||
| 5 | TEXFILE= protokoll.tex | ||
| 6 | PDFFILE= $(shell echo $(TEXFILE) | sed -e 's/\.tex$$/\.pdf/') | ||
| 7 | PDFLATEX= pdflatex | ||
| 8 | TMPDIR= tmp | ||
| 9 | |||
| 10 | all: tex | ||
| 11 | |||
| 12 | tex: | ||
| 13 | @echo $(PDFFILE)" lala" | ||
| 14 | @mkdir -p $(TMPDIR) | ||
| 15 | @$(PDFLATEX) -interaction=nonstopmode -output-directory=$(TMPDIR) $(TEXFILE) | ||
| 16 | @mv $(TMPDIR)/$(PDFFILE) ../ | ||
| 17 | @rm -rf $(TMPDIR) | ||
| 18 | |||
| 19 | # vim600: noet sw=8 ts=8 | ||
diff --git a/ue2/protokoll/fancyheadings.sty b/ue2/protokoll/fancyheadings.sty new file mode 100644 index 0000000..c1e706e --- /dev/null +++ b/ue2/protokoll/fancyheadings.sty | |||
| @@ -0,0 +1,166 @@ | |||
| 1 | % fancyheadings.sty version 1.94 | ||
| 2 | % Fancy headers and footers. | ||
| 3 | % Piet van Oostrum, Dept of Computer Science, University of Utrecht | ||
| 4 | % Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands | ||
| 5 | % Telephone: +31 30 2531806. Email: piet@cs.ruu.nl | ||
| 6 | % Sep 16, 1994 | ||
| 7 | % version 1.4: Correction for use with \reversemargin | ||
| 8 | % Sep 29, 1994: | ||
| 9 | % version 1.5: Added the \iftopfloat, \ifbotfloat and \iffloatpage commands | ||
| 10 | % Oct 4, 1994: | ||
| 11 | % version 1.6: Reset single spacing in headers/footers for use with | ||
| 12 | % setspace.sty or doublespace.sty | ||
| 13 | % Oct 4, 1994: | ||
| 14 | % version 1.7: changed \let\@mkboth\markboth to | ||
| 15 | % \def\@mkboth{\protect\markboth} to make it more robust | ||
| 16 | % Dec 5, 1994: | ||
| 17 | % version 1.8: corrections for amsbook/amsart: define \@chapapp and (more | ||
| 18 | % importantly) use the \chapter/sectionmark definitions from ps@headings if | ||
| 19 | % they exist (which should be true for all standard classes). | ||
| 20 | % May 31, 1995: | ||
| 21 | % version 1.9: The proposed \renewcommand{\headrulewidth}{\iffloatpage... | ||
| 22 | % construction in the doc did not work properly with the fancyplain style. | ||
| 23 | % June 1, 1995: | ||
| 24 | % version 1.91: The definition of \@mkboth wasn't restored on subsequent | ||
| 25 | % \pagestyle{fancy}'s. | ||
| 26 | % June 1, 1995: | ||
| 27 | % version 1.92: The sequence \pagestyle{fancyplain} \pagestyle{plain} | ||
| 28 | % \pagestyle{fancy} would erroneously select the plain version. | ||
| 29 | % June 1, 1995: | ||
| 30 | % version 1.93: \fancypagestyle command added. | ||
| 31 | % Dec 11, 1995: | ||
| 32 | % version 1.94: suggested by Conrad Hughes <chughes@maths.tcd.ie> | ||
| 33 | % CJCH, Dec 11, 1995: added \footruleskip to allow control over footrule | ||
| 34 | % position (old hardcoded value of .3\normalbaselineskip is far too high | ||
| 35 | % when used with very small footer fonts). | ||
| 36 | % Jan 31, 1996: | ||
| 37 | % version 1.95: call \@normalsize in the reset code if that is defined, | ||
| 38 | % otherwise \normalsize. | ||
| 39 | % this is to solve a problem with ucthesis.cls, as this doesn't | ||
| 40 | % define \@currsize. Unfortunately for latex209 calling \normalsize doesn't | ||
| 41 | % work as this is optimized to do very little, so there \@normalsize should | ||
| 42 | % be called. Hopefully this code works for all versions of LaTeX known to | ||
| 43 | % mankind. | ||
| 44 | |||
| 45 | \let\fancy@def\gdef | ||
| 46 | \def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}} | ||
| 47 | \def\@xlhead[#1]#2{\fancy@def\@elhead{#1}\fancy@def\@olhead{#2}} | ||
| 48 | \def\@ylhead#1{\fancy@def\@elhead{#1}\fancy@def\@olhead{#1}} | ||
| 49 | |||
| 50 | \def\chead{\@ifnextchar[{\@xchead}{\@ychead}} | ||
| 51 | \def\@xchead[#1]#2{\fancy@def\@echead{#1}\fancy@def\@ochead{#2}} | ||
| 52 | \def\@ychead#1{\fancy@def\@echead{#1}\fancy@def\@ochead{#1}} | ||
| 53 | |||
| 54 | \def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}} | ||
| 55 | \def\@xrhead[#1]#2{\fancy@def\@erhead{#1}\fancy@def\@orhead{#2}} | ||
| 56 | \def\@yrhead#1{\fancy@def\@erhead{#1}\fancy@def\@orhead{#1}} | ||
| 57 | |||
| 58 | \def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}} | ||
| 59 | \def\@xlfoot[#1]#2{\fancy@def\@elfoot{#1}\fancy@def\@olfoot{#2}} | ||
| 60 | \def\@ylfoot#1{\fancy@def\@elfoot{#1}\fancy@def\@olfoot{#1}} | ||
| 61 | |||
| 62 | \def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}} | ||
| 63 | \def\@xcfoot[#1]#2{\fancy@def\@ecfoot{#1}\fancy@def\@ocfoot{#2}} | ||
| 64 | \def\@ycfoot#1{\fancy@def\@ecfoot{#1}\fancy@def\@ocfoot{#1}} | ||
| 65 | |||
| 66 | \def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}} | ||
| 67 | \def\@xrfoot[#1]#2{\fancy@def\@erfoot{#1}\fancy@def\@orfoot{#2}} | ||
| 68 | \def\@yrfoot#1{\fancy@def\@erfoot{#1}\fancy@def\@orfoot{#1}} | ||
| 69 | |||
| 70 | \newdimen\headrulewidth | ||
| 71 | \newdimen\footrulewidth | ||
| 72 | \newdimen\plainheadrulewidth | ||
| 73 | \newdimen\plainfootrulewidth | ||
| 74 | \newdimen\headwidth | ||
| 75 | \newdimen\footruleskip | ||
| 76 | \newif\if@fancyplain \@fancyplainfalse | ||
| 77 | \def\fancyplain#1#2{\if@fancyplain#1\else#2\fi} | ||
| 78 | |||
| 79 | % Command to reset various things in the headers: | ||
| 80 | % a.o. single spacing (taken from setspace.sty) | ||
| 81 | % and the catcode of ^^M (so that epsf files in the header work if a | ||
| 82 | % verbatim crosses a page boundary) | ||
| 83 | \def\fancy@reset{\restorecr | ||
| 84 | \def\baselinestretch{1}% | ||
| 85 | \ifx\undefined\@newbaseline% NFSS not present; 2.09 or 2e | ||
| 86 | \ifx\@normalsize\undefined \normalsize % for ucthesis.cls | ||
| 87 | \else \@normalsize \fi | ||
| 88 | \else% NFSS (2.09) present | ||
| 89 | \@newbaseline% | ||
| 90 | \fi} | ||
| 91 | |||
| 92 | % Initialization of the head and foot text. | ||
| 93 | |||
| 94 | \headrulewidth 0.4pt | ||
| 95 | \footrulewidth\z@ | ||
| 96 | \plainheadrulewidth\z@ | ||
| 97 | \plainfootrulewidth\z@ | ||
| 98 | \footruleskip .3\normalbaselineskip | ||
| 99 | |||
| 100 | \lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}} | ||
| 101 | % i.e. empty on ``plain'' pages, \rightmark on even, \leftmark on odd pages | ||
| 102 | \chead{} | ||
| 103 | \rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}} | ||
| 104 | % i.e. empty on ``plain'' pages, \leftmark on even, \rightmark on odd pages | ||
| 105 | \lfoot{} | ||
| 106 | \cfoot{\rm\thepage} % page number | ||
| 107 | \rfoot{} | ||
| 108 | |||
| 109 | % Put together a header or footer given the left, center and | ||
| 110 | % right text, fillers at left and right and a rule. | ||
| 111 | % The \lap commands put the text into an hbox of zero size, | ||
| 112 | % so overlapping text does not generate an errormessage. | ||
| 113 | |||
| 114 | \def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\hbox | ||
| 115 | {\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill | ||
| 116 | \parbox[b]{\headwidth}{\centering#3\strut}\hfill | ||
| 117 | \llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5} | ||
| 118 | |||
| 119 | |||
| 120 | \def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\fancy@reset\vbox{\footrule | ||
| 121 | \hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill | ||
| 122 | \parbox[t]{\headwidth}{\centering#3\strut}\hfill | ||
| 123 | \llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5} | ||
| 124 | |||
| 125 | \def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi | ||
| 126 | \hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}} | ||
| 127 | |||
| 128 | \def\footrule{{\if@fancyplain\let\footrulewidth\plainfootrulewidth\fi | ||
| 129 | \vskip-\footruleskip\vskip-\footrulewidth | ||
| 130 | \hrule\@width\headwidth\@height\footrulewidth\vskip\footruleskip}} | ||
| 131 | |||
| 132 | \def\ps@fancy{% | ||
| 133 | \@ifundefined{@chapapp}{\let\@chapapp\chaptername}{}%for amsbook | ||
| 134 | \@ifundefined{chapter}{\def\sectionmark##1{\markboth | ||
| 135 | {\uppercase{\ifnum \c@secnumdepth>\z@ | ||
| 136 | \thesection\hskip 1em\relax \fi ##1}}{}}% | ||
| 137 | \def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne | ||
| 138 | \thesubsection\hskip 1em\relax \fi ##1}}}% | ||
| 139 | {\def\chaptermark##1{\markboth {\uppercase{\ifnum \c@secnumdepth>\m@ne | ||
| 140 | \@chapapp\ \thechapter. \ \fi ##1}}{}} | ||
| 141 | \def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@ | ||
| 142 | \thesection. \ \fi ##1}}}}% | ||
| 143 | \csname ps@headings\endcsname % use \ps@headings defaults if they exist | ||
| 144 | \ps@@fancy | ||
| 145 | \gdef\ps@fancy{\@fancyplainfalse\ps@@fancy}% | ||
| 146 | \headwidth\textwidth} | ||
| 147 | \def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy} | ||
| 148 | \def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy} | ||
| 149 | \def\ps@@fancy{% | ||
| 150 | \def\@mkboth{\protect\markboth}% | ||
| 151 | \def\@oddhead{\@fancyhead\@lodd\@olhead\@ochead\@orhead\@rodd}% | ||
| 152 | \def\@oddfoot{\@fancyfoot\@lodd\@olfoot\@ocfoot\@orfoot\@rodd}% | ||
| 153 | \def\@evenhead{\@fancyhead\@rodd\@elhead\@echead\@erhead\@lodd}% | ||
| 154 | \def\@evenfoot{\@fancyfoot\@rodd\@elfoot\@ecfoot\@erfoot\@lodd}% | ||
| 155 | } | ||
| 156 | \def\@lodd{\if@reversemargin\hss\else\relax\fi} | ||
| 157 | \def\@rodd{\if@reversemargin\relax\else\hss\fi} | ||
| 158 | |||
| 159 | \let\latex@makecol\@makecol | ||
| 160 | \def\@makecol{\let\topfloat\@toplist\let\botfloat\@botlist\latex@makecol} | ||
| 161 | \def\iftopfloat#1#2{\ifx\topfloat\empty #2\else #1\fi} | ||
| 162 | \def\ifbotfloat#1#2{\ifx\botfloat\empty #2\else #1\fi} | ||
| 163 | \def\iffloatpage#1#2{\if@fcolmade #1\else #2\fi} | ||
| 164 | |||
| 165 | \newcommand{\fancypagestyle}[2]{% | ||
| 166 | \@namedef{ps@#1}{\let\fancy@def\def#2\relax\ps@fancy}} | ||
diff --git a/ue2/protokoll/imgsynth.vpp b/ue2/protokoll/imgsynth.vpp new file mode 100644 index 0000000..b94b9e4 --- /dev/null +++ b/ue2/protokoll/imgsynth.vpp | |||
| Binary files differ | |||
diff --git a/ue2/protokoll/oop_prot.sty b/ue2/protokoll/oop_prot.sty new file mode 100644 index 0000000..26a66e6 --- /dev/null +++ b/ue2/protokoll/oop_prot.sty | |||
| @@ -0,0 +1,222 @@ | |||
| 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 2 | % | ||
| 3 | % OOP_prot.sty | ||
| 4 | % | ||
| 5 | % | ||
| 6 | % 13.03.07 | ||
| 7 | % | ||
| 8 | % Institut f"ur Technische Informatik (182/1) | ||
| 9 | % Real Time Systems Group | ||
| 10 | % Technische Universit"at Wien | ||
| 11 | % 1040 Treitlstr. 3, 3. Stk. | ||
| 12 | % (www.vmars.tuwien.ac.at) | ||
| 13 | % | ||
| 14 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 15 | |||
| 16 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 17 | % | ||
| 18 | % packages | ||
| 19 | % | ||
| 20 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 21 | |||
| 22 | \usepackage{fancyheadings} | ||
| 23 | \usepackage{german} | ||
| 24 | \usepackage{graphicx} | ||
| 25 | \usepackage{listings} | ||
| 26 | \usepackage[T1]{fontenc} | ||
| 27 | %\usepackage[latin1]{inputenc} | ||
| 28 | \usepackage{times} | ||
| 29 | \usepackage{epsfig} | ||
| 30 | |||
| 31 | %in order to get the source code in a really good shape | ||
| 32 | \lstset{%backgroundcolor=\color[gray]{.9}, | ||
| 33 | extendedchars=true, | ||
| 34 | basicstyle=\scriptsize, | ||
| 35 | % frame={tb}, | ||
| 36 | % morekeywords={outp,inp,bit_is_clear,bit_is_set,sei,cli,sbi,cbi,INTERRUPT,SIGNAL,uint8,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t,memptr}, | ||
| 37 | language=C++, | ||
| 38 | breaklines=true, | ||
| 39 | % lineskip=2pt, | ||
| 40 | % numbers=left, | ||
| 41 | % stepnumber=5, | ||
| 42 | } | ||
| 43 | |||
| 44 | |||
| 45 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 46 | % | ||
| 47 | % user-defined commands | ||
| 48 | % | ||
| 49 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 50 | |||
| 51 | % typeset pin numbers | ||
| 52 | \newcommand{\pin}[1]{\emph{\textbf{#1}}\ } | ||
| 53 | %\renewcommand{\chaptername}{Aufgabe} | ||
| 54 | |||
| 55 | \newcommand{\matrnr}{Matr. Nr.} | ||
| 56 | |||
| 57 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 58 | % | ||
| 59 | % some size definitions and counter settings | ||
| 60 | % | ||
| 61 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 62 | |||
| 63 | \oddsidemargin 1cm | ||
| 64 | \evensidemargin 1cm | ||
| 65 | \topmargin 0pt | ||
| 66 | \headsep 50pt | ||
| 67 | \textheight 21.5cm | ||
| 68 | \textwidth 14.1cm | ||
| 69 | |||
| 70 | \renewcommand{\floatpagefraction}{0.9} | ||
| 71 | \renewcommand{\textfraction}{0.05} | ||
| 72 | \renewcommand{\topfraction}{1.0} | ||
| 73 | \renewcommand{\bottomfraction}{1.0} | ||
| 74 | |||
| 75 | \setcounter{totalnumber}{3} | ||
| 76 | \setcounter{bottomnumber}{3} | ||
| 77 | \setcounter{topnumber}{3} | ||
| 78 | |||
| 79 | \setlength{\unitlength}{1mm} | ||
| 80 | \setlength{\parindent}{6mm} | ||
| 81 | \setlength{\parskip}{12pt plus2pt minus2pt} | ||
| 82 | |||
| 83 | \sloppy | ||
| 84 | |||
| 85 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 86 | % | ||
| 87 | % define variables used on titlepage | ||
| 88 | % | ||
| 89 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 90 | |||
| 91 | % heading | ||
| 92 | \def\headline#1{\gdef\@headline{#1}} | ||
| 93 | % authors | ||
| 94 | \def\vornamea#1{\gdef\@vornamea{#1}} | ||
| 95 | \def\nachnamea#1{\gdef\@nachnamea{#1}} | ||
| 96 | \def\matrikela#1{\gdef\@matrikela{#1}} | ||
| 97 | \def\emaila#1{\gdef\@emaila{#1}} | ||
| 98 | |||
| 99 | \def\vornameb#1{\gdef\@vornameb{#1}} | ||
| 100 | \def\nachnameb#1{\gdef\@nachnameb{#1}} | ||
| 101 | \def\matrikelb#1{\gdef\@matrikelb{#1}} | ||
| 102 | \def\emailb#1{\gdef\@emailb{#1}} | ||
| 103 | |||
| 104 | \def\vornamec#1{\gdef\@vornamec{#1}} | ||
| 105 | \def\nachnamec#1{\gdef\@nachnamec{#1}} | ||
| 106 | \def\matrikelc#1{\gdef\@matrikelc{#1}} | ||
| 107 | \def\emailc#1{\gdef\@emailc{#1}} | ||
| 108 | |||
| 109 | \def\vornamed#1{\gdef\@vornamed{#1}} | ||
| 110 | \def\nachnamed#1{\gdef\@nachnamed{#1}} | ||
| 111 | \def\matrikeld#1{\gdef\@matrikeld{#1}} | ||
| 112 | \def\emaild#1{\gdef\@emaild{#1}} | ||
| 113 | |||
| 114 | % address of department | ||
| 115 | \def\address#1{\gdef\@address{#1}} | ||
| 116 | % LVA-Nr. | ||
| 117 | \def\lvanr#1{\gdef\@aufgabe{#1}} | ||
| 118 | |||
| 119 | \setcounter{footnote}{0} | ||
| 120 | |||
| 121 | % initialize variables | ||
| 122 | \gdef\@headline{Object-Oriented Programming VL} | ||
| 123 | %\gdef\@title{Laborprotokoll} | ||
| 124 | |||
| 125 | \gdef\@vornamea{VStud1} | ||
| 126 | \gdef\@nachnamea{NStud1} | ||
| 127 | \gdef\@matrikela{000000} | ||
| 128 | \gdef\@emaila{e000000@student.tuwien.ac.at} | ||
| 129 | |||
| 130 | \gdef\@vornameb{VStud2} | ||
| 131 | \gdef\@nachnameb{NStud2} | ||
| 132 | \gdef\@matrikelb{000000} | ||
| 133 | \gdef\@emailb{e000000@student.tuwien.ac.at} | ||
| 134 | |||
| 135 | \gdef\@vornamec{VStud3} | ||
| 136 | \gdef\@nachnamec{NStud3} | ||
| 137 | \gdef\@matrikelc{0000000} | ||
| 138 | \gdef\@emailc{e000000@student.tuwien.ac.at} | ||
| 139 | |||
| 140 | \gdef\@aufgabe{zu Aufgabe 1} | ||
| 141 | |||
| 142 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 143 | % | ||
| 144 | % titlepage | ||
| 145 | % | ||
| 146 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 147 | |||
| 148 | \def\maketitle{ | ||
| 149 | \begin{titlepage} | ||
| 150 | |||
| 151 | % enlarge page | ||
| 152 | \setlength{\topmargin}{0pt} | ||
| 153 | \setlength{\headheight}{0pt} | ||
| 154 | \setlength{\headsep}{0pt} | ||
| 155 | \setlength{\footskip}{0pt} | ||
| 156 | |||
| 157 | \let\footnotesize\small \let\footnoterule\relax \setcounter{page}{1} | ||
| 158 | \null | ||
| 159 | \vfill | ||
| 160 | \large | ||
| 161 | \vskip -4 cm | ||
| 162 | |||
| 163 | \begin{center} | ||
| 164 | % heading | ||
| 165 | {\LARGE\bf \@headline \par} \vskip 2cm | ||
| 166 | |||
| 167 | \vskip 1cm | ||
| 168 | |||
| 169 | % title | ||
| 170 | {\LARGE\bf Laborprotokoll \par} | ||
| 171 | \vskip 0.5cm | ||
| 172 | {\Huge\bf \@title \par} | ||
| 173 | \vskip 1cm | ||
| 174 | %{\Large \bf \@aufgabe \par} | ||
| 175 | \vskip 4cm | ||
| 176 | |||
| 177 | \begin{flushright} | ||
| 178 | \@author | ||
| 179 | \vskip 1cm | ||
| 180 | Wien, am~\today{} | ||
| 181 | \end{flushright} | ||
| 182 | \end{center} \par | ||
| 183 | \vskip 1.5cm | ||
| 184 | |||
| 185 | \end{titlepage} | ||
| 186 | |||
| 187 | \setcounter{footnote}{0} | ||
| 188 | \let\thanks\relax | ||
| 189 | } % \def\maketitle | ||
| 190 | |||
| 191 | |||
| 192 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 193 | |||
| 194 | \newenvironment{Ventry}[1]% | ||
| 195 | {\begin{list}{}{\renewcommand{\makelabel}[1]{\textbf{##1:}\hfill}% | ||
| 196 | \settowidth{\labelwidth}{\textbf{#1:}}% | ||
| 197 | \setlength{\leftmargin}{\labelwidth}% | ||
| 198 | \addtolength{\leftmargin}{\labelsep}}}% | ||
| 199 | {\end{list}} | ||
| 200 | |||
| 201 | \newcommand{\tablesize}{\fontsize{8}{10}\selectfont} | ||
| 202 | |||
| 203 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 204 | % | ||
| 205 | % layout of non-title pages | ||
| 206 | % | ||
| 207 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
| 208 | |||
| 209 | \pagenumbering{roman} | ||
| 210 | \setlength{\parskip}{5pt plus2pt minus2pt} | ||
| 211 | |||
| 212 | \setlength{\parskip}{1mm} | ||
| 213 | \clearpage | ||
| 214 | \setlength{\parskip}{5pt plus2pt minus2pt} | ||
| 215 | |||
| 216 | \pagestyle{fancy} | ||
| 217 | %\renewcommand{\chaptermark}[1]{\markboth{\thechapter\ #1}{}} | ||
| 218 | \renewcommand{\sectionmark}[1]{\markboth{\thesection\ #1}{}} | ||
| 219 | \addtolength{\headheight}{2pt} | ||
| 220 | |||
| 221 | \pagenumbering{arabic} | ||
| 222 | \setcounter{page} {1} | ||
diff --git a/ue2/protokoll/protokoll.tex b/ue2/protokoll/protokoll.tex new file mode 100644 index 0000000..456a6e7 --- /dev/null +++ b/ue2/protokoll/protokoll.tex | |||
| @@ -0,0 +1,98 @@ | |||
| 1 | \documentclass[12pt,a4paper,titlepage,oneside]{article} | ||
| 2 | \usepackage[utf8]{inputenc} | ||
| 3 | \usepackage{oop_prot} | ||
| 4 | \usepackage{url} | ||
| 5 | \usepackage{pdfpages} | ||
| 6 | \usepackage{booktabs} | ||
| 7 | |||
| 8 | \title{Beispiel 2} | ||
| 9 | |||
| 10 | \author{ | ||
| 11 | Günther Neuwirth, \matrnr 0626638\\ | ||
| 12 | {\small e0626638@student.tuwien.ac.at} | ||
| 13 | Manuel Mausz, \matrnr 0728348\\ | ||
| 14 | {\small manuel-tu@mausz.at}\\ | ||
| 15 | } | ||
| 16 | |||
| 17 | \begin{document} | ||
| 18 | |||
| 19 | % create titlepage | ||
| 20 | \maketitle | ||
| 21 | |||
| 22 | \tableofcontents | ||
| 23 | \newpage | ||
| 24 | |||
| 25 | %------------------------------------------------------------------ | ||
| 26 | %------------------------------------------------------------------ | ||
| 27 | |||
| 28 | \section{Aufgabenstellung - Beispiel 2} | ||
| 29 | \includegraphics[width=\textwidth,page=1]{../angabe.pdf} | ||
| 30 | \includegraphics[width=\textwidth,page=2]{../angabe.pdf} | ||
| 31 | \includegraphics[width=\textwidth,page=3]{../angabe.pdf} | ||
| 32 | |||
| 33 | %------------------------------------------------------------------ | ||
| 34 | %------------------------------------------------------------------ | ||
| 35 | |||
| 36 | \section{Beispiel 2} | ||
| 37 | |||
| 38 | \subsection{Design}\label{Design} | ||
| 39 | |||
| 40 | Abbildung~\ref{fig:classdiagram1} zeigt das Klassendiagramm der Aufgabe. | ||
| 41 | |||
| 42 | |||
| 43 | TODO | ||
| 44 | |||
| 45 | %================================================================== | ||
| 46 | \begin{figure}[htb] | ||
| 47 | \begin{center} | ||
| 48 | \epsfxsize=0.9\textwidth\epsfbox{ClassDiagram1.png} | ||
| 49 | \end{center} | ||
| 50 | \caption{Klassendiagramm 1} | ||
| 51 | \label{fig:classdiagram1} | ||
| 52 | \end{figure} | ||
| 53 | %================================================================== | ||
| 54 | |||
| 55 | |||
| 56 | \subsection{Verwaltung der Ressourcen} | ||
| 57 | |||
| 58 | TODO | ||
| 59 | |||
| 60 | \subsection{Fehlerbehandlung} | ||
| 61 | |||
| 62 | TODO | ||
| 63 | |||
| 64 | \subsection{Implementierung} | ||
| 65 | |||
| 66 | TODO | ||
| 67 | |||
| 68 | %------------------------------------------------------------------ | ||
| 69 | %------------------------------------------------------------------ | ||
| 70 | |||
| 71 | \section{Projektverlauf} | ||
| 72 | |||
| 73 | |||
| 74 | \subsection{Probleme und Fallstricke} | ||
| 75 | |||
| 76 | TODO | ||
| 77 | |||
| 78 | \subsection{Arbeitsaufwand} | ||
| 79 | |||
| 80 | |||
| 81 | TODO | ||
| 82 | \begin{tabular}{ll} | ||
| 83 | \toprule | ||
| 84 | Entwicklungsschritt / Meilenstein & Arbeitsaufwand\\ | ||
| 85 | \midrule | ||
| 86 | TODO | ||
| 87 | \bottomrule | ||
| 88 | \end{tabular} | ||
| 89 | |||
| 90 | %------------------------------------------------------------------ | ||
| 91 | %------------------------------------------------------------------ | ||
| 92 | |||
| 93 | \section{Listings}\label{Listings} | ||
| 94 | |||
| 95 | TODO | ||
| 96 | |||
| 97 | \end{document} | ||
| 98 | |||
