Commit a9f956beff80b35afdfa382dc3d18c10b7b08ec0

Authored by Pavel Govyadinov
1 parent ebdc73fa

Fixed the cost function in order to evaluate a long list of samples and find the…

… one with the lowerst cost. Have not tested beyond the first sample: TO DO, perform the movement along the fiber using the GL commands, glTranslate, glRotate, and glScale
CMakeLists.txt deleted
1   -#Specify the version being used aswell as the language
2   -cmake_minimum_required(VERSION 2.8)
3   -
4   -#Name your project here
5   -project(Texture_Test)
6   -
7   -#set the module directory
8   -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}")
9   -#MESSAGE("CMAKE_SOURCE_DIR "${CMAKE_SOURCE_DIR})
10   -#MESSAGE("CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH})
11   -#find cuda
12   -find_package(CUDA REQUIRED)
13   -
14   -#find glut
15   -find_package(GLUT REQUIRED)
16   -
17   -#find glew
18   -find_package(GLEW REQUIRED)
19   -
20   -#find OpenGL
21   -find_package(OpenGL REQUIRED)
22   -
23   -#find Jpeg
24   -find_package(JPEG REQUIRED)
25   -
26   -#find BOOST - particularly the filesystem libraries
27   -set(Boost_USE_STATIC_LIBS ON)
28   -find_package(Boost 1.5.0 COMPONENTS filesystem system regex REQUIRED)
29   -
30   -
31   -#find the pthreads package
32   -find_package(Threads)
33   -
34   -#find the X11 package
35   -find_package(X11)
36   -
37   -#include directories
38   -include_directories(${CUDA_INCLUDE_DIRS}
39   - ${Boost_INCLUDE_DIRS}
40   - ${OPENGL_INCLUDE_DIRS}
41   - ${GLEW_INCLUDE_PATH}
42   - ${GLUT_INCLUDE_DIRS}
43   - ${JPEG_INCLUDE_DIRS}
44   - )
45   -
46   -#link_directories(${GLUT_LIBRARY_DIRS} ${OpenGL_LIBRARY_DIRS})
47   -#add_definitions(${GLUT_DEFINITIONS} ${OpenGL_DEFINITIONS})
48   -
49   -#Assign source files to the appropriate variables
50   -file(GLOB SRC_CPP "*.cpp")
51   -file(GLOB SRC_H "*.h")
52   -file(GLOB SRC_CU "*.cu")
53   -
54   -#create an executable file
55   -cuda_add_executable(Texture_Test
56   - ${SRC_H}
57   - ${SRC_CPP}
58   - ${SRC_CU})
59   -cuda_add_cublas_to_target(Texture_Test)
60   -
61   -#set the link libraries
62   -target_link_libraries(Texture_Test
63   - ${CMAKE_THREAD_LIBS_INIT}
64   - ${X11_LIBRARIES}
65   - ${Boost_LIBRARIES}
66   - ${OPENGL_gl_LIBRARY}
67   - ${OPENGL_glu_LIBRARY}
68   - ${GLEW_LIBRARY}
69   - ${GLUT_glut_LIBRARY}
70   - ${JPEG_LIBRARY}
71   - )
Doxyfile deleted
1   -# Doxyfile 1.8.9.1
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 double hash (##) is considered a comment and is placed in
7   -# front of the TAG it is preceding.
8   -#
9   -# All text after a single hash (#) is considered a comment and will be ignored.
10   -# The format is:
11   -# TAG = value [value, ...]
12   -# For lists, items can also be appended using:
13   -# TAG += value [value, ...]
14   -# Values that contain spaces should be placed between quotes (\" \").
15   -
16   -#---------------------------------------------------------------------------
17   -# Project related configuration options
18   -#---------------------------------------------------------------------------
19   -
20   -# This tag specifies the encoding used for all characters in the config file
21   -# that follow. The default is UTF-8 which is also the encoding used for all text
22   -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
23   -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
24   -# for the list of possible encodings.
25   -# The default value is: UTF-8.
26   -
27   -DOXYFILE_ENCODING = UTF-8
28   -
29   -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
30   -# double-quotes, unless you are using Doxywizard) that should identify the
31   -# project for which the documentation is generated. This name is used in the
32   -# title of most generated pages and in a few other places.
33   -# The default value is: My Project.
34   -
35   -PROJECT_NAME = "stimlab"
36   -
37   -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
38   -# could be handy for archiving the generated documentation or if some version
39   -# control system is used.
40   -
41   -PROJECT_NUMBER =
42   -
43   -# Using the PROJECT_BRIEF tag one can provide an optional one line description
44   -# for a project that appears at the top of each page and should give viewer a
45   -# quick idea about the purpose of the project. Keep the description short.
46   -
47   -PROJECT_BRIEF =
48   -
49   -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
50   -# in the documentation. The maximum height of the logo should not exceed 55
51   -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
52   -# the logo to the output directory.
53   -
54   -PROJECT_LOGO =
55   -
56   -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
57   -# into which the generated documentation will be written. If a relative path is
58   -# entered, it will be relative to the location where doxygen was started. If
59   -# left blank the current directory will be used.
60   -
61   -OUTPUT_DIRECTORY =
62   -
63   -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
64   -# directories (in 2 levels) under the output directory of each output format and
65   -# will distribute the generated files over these directories. Enabling this
66   -# option can be useful when feeding doxygen a huge amount of source files, where
67   -# putting all generated files in the same directory would otherwise causes
68   -# performance problems for the file system.
69   -# The default value is: NO.
70   -
71   -CREATE_SUBDIRS = NO
72   -
73   -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
74   -# characters to appear in the names of generated files. If set to NO, non-ASCII
75   -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
76   -# U+3044.
77   -# The default value is: NO.
78   -
79   -ALLOW_UNICODE_NAMES = NO
80   -
81   -# The OUTPUT_LANGUAGE tag is used to specify the language in which all
82   -# documentation generated by doxygen is written. Doxygen will use this
83   -# information to generate all constant output in the proper language.
84   -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
85   -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
86   -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
87   -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
88   -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
89   -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
90   -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
91   -# Ukrainian and Vietnamese.
92   -# The default value is: English.
93   -
94   -OUTPUT_LANGUAGE = English
95   -
96   -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
97   -# descriptions after the members that are listed in the file and class
98   -# documentation (similar to Javadoc). Set to NO to disable this.
99   -# The default value is: YES.
100   -
101   -BRIEF_MEMBER_DESC = YES
102   -
103   -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
104   -# description of a member or function before the detailed description
105   -#
106   -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
107   -# brief descriptions will be completely suppressed.
108   -# The default value is: YES.
109   -
110   -REPEAT_BRIEF = YES
111   -
112   -# This tag implements a quasi-intelligent brief description abbreviator that is
113   -# used to form the text in various listings. Each string in this list, if found
114   -# as the leading text of the brief description, will be stripped from the text
115   -# and the result, after processing the whole list, is used as the annotated
116   -# text. Otherwise, the brief description is used as-is. If left blank, the
117   -# following values are used ($name is automatically replaced with the name of
118   -# the entity):The $name class, The $name widget, The $name file, is, provides,
119   -# specifies, contains, represents, a, an and the.
120   -
121   -ABBREVIATE_BRIEF =
122   -
123   -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
124   -# doxygen will generate a detailed section even if there is only a brief
125   -# description.
126   -# The default value is: NO.
127   -
128   -ALWAYS_DETAILED_SEC = NO
129   -
130   -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
131   -# inherited members of a class in the documentation of that class as if those
132   -# members were ordinary class members. Constructors, destructors and assignment
133   -# operators of the base classes will not be shown.
134   -# The default value is: NO.
135   -
136   -INLINE_INHERITED_MEMB = NO
137   -
138   -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
139   -# before files name in the file list and in the header files. If set to NO the
140   -# shortest path that makes the file name unique will be used
141   -# The default value is: YES.
142   -
143   -FULL_PATH_NAMES = YES
144   -
145   -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
146   -# Stripping is only done if one of the specified strings matches the left-hand
147   -# part of the path. The tag can be used to show relative paths in the file list.
148   -# If left blank the directory from which doxygen is run is used as the path to
149   -# strip.
150   -#
151   -# Note that you can specify absolute paths here, but also relative paths, which
152   -# will be relative from the directory where doxygen is started.
153   -# This tag requires that the tag FULL_PATH_NAMES is set to YES.
154   -
155   -STRIP_FROM_PATH =
156   -
157   -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
158   -# path mentioned in the documentation of a class, which tells the reader which
159   -# header file to include in order to use a class. If left blank only the name of
160   -# the header file containing the class definition is used. Otherwise one should
161   -# specify the list of include paths that are normally passed to the compiler
162   -# using the -I flag.
163   -
164   -STRIP_FROM_INC_PATH =
165   -
166   -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
167   -# less readable) file names. This can be useful is your file systems doesn't
168   -# support long names like on DOS, Mac, or CD-ROM.
169   -# The default value is: NO.
170   -
171   -SHORT_NAMES = NO
172   -
173   -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
174   -# first line (until the first dot) of a Javadoc-style comment as the brief
175   -# description. If set to NO, the Javadoc-style will behave just like regular Qt-
176   -# style comments (thus requiring an explicit @brief command for a brief
177   -# description.)
178   -# The default value is: NO.
179   -
180   -JAVADOC_AUTOBRIEF = NO
181   -
182   -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
183   -# line (until the first dot) of a Qt-style comment as the brief description. If
184   -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
185   -# requiring an explicit \brief command for a brief description.)
186   -# The default value is: NO.
187   -
188   -QT_AUTOBRIEF = NO
189   -
190   -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
191   -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
192   -# a brief description. This used to be the default behavior. The new default is
193   -# to treat a multi-line C++ comment block as a detailed description. Set this
194   -# tag to YES if you prefer the old behavior instead.
195   -#
196   -# Note that setting this tag to YES also means that rational rose comments are
197   -# not recognized any more.
198   -# The default value is: NO.
199   -
200   -MULTILINE_CPP_IS_BRIEF = NO
201   -
202   -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
203   -# documentation from any documented member that it re-implements.
204   -# The default value is: YES.
205   -
206   -INHERIT_DOCS = YES
207   -
208   -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
209   -# page for each member. If set to NO, the documentation of a member will be part
210   -# of the file/class/namespace that contains it.
211   -# The default value is: NO.
212   -
213   -SEPARATE_MEMBER_PAGES = NO
214   -
215   -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
216   -# uses this value to replace tabs by spaces in code fragments.
217   -# Minimum value: 1, maximum value: 16, default value: 4.
218   -
219   -TAB_SIZE = 4
220   -
221   -# This tag can be used to specify a number of aliases that act as commands in
222   -# the documentation. An alias has the form:
223   -# name=value
224   -# For example adding
225   -# "sideeffect=@par Side Effects:\n"
226   -# will allow you to put the command \sideeffect (or @sideeffect) in the
227   -# documentation, which will result in a user-defined paragraph with heading
228   -# "Side Effects:". You can put \n's in the value part of an alias to insert
229   -# newlines.
230   -
231   -ALIASES =
232   -
233   -# This tag can be used to specify a number of word-keyword mappings (TCL only).
234   -# A mapping has the form "name=value". For example adding "class=itcl::class"
235   -# will allow you to use the command class in the itcl::class meaning.
236   -
237   -TCL_SUBST =
238   -
239   -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
240   -# only. Doxygen will then generate output that is more tailored for C. For
241   -# instance, some of the names that are used will be different. The list of all
242   -# members will be omitted, etc.
243   -# The default value is: NO.
244   -
245   -OPTIMIZE_OUTPUT_FOR_C = NO
246   -
247   -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
248   -# Python sources only. Doxygen will then generate output that is more tailored
249   -# for that language. For instance, namespaces will be presented as packages,
250   -# qualified scopes will look different, etc.
251   -# The default value is: NO.
252   -
253   -OPTIMIZE_OUTPUT_JAVA = NO
254   -
255   -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
256   -# sources. Doxygen will then generate output that is tailored for Fortran.
257   -# The default value is: NO.
258   -
259   -OPTIMIZE_FOR_FORTRAN = NO
260   -
261   -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
262   -# sources. Doxygen will then generate output that is tailored for VHDL.
263   -# The default value is: NO.
264   -
265   -OPTIMIZE_OUTPUT_VHDL = NO
266   -
267   -# Doxygen selects the parser to use depending on the extension of the files it
268   -# parses. With this tag you can assign which parser to use for a given
269   -# extension. Doxygen has a built-in mapping, but you can override or extend it
270   -# using this tag. The format is ext=language, where ext is a file extension, and
271   -# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
272   -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
273   -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
274   -# Fortran. In the later case the parser tries to guess whether the code is fixed
275   -# or free formatted code, this is the default for Fortran type files), VHDL. For
276   -# instance to make doxygen treat .inc files as Fortran files (default is PHP),
277   -# and .f files as C (default is Fortran), use: inc=Fortran f=C.
278   -#
279   -# Note: For files without extension you can use no_extension as a placeholder.
280   -#
281   -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
282   -# the files are not read by doxygen.
283   -
284   -EXTENSION_MAPPING =
285   -
286   -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
287   -# according to the Markdown format, which allows for more readable
288   -# documentation. See http://daringfireball.net/projects/markdown/ for details.
289   -# The output of markdown processing is further processed by doxygen, so you can
290   -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
291   -# case of backward compatibilities issues.
292   -# The default value is: YES.
293   -
294   -MARKDOWN_SUPPORT = YES
295   -
296   -# When enabled doxygen tries to link words that correspond to documented
297   -# classes, or namespaces to their corresponding documentation. Such a link can
298   -# be prevented in individual cases by putting a % sign in front of the word or
299   -# globally by setting AUTOLINK_SUPPORT to NO.
300   -# The default value is: YES.
301   -
302   -AUTOLINK_SUPPORT = YES
303   -
304   -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
305   -# to include (a tag file for) the STL sources as input, then you should set this
306   -# tag to YES in order to let doxygen match functions declarations and
307   -# definitions whose arguments contain STL classes (e.g. func(std::string);
308   -# versus func(std::string) {}). This also make the inheritance and collaboration
309   -# diagrams that involve STL classes more complete and accurate.
310   -# The default value is: NO.
311   -
312   -BUILTIN_STL_SUPPORT = NO
313   -
314   -# If you use Microsoft's C++/CLI language, you should set this option to YES to
315   -# enable parsing support.
316   -# The default value is: NO.
317   -
318   -CPP_CLI_SUPPORT = NO
319   -
320   -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
321   -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
322   -# will parse them like normal C++ but will assume all classes use public instead
323   -# of private inheritance when no explicit protection keyword is present.
324   -# The default value is: NO.
325   -
326   -SIP_SUPPORT = NO
327   -
328   -# For Microsoft's IDL there are propget and propput attributes to indicate
329   -# getter and setter methods for a property. Setting this option to YES will make
330   -# doxygen to replace the get and set methods by a property in the documentation.
331   -# This will only work if the methods are indeed getting or setting a simple
332   -# type. If this is not the case, or you want to show the methods anyway, you
333   -# should set this option to NO.
334   -# The default value is: YES.
335   -
336   -IDL_PROPERTY_SUPPORT = YES
337   -
338   -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
339   -# tag is set to YES then doxygen will reuse the documentation of the first
340   -# member in the group (if any) for the other members of the group. By default
341   -# all members of a group must be documented explicitly.
342   -# The default value is: NO.
343   -
344   -DISTRIBUTE_GROUP_DOC = NO
345   -
346   -# Set the SUBGROUPING tag to YES to allow class member groups of the same type
347   -# (for instance a group of public functions) to be put as a subgroup of that
348   -# type (e.g. under the Public Functions section). Set it to NO to prevent
349   -# subgrouping. Alternatively, this can be done per class using the
350   -# \nosubgrouping command.
351   -# The default value is: YES.
352   -
353   -SUBGROUPING = YES
354   -
355   -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
356   -# are shown inside the group in which they are included (e.g. using \ingroup)
357   -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
358   -# and RTF).
359   -#
360   -# Note that this feature does not work in combination with
361   -# SEPARATE_MEMBER_PAGES.
362   -# The default value is: NO.
363   -
364   -INLINE_GROUPED_CLASSES = NO
365   -
366   -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
367   -# with only public data fields or simple typedef fields will be shown inline in
368   -# the documentation of the scope in which they are defined (i.e. file,
369   -# namespace, or group documentation), provided this scope is documented. If set
370   -# to NO, structs, classes, and unions are shown on a separate page (for HTML and
371   -# Man pages) or section (for LaTeX and RTF).
372   -# The default value is: NO.
373   -
374   -INLINE_SIMPLE_STRUCTS = NO
375   -
376   -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
377   -# enum is documented as struct, union, or enum with the name of the typedef. So
378   -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
379   -# with name TypeT. When disabled the typedef will appear as a member of a file,
380   -# namespace, or class. And the struct will be named TypeS. This can typically be
381   -# useful for C code in case the coding convention dictates that all compound
382   -# types are typedef'ed and only the typedef is referenced, never the tag name.
383   -# The default value is: NO.
384   -
385   -TYPEDEF_HIDES_STRUCT = NO
386   -
387   -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
388   -# cache is used to resolve symbols given their name and scope. Since this can be
389   -# an expensive process and often the same symbol appears multiple times in the
390   -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
391   -# doxygen will become slower. If the cache is too large, memory is wasted. The
392   -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
393   -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
394   -# symbols. At the end of a run doxygen will report the cache usage and suggest
395   -# the optimal cache size from a speed point of view.
396   -# Minimum value: 0, maximum value: 9, default value: 0.
397   -
398   -LOOKUP_CACHE_SIZE = 0
399   -
400   -#---------------------------------------------------------------------------
401   -# Build related configuration options
402   -#---------------------------------------------------------------------------
403   -
404   -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
405   -# documentation are documented, even if no documentation was available. Private
406   -# class members and static file members will be hidden unless the
407   -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
408   -# Note: This will also disable the warnings about undocumented members that are
409   -# normally produced when WARNINGS is set to YES.
410   -# The default value is: NO.
411   -
412   -EXTRACT_ALL = NO
413   -
414   -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
415   -# be included in the documentation.
416   -# The default value is: NO.
417   -
418   -EXTRACT_PRIVATE = NO
419   -
420   -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
421   -# scope will be included in the documentation.
422   -# The default value is: NO.
423   -
424   -EXTRACT_PACKAGE = NO
425   -
426   -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
427   -# included in the documentation.
428   -# The default value is: NO.
429   -
430   -EXTRACT_STATIC = NO
431   -
432   -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
433   -# locally in source files will be included in the documentation. If set to NO,
434   -# only classes defined in header files are included. Does not have any effect
435   -# for Java sources.
436   -# The default value is: YES.
437   -
438   -EXTRACT_LOCAL_CLASSES = YES
439   -
440   -# This flag is only useful for Objective-C code. If set to YES, local methods,
441   -# which are defined in the implementation section but not in the interface are
442   -# included in the documentation. If set to NO, only methods in the interface are
443   -# included.
444   -# The default value is: NO.
445   -
446   -EXTRACT_LOCAL_METHODS = NO
447   -
448   -# If this flag is set to YES, the members of anonymous namespaces will be
449   -# extracted and appear in the documentation as a namespace called
450   -# 'anonymous_namespace{file}', where file will be replaced with the base name of
451   -# the file that contains the anonymous namespace. By default anonymous namespace
452   -# are hidden.
453   -# The default value is: NO.
454   -
455   -EXTRACT_ANON_NSPACES = NO
456   -
457   -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
458   -# undocumented members inside documented classes or files. If set to NO these
459   -# members will be included in the various overviews, but no documentation
460   -# section is generated. This option has no effect if EXTRACT_ALL is enabled.
461   -# The default value is: NO.
462   -
463   -HIDE_UNDOC_MEMBERS = NO
464   -
465   -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
466   -# undocumented classes that are normally visible in the class hierarchy. If set
467   -# to NO, these classes will be included in the various overviews. This option
468   -# has no effect if EXTRACT_ALL is enabled.
469   -# The default value is: NO.
470   -
471   -HIDE_UNDOC_CLASSES = NO
472   -
473   -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
474   -# (class|struct|union) declarations. If set to NO, these declarations will be
475   -# included in the documentation.
476   -# The default value is: NO.
477   -
478   -HIDE_FRIEND_COMPOUNDS = NO
479   -
480   -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
481   -# documentation blocks found inside the body of a function. If set to NO, these
482   -# blocks will be appended to the function's detailed documentation block.
483   -# The default value is: NO.
484   -
485   -HIDE_IN_BODY_DOCS = NO
486   -
487   -# The INTERNAL_DOCS tag determines if documentation that is typed after a
488   -# \internal command is included. If the tag is set to NO then the documentation
489   -# will be excluded. Set it to YES to include the internal documentation.
490   -# The default value is: NO.
491   -
492   -INTERNAL_DOCS = NO
493   -
494   -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
495   -# names in lower-case letters. If set to YES, upper-case letters are also
496   -# allowed. This is useful if you have classes or files whose names only differ
497   -# in case and if your file system supports case sensitive file names. Windows
498   -# and Mac users are advised to set this option to NO.
499   -# The default value is: system dependent.
500   -
501   -CASE_SENSE_NAMES = NO
502   -
503   -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
504   -# their full class and namespace scopes in the documentation. If set to YES, the
505   -# scope will be hidden.
506   -# The default value is: NO.
507   -
508   -HIDE_SCOPE_NAMES = NO
509   -
510   -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
511   -# append additional text to a page's title, such as Class Reference. If set to
512   -# YES the compound reference will be hidden.
513   -# The default value is: NO.
514   -
515   -HIDE_COMPOUND_REFERENCE= NO
516   -
517   -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
518   -# the files that are included by a file in the documentation of that file.
519   -# The default value is: YES.
520   -
521   -SHOW_INCLUDE_FILES = YES
522   -
523   -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
524   -# grouped member an include statement to the documentation, telling the reader
525   -# which file to include in order to use the member.
526   -# The default value is: NO.
527   -
528   -SHOW_GROUPED_MEMB_INC = NO
529   -
530   -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
531   -# files with double quotes in the documentation rather than with sharp brackets.
532   -# The default value is: NO.
533   -
534   -FORCE_LOCAL_INCLUDES = NO
535   -
536   -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
537   -# documentation for inline members.
538   -# The default value is: YES.
539   -
540   -INLINE_INFO = YES
541   -
542   -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
543   -# (detailed) documentation of file and class members alphabetically by member
544   -# name. If set to NO, the members will appear in declaration order.
545   -# The default value is: YES.
546   -
547   -SORT_MEMBER_DOCS = YES
548   -
549   -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
550   -# descriptions of file, namespace and class members alphabetically by member
551   -# name. If set to NO, the members will appear in declaration order. Note that
552   -# this will also influence the order of the classes in the class list.
553   -# The default value is: NO.
554   -
555   -SORT_BRIEF_DOCS = NO
556   -
557   -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
558   -# (brief and detailed) documentation of class members so that constructors and
559   -# destructors are listed first. If set to NO the constructors will appear in the
560   -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
561   -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
562   -# member documentation.
563   -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
564   -# detailed member documentation.
565   -# The default value is: NO.
566   -
567   -SORT_MEMBERS_CTORS_1ST = NO
568   -
569   -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
570   -# of group names into alphabetical order. If set to NO the group names will
571   -# appear in their defined order.
572   -# The default value is: NO.
573   -
574   -SORT_GROUP_NAMES = NO
575   -
576   -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
577   -# fully-qualified names, including namespaces. If set to NO, the class list will
578   -# be sorted only by class name, not including the namespace part.
579   -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
580   -# Note: This option applies only to the class list, not to the alphabetical
581   -# list.
582   -# The default value is: NO.
583   -
584   -SORT_BY_SCOPE_NAME = NO
585   -
586   -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
587   -# type resolution of all parameters of a function it will reject a match between
588   -# the prototype and the implementation of a member function even if there is
589   -# only one candidate or it is obvious which candidate to choose by doing a
590   -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
591   -# accept a match between prototype and implementation in such cases.
592   -# The default value is: NO.
593   -
594   -STRICT_PROTO_MATCHING = NO
595   -
596   -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
597   -# list. This list is created by putting \todo commands in the documentation.
598   -# The default value is: YES.
599   -
600   -GENERATE_TODOLIST = YES
601   -
602   -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
603   -# list. This list is created by putting \test commands in the documentation.
604   -# The default value is: YES.
605   -
606   -GENERATE_TESTLIST = YES
607   -
608   -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
609   -# list. This list is created by putting \bug commands in the documentation.
610   -# The default value is: YES.
611   -
612   -GENERATE_BUGLIST = YES
613   -
614   -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
615   -# the deprecated list. This list is created by putting \deprecated commands in
616   -# the documentation.
617   -# The default value is: YES.
618   -
619   -GENERATE_DEPRECATEDLIST= YES
620   -
621   -# The ENABLED_SECTIONS tag can be used to enable conditional documentation
622   -# sections, marked by \if <section_label> ... \endif and \cond <section_label>
623   -# ... \endcond blocks.
624   -
625   -ENABLED_SECTIONS =
626   -
627   -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
628   -# initial value of a variable or macro / define can have for it to appear in the
629   -# documentation. If the initializer consists of more lines than specified here
630   -# it will be hidden. Use a value of 0 to hide initializers completely. The
631   -# appearance of the value of individual variables and macros / defines can be
632   -# controlled using \showinitializer or \hideinitializer command in the
633   -# documentation regardless of this setting.
634   -# Minimum value: 0, maximum value: 10000, default value: 30.
635   -
636   -MAX_INITIALIZER_LINES = 30
637   -
638   -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
639   -# the bottom of the documentation of classes and structs. If set to YES, the
640   -# list will mention the files that were used to generate the documentation.
641   -# The default value is: YES.
642   -
643   -SHOW_USED_FILES = YES
644   -
645   -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
646   -# will remove the Files entry from the Quick Index and from the Folder Tree View
647   -# (if specified).
648   -# The default value is: YES.
649   -
650   -SHOW_FILES = YES
651   -
652   -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
653   -# page. This will remove the Namespaces entry from the Quick Index and from the
654   -# Folder Tree View (if specified).
655   -# The default value is: YES.
656   -
657   -SHOW_NAMESPACES = YES
658   -
659   -# The FILE_VERSION_FILTER tag can be used to specify a program or script that
660   -# doxygen should invoke to get the current version for each file (typically from
661   -# the version control system). Doxygen will invoke the program by executing (via
662   -# popen()) the command command input-file, where command is the value of the
663   -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
664   -# by doxygen. Whatever the program writes to standard output is used as the file
665   -# version. For an example see the documentation.
666   -
667   -FILE_VERSION_FILTER =
668   -
669   -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
670   -# by doxygen. The layout file controls the global structure of the generated
671   -# output files in an output format independent way. To create the layout file
672   -# that represents doxygen's defaults, run doxygen with the -l option. You can
673   -# optionally specify a file name after the option, if omitted DoxygenLayout.xml
674   -# will be used as the name of the layout file.
675   -#
676   -# Note that if you run doxygen from a directory containing a file called
677   -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
678   -# tag is left empty.
679   -
680   -LAYOUT_FILE =
681   -
682   -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
683   -# the reference definitions. This must be a list of .bib files. The .bib
684   -# extension is automatically appended if omitted. This requires the bibtex tool
685   -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
686   -# For LaTeX the style of the bibliography can be controlled using
687   -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
688   -# search path. See also \cite for info how to create references.
689   -
690   -CITE_BIB_FILES =
691   -
692   -#---------------------------------------------------------------------------
693   -# Configuration options related to warning and progress messages
694   -#---------------------------------------------------------------------------
695   -
696   -# The QUIET tag can be used to turn on/off the messages that are generated to
697   -# standard output by doxygen. If QUIET is set to YES this implies that the
698   -# messages are off.
699   -# The default value is: NO.
700   -
701   -QUIET = NO
702   -
703   -# The WARNINGS tag can be used to turn on/off the warning messages that are
704   -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
705   -# this implies that the warnings are on.
706   -#
707   -# Tip: Turn warnings on while writing the documentation.
708   -# The default value is: YES.
709   -
710   -WARNINGS = YES
711   -
712   -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
713   -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
714   -# will automatically be disabled.
715   -# The default value is: YES.
716   -
717   -WARN_IF_UNDOCUMENTED = YES
718   -
719   -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
720   -# potential errors in the documentation, such as not documenting some parameters
721   -# in a documented function, or documenting parameters that don't exist or using
722   -# markup commands wrongly.
723   -# The default value is: YES.
724   -
725   -WARN_IF_DOC_ERROR = YES
726   -
727   -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
728   -# are documented, but have no documentation for their parameters or return
729   -# value. If set to NO, doxygen will only warn about wrong or incomplete
730   -# parameter documentation, but not about the absence of documentation.
731   -# The default value is: NO.
732   -
733   -WARN_NO_PARAMDOC = NO
734   -
735   -# The WARN_FORMAT tag determines the format of the warning messages that doxygen
736   -# can produce. The string should contain the $file, $line, and $text tags, which
737   -# will be replaced by the file and line number from which the warning originated
738   -# and the warning text. Optionally the format may contain $version, which will
739   -# be replaced by the version of the file (if it could be obtained via
740   -# FILE_VERSION_FILTER)
741   -# The default value is: $file:$line: $text.
742   -
743   -WARN_FORMAT = "$file:$line: $text"
744   -
745   -# The WARN_LOGFILE tag can be used to specify a file to which warning and error
746   -# messages should be written. If left blank the output is written to standard
747   -# error (stderr).
748   -
749   -WARN_LOGFILE =
750   -
751   -#---------------------------------------------------------------------------
752   -# Configuration options related to the input files
753   -#---------------------------------------------------------------------------
754   -
755   -# The INPUT tag is used to specify the files and/or directories that contain
756   -# documented source files. You may enter file names like myfile.cpp or
757   -# directories like /usr/src/myproject. Separate the files or directories with
758   -# spaces.
759   -# Note: If this tag is empty the current directory is searched.
760   -
761   -INPUT =
762   -
763   -# This tag can be used to specify the character encoding of the source files
764   -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
765   -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
766   -# documentation (see: http://www.gnu.org/software/libiconv) for the list of
767   -# possible encodings.
768   -# The default value is: UTF-8.
769   -
770   -INPUT_ENCODING = UTF-8
771   -
772   -# If the value of the INPUT tag contains directories, you can use the
773   -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
774   -# *.h) to filter out the source-files in the directories. If left blank the
775   -# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
776   -# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
777   -# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
778   -# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
779   -# *.qsf, *.as and *.js.
780   -
781   -FILE_PATTERNS =
782   -
783   -# The RECURSIVE tag can be used to specify whether or not subdirectories should
784   -# be searched for input files as well.
785   -# The default value is: NO.
786   -
787   -RECURSIVE = YES
788   -
789   -# The EXCLUDE tag can be used to specify files and/or directories that should be
790   -# excluded from the INPUT source files. This way you can easily exclude a
791   -# subdirectory from a directory tree whose root is specified with the INPUT tag.
792   -#
793   -# Note that relative paths are relative to the directory from which doxygen is
794   -# run.
795   -
796   -EXCLUDE =
797   -
798   -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
799   -# directories that are symbolic links (a Unix file system feature) are excluded
800   -# from the input.
801   -# The default value is: NO.
802   -
803   -EXCLUDE_SYMLINKS = NO
804   -
805   -# If the value of the INPUT tag contains directories, you can use the
806   -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
807   -# certain files from those directories.
808   -#
809   -# Note that the wildcards are matched against the file with absolute path, so to
810   -# exclude all test directories for example use the pattern */test/*
811   -
812   -EXCLUDE_PATTERNS = CImg.h
813   -
814   -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
815   -# (namespaces, classes, functions, etc.) that should be excluded from the
816   -# output. The symbol name can be a fully qualified name, a word, or if the
817   -# wildcard * is used, a substring. Examples: ANamespace, AClass,
818   -# AClass::ANamespace, ANamespace::*Test
819   -#
820   -# Note that the wildcards are matched against the file with absolute path, so to
821   -# exclude all test directories use the pattern */test/*
822   -
823   -EXCLUDE_SYMBOLS =
824   -
825   -# The EXAMPLE_PATH tag can be used to specify one or more files or directories
826   -# that contain example code fragments that are included (see the \include
827   -# command).
828   -
829   -EXAMPLE_PATH =
830   -
831   -# If the value of the EXAMPLE_PATH tag contains directories, you can use the
832   -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
833   -# *.h) to filter out the source-files in the directories. If left blank all
834   -# files are included.
835   -
836   -EXAMPLE_PATTERNS =
837   -
838   -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
839   -# searched for input files to be used with the \include or \dontinclude commands
840   -# irrespective of the value of the RECURSIVE tag.
841   -# The default value is: NO.
842   -
843   -EXAMPLE_RECURSIVE = NO
844   -
845   -# The IMAGE_PATH tag can be used to specify one or more files or directories
846   -# that contain images that are to be included in the documentation (see the
847   -# \image command).
848   -
849   -IMAGE_PATH =
850   -
851   -# The INPUT_FILTER tag can be used to specify a program that doxygen should
852   -# invoke to filter for each input file. Doxygen will invoke the filter program
853   -# by executing (via popen()) the command:
854   -#
855   -# <filter> <input-file>
856   -#
857   -# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
858   -# name of an input file. Doxygen will then use the output that the filter
859   -# program writes to standard output. If FILTER_PATTERNS is specified, this tag
860   -# will be ignored.
861   -#
862   -# Note that the filter must not add or remove lines; it is applied before the
863   -# code is scanned, but not when the output code is generated. If lines are added
864   -# or removed, the anchors will not be placed correctly.
865   -
866   -INPUT_FILTER =
867   -
868   -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
869   -# basis. Doxygen will compare the file name with each pattern and apply the
870   -# filter if there is a match. The filters are a list of the form: pattern=filter
871   -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
872   -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
873   -# patterns match the file name, INPUT_FILTER is applied.
874   -
875   -FILTER_PATTERNS =
876   -
877   -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
878   -# INPUT_FILTER) will also be used to filter the input files that are used for
879   -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
880   -# The default value is: NO.
881   -
882   -FILTER_SOURCE_FILES = NO
883   -
884   -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
885   -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
886   -# it is also possible to disable source filtering for a specific pattern using
887   -# *.ext= (so without naming a filter).
888   -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
889   -
890   -FILTER_SOURCE_PATTERNS =
891   -
892   -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
893   -# is part of the input, its contents will be placed on the main page
894   -# (index.html). This can be useful if you have a project on for instance GitHub
895   -# and want to reuse the introduction page also for the doxygen output.
896   -
897   -USE_MDFILE_AS_MAINPAGE =
898   -
899   -#---------------------------------------------------------------------------
900   -# Configuration options related to source browsing
901   -#---------------------------------------------------------------------------
902   -
903   -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
904   -# generated. Documented entities will be cross-referenced with these sources.
905   -#
906   -# Note: To get rid of all source code in the generated output, make sure that
907   -# also VERBATIM_HEADERS is set to NO.
908   -# The default value is: NO.
909   -
910   -SOURCE_BROWSER = NO
911   -
912   -# Setting the INLINE_SOURCES tag to YES will include the body of functions,
913   -# classes and enums directly into the documentation.
914   -# The default value is: NO.
915   -
916   -INLINE_SOURCES = NO
917   -
918   -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
919   -# special comment blocks from generated source code fragments. Normal C, C++ and
920   -# Fortran comments will always remain visible.
921   -# The default value is: YES.
922   -
923   -STRIP_CODE_COMMENTS = YES
924   -
925   -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
926   -# function all documented functions referencing it will be listed.
927   -# The default value is: NO.
928   -
929   -REFERENCED_BY_RELATION = NO
930   -
931   -# If the REFERENCES_RELATION tag is set to YES then for each documented function
932   -# all documented entities called/used by that function will be listed.
933   -# The default value is: NO.
934   -
935   -REFERENCES_RELATION = NO
936   -
937   -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
938   -# to YES then the hyperlinks from functions in REFERENCES_RELATION and
939   -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
940   -# link to the documentation.
941   -# The default value is: YES.
942   -
943   -REFERENCES_LINK_SOURCE = YES
944   -
945   -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
946   -# source code will show a tooltip with additional information such as prototype,
947   -# brief description and links to the definition and documentation. Since this
948   -# will make the HTML file larger and loading of large files a bit slower, you
949   -# can opt to disable this feature.
950   -# The default value is: YES.
951   -# This tag requires that the tag SOURCE_BROWSER is set to YES.
952   -
953   -SOURCE_TOOLTIPS = YES
954   -
955   -# If the USE_HTAGS tag is set to YES then the references to source code will
956   -# point to the HTML generated by the htags(1) tool instead of doxygen built-in
957   -# source browser. The htags tool is part of GNU's global source tagging system
958   -# (see http://www.gnu.org/software/global/global.html). You will need version
959   -# 4.8.6 or higher.
960   -#
961   -# To use it do the following:
962   -# - Install the latest version of global
963   -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
964   -# - Make sure the INPUT points to the root of the source tree
965   -# - Run doxygen as normal
966   -#
967   -# Doxygen will invoke htags (and that will in turn invoke gtags), so these
968   -# tools must be available from the command line (i.e. in the search path).
969   -#
970   -# The result: instead of the source browser generated by doxygen, the links to
971   -# source code will now point to the output of htags.
972   -# The default value is: NO.
973   -# This tag requires that the tag SOURCE_BROWSER is set to YES.
974   -
975   -USE_HTAGS = NO
976   -
977   -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
978   -# verbatim copy of the header file for each class for which an include is
979   -# specified. Set to NO to disable this.
980   -# See also: Section \class.
981   -# The default value is: YES.
982   -
983   -VERBATIM_HEADERS = YES
984   -
985   -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
986   -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
987   -# cost of reduced performance. This can be particularly helpful with template
988   -# rich C++ code for which doxygen's built-in parser lacks the necessary type
989   -# information.
990   -# Note: The availability of this option depends on whether or not doxygen was
991   -# compiled with the --with-libclang option.
992   -# The default value is: NO.
993   -
994   -CLANG_ASSISTED_PARSING = NO
995   -
996   -# If clang assisted parsing is enabled you can provide the compiler with command
997   -# line options that you would normally use when invoking the compiler. Note that
998   -# the include paths will already be set by doxygen for the files and directories
999   -# specified with INPUT and INCLUDE_PATH.
1000   -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
1001   -
1002   -CLANG_OPTIONS =
1003   -
1004   -#---------------------------------------------------------------------------
1005   -# Configuration options related to the alphabetical class index
1006   -#---------------------------------------------------------------------------
1007   -
1008   -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
1009   -# compounds will be generated. Enable this if the project contains a lot of
1010   -# classes, structs, unions or interfaces.
1011   -# The default value is: YES.
1012   -
1013   -ALPHABETICAL_INDEX = YES
1014   -
1015   -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
1016   -# which the alphabetical index list will be split.
1017   -# Minimum value: 1, maximum value: 20, default value: 5.
1018   -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
1019   -
1020   -COLS_IN_ALPHA_INDEX = 5
1021   -
1022   -# In case all classes in a project start with a common prefix, all classes will
1023   -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
1024   -# can be used to specify a prefix (or a list of prefixes) that should be ignored
1025   -# while generating the index headers.
1026   -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
1027   -
1028   -IGNORE_PREFIX =
1029   -
1030   -#---------------------------------------------------------------------------
1031   -# Configuration options related to the HTML output
1032   -#---------------------------------------------------------------------------
1033   -
1034   -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
1035   -# The default value is: YES.
1036   -
1037   -GENERATE_HTML = YES
1038   -
1039   -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
1040   -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1041   -# it.
1042   -# The default directory is: html.
1043   -# This tag requires that the tag GENERATE_HTML is set to YES.
1044   -
1045   -HTML_OUTPUT = html
1046   -
1047   -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
1048   -# generated HTML page (for example: .htm, .php, .asp).
1049   -# The default value is: .html.
1050   -# This tag requires that the tag GENERATE_HTML is set to YES.
1051   -
1052   -HTML_FILE_EXTENSION = .html
1053   -
1054   -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
1055   -# each generated HTML page. If the tag is left blank doxygen will generate a
1056   -# standard header.
1057   -#
1058   -# To get valid HTML the header file that includes any scripts and style sheets
1059   -# that doxygen needs, which is dependent on the configuration options used (e.g.
1060   -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
1061   -# default header using
1062   -# doxygen -w html new_header.html new_footer.html new_stylesheet.css
1063   -# YourConfigFile
1064   -# and then modify the file new_header.html. See also section "Doxygen usage"
1065   -# for information on how to generate the default header that doxygen normally
1066   -# uses.
1067   -# Note: The header is subject to change so you typically have to regenerate the
1068   -# default header when upgrading to a newer version of doxygen. For a description
1069   -# of the possible markers and block names see the documentation.
1070   -# This tag requires that the tag GENERATE_HTML is set to YES.
1071   -
1072   -HTML_HEADER =
1073   -
1074   -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
1075   -# generated HTML page. If the tag is left blank doxygen will generate a standard
1076   -# footer. See HTML_HEADER for more information on how to generate a default
1077   -# footer and what special commands can be used inside the footer. See also
1078   -# section "Doxygen usage" for information on how to generate the default footer
1079   -# that doxygen normally uses.
1080   -# This tag requires that the tag GENERATE_HTML is set to YES.
1081   -
1082   -HTML_FOOTER =
1083   -
1084   -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
1085   -# sheet that is used by each HTML page. It can be used to fine-tune the look of
1086   -# the HTML output. If left blank doxygen will generate a default style sheet.
1087   -# See also section "Doxygen usage" for information on how to generate the style
1088   -# sheet that doxygen normally uses.
1089   -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
1090   -# it is more robust and this tag (HTML_STYLESHEET) will in the future become
1091   -# obsolete.
1092   -# This tag requires that the tag GENERATE_HTML is set to YES.
1093   -
1094   -HTML_STYLESHEET =
1095   -
1096   -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
1097   -# cascading style sheets that are included after the standard style sheets
1098   -# created by doxygen. Using this option one can overrule certain style aspects.
1099   -# This is preferred over using HTML_STYLESHEET since it does not replace the
1100   -# standard style sheet and is therefore more robust against future updates.
1101   -# Doxygen will copy the style sheet files to the output directory.
1102   -# Note: The order of the extra style sheet files is of importance (e.g. the last
1103   -# style sheet in the list overrules the setting of the previous ones in the
1104   -# list). For an example see the documentation.
1105   -# This tag requires that the tag GENERATE_HTML is set to YES.
1106   -
1107   -HTML_EXTRA_STYLESHEET =
1108   -
1109   -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
1110   -# other source files which should be copied to the HTML output directory. Note
1111   -# that these files will be copied to the base HTML output directory. Use the
1112   -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
1113   -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
1114   -# files will be copied as-is; there are no commands or markers available.
1115   -# This tag requires that the tag GENERATE_HTML is set to YES.
1116   -
1117   -HTML_EXTRA_FILES =
1118   -
1119   -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
1120   -# will adjust the colors in the style sheet and background images according to
1121   -# this color. Hue is specified as an angle on a colorwheel, see
1122   -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
1123   -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
1124   -# purple, and 360 is red again.
1125   -# Minimum value: 0, maximum value: 359, default value: 220.
1126   -# This tag requires that the tag GENERATE_HTML is set to YES.
1127   -
1128   -HTML_COLORSTYLE_HUE = 220
1129   -
1130   -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
1131   -# in the HTML output. For a value of 0 the output will use grayscales only. A
1132   -# value of 255 will produce the most vivid colors.
1133   -# Minimum value: 0, maximum value: 255, default value: 100.
1134   -# This tag requires that the tag GENERATE_HTML is set to YES.
1135   -
1136   -HTML_COLORSTYLE_SAT = 100
1137   -
1138   -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
1139   -# luminance component of the colors in the HTML output. Values below 100
1140   -# gradually make the output lighter, whereas values above 100 make the output
1141   -# darker. The value divided by 100 is the actual gamma applied, so 80 represents
1142   -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
1143   -# change the gamma.
1144   -# Minimum value: 40, maximum value: 240, default value: 80.
1145   -# This tag requires that the tag GENERATE_HTML is set to YES.
1146   -
1147   -HTML_COLORSTYLE_GAMMA = 80
1148   -
1149   -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
1150   -# page will contain the date and time when the page was generated. Setting this
1151   -# to NO can help when comparing the output of multiple runs.
1152   -# The default value is: YES.
1153   -# This tag requires that the tag GENERATE_HTML is set to YES.
1154   -
1155   -HTML_TIMESTAMP = YES
1156   -
1157   -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
1158   -# documentation will contain sections that can be hidden and shown after the
1159   -# page has loaded.
1160   -# The default value is: NO.
1161   -# This tag requires that the tag GENERATE_HTML is set to YES.
1162   -
1163   -HTML_DYNAMIC_SECTIONS = NO
1164   -
1165   -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
1166   -# shown in the various tree structured indices initially; the user can expand
1167   -# and collapse entries dynamically later on. Doxygen will expand the tree to
1168   -# such a level that at most the specified number of entries are visible (unless
1169   -# a fully collapsed tree already exceeds this amount). So setting the number of
1170   -# entries 1 will produce a full collapsed tree by default. 0 is a special value
1171   -# representing an infinite number of entries and will result in a full expanded
1172   -# tree by default.
1173   -# Minimum value: 0, maximum value: 9999, default value: 100.
1174   -# This tag requires that the tag GENERATE_HTML is set to YES.
1175   -
1176   -HTML_INDEX_NUM_ENTRIES = 100
1177   -
1178   -# If the GENERATE_DOCSET tag is set to YES, additional index files will be
1179   -# generated that can be used as input for Apple's Xcode 3 integrated development
1180   -# environment (see: http://developer.apple.com/tools/xcode/), introduced with
1181   -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
1182   -# Makefile in the HTML output directory. Running make will produce the docset in
1183   -# that directory and running make install will install the docset in
1184   -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
1185   -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
1186   -# for more information.
1187   -# The default value is: NO.
1188   -# This tag requires that the tag GENERATE_HTML is set to YES.
1189   -
1190   -GENERATE_DOCSET = NO
1191   -
1192   -# This tag determines the name of the docset feed. A documentation feed provides
1193   -# an umbrella under which multiple documentation sets from a single provider
1194   -# (such as a company or product suite) can be grouped.
1195   -# The default value is: Doxygen generated docs.
1196   -# This tag requires that the tag GENERATE_DOCSET is set to YES.
1197   -
1198   -DOCSET_FEEDNAME = "Doxygen generated docs"
1199   -
1200   -# This tag specifies a string that should uniquely identify the documentation
1201   -# set bundle. This should be a reverse domain-name style string, e.g.
1202   -# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
1203   -# The default value is: org.doxygen.Project.
1204   -# This tag requires that the tag GENERATE_DOCSET is set to YES.
1205   -
1206   -DOCSET_BUNDLE_ID = org.doxygen.Project
1207   -
1208   -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
1209   -# the documentation publisher. This should be a reverse domain-name style
1210   -# string, e.g. com.mycompany.MyDocSet.documentation.
1211   -# The default value is: org.doxygen.Publisher.
1212   -# This tag requires that the tag GENERATE_DOCSET is set to YES.
1213   -
1214   -DOCSET_PUBLISHER_ID = org.doxygen.Publisher
1215   -
1216   -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
1217   -# The default value is: Publisher.
1218   -# This tag requires that the tag GENERATE_DOCSET is set to YES.
1219   -
1220   -DOCSET_PUBLISHER_NAME = Publisher
1221   -
1222   -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
1223   -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
1224   -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
1225   -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
1226   -# Windows.
1227   -#
1228   -# The HTML Help Workshop contains a compiler that can convert all HTML output
1229   -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
1230   -# files are now used as the Windows 98 help format, and will replace the old
1231   -# Windows help format (.hlp) on all Windows platforms in the future. Compressed
1232   -# HTML files also contain an index, a table of contents, and you can search for
1233   -# words in the documentation. The HTML workshop also contains a viewer for
1234   -# compressed HTML files.
1235   -# The default value is: NO.
1236   -# This tag requires that the tag GENERATE_HTML is set to YES.
1237   -
1238   -GENERATE_HTMLHELP = NO
1239   -
1240   -# The CHM_FILE tag can be used to specify the file name of the resulting .chm
1241   -# file. You can add a path in front of the file if the result should not be
1242   -# written to the html output directory.
1243   -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1244   -
1245   -CHM_FILE =
1246   -
1247   -# The HHC_LOCATION tag can be used to specify the location (absolute path
1248   -# including file name) of the HTML help compiler (hhc.exe). If non-empty,
1249   -# doxygen will try to run the HTML help compiler on the generated index.hhp.
1250   -# The file has to be specified with full path.
1251   -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1252   -
1253   -HHC_LOCATION =
1254   -
1255   -# The GENERATE_CHI flag controls if a separate .chi index file is generated
1256   -# (YES) or that it should be included in the master .chm file (NO).
1257   -# The default value is: NO.
1258   -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1259   -
1260   -GENERATE_CHI = NO
1261   -
1262   -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
1263   -# and project file content.
1264   -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1265   -
1266   -CHM_INDEX_ENCODING =
1267   -
1268   -# The BINARY_TOC flag controls whether a binary table of contents is generated
1269   -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
1270   -# enables the Previous and Next buttons.
1271   -# The default value is: NO.
1272   -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1273   -
1274   -BINARY_TOC = NO
1275   -
1276   -# The TOC_EXPAND flag can be set to YES to add extra items for group members to
1277   -# the table of contents of the HTML help documentation and to the tree view.
1278   -# The default value is: NO.
1279   -# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
1280   -
1281   -TOC_EXPAND = NO
1282   -
1283   -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
1284   -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
1285   -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
1286   -# (.qch) of the generated HTML documentation.
1287   -# The default value is: NO.
1288   -# This tag requires that the tag GENERATE_HTML is set to YES.
1289   -
1290   -GENERATE_QHP = NO
1291   -
1292   -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
1293   -# the file name of the resulting .qch file. The path specified is relative to
1294   -# the HTML output folder.
1295   -# This tag requires that the tag GENERATE_QHP is set to YES.
1296   -
1297   -QCH_FILE =
1298   -
1299   -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
1300   -# Project output. For more information please see Qt Help Project / Namespace
1301   -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
1302   -# The default value is: org.doxygen.Project.
1303   -# This tag requires that the tag GENERATE_QHP is set to YES.
1304   -
1305   -QHP_NAMESPACE = org.doxygen.Project
1306   -
1307   -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
1308   -# Help Project output. For more information please see Qt Help Project / Virtual
1309   -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
1310   -# folders).
1311   -# The default value is: doc.
1312   -# This tag requires that the tag GENERATE_QHP is set to YES.
1313   -
1314   -QHP_VIRTUAL_FOLDER = doc
1315   -
1316   -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
1317   -# filter to add. For more information please see Qt Help Project / Custom
1318   -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
1319   -# filters).
1320   -# This tag requires that the tag GENERATE_QHP is set to YES.
1321   -
1322   -QHP_CUST_FILTER_NAME =
1323   -
1324   -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
1325   -# custom filter to add. For more information please see Qt Help Project / Custom
1326   -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
1327   -# filters).
1328   -# This tag requires that the tag GENERATE_QHP is set to YES.
1329   -
1330   -QHP_CUST_FILTER_ATTRS =
1331   -
1332   -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
1333   -# project's filter section matches. Qt Help Project / Filter Attributes (see:
1334   -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
1335   -# This tag requires that the tag GENERATE_QHP is set to YES.
1336   -
1337   -QHP_SECT_FILTER_ATTRS =
1338   -
1339   -# The QHG_LOCATION tag can be used to specify the location of Qt's
1340   -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
1341   -# generated .qhp file.
1342   -# This tag requires that the tag GENERATE_QHP is set to YES.
1343   -
1344   -QHG_LOCATION =
1345   -
1346   -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
1347   -# generated, together with the HTML files, they form an Eclipse help plugin. To
1348   -# install this plugin and make it available under the help contents menu in
1349   -# Eclipse, the contents of the directory containing the HTML and XML files needs
1350   -# to be copied into the plugins directory of eclipse. The name of the directory
1351   -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
1352   -# After copying Eclipse needs to be restarted before the help appears.
1353   -# The default value is: NO.
1354   -# This tag requires that the tag GENERATE_HTML is set to YES.
1355   -
1356   -GENERATE_ECLIPSEHELP = NO
1357   -
1358   -# A unique identifier for the Eclipse help plugin. When installing the plugin
1359   -# the directory name containing the HTML and XML files should also have this
1360   -# name. Each documentation set should have its own identifier.
1361   -# The default value is: org.doxygen.Project.
1362   -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
1363   -
1364   -ECLIPSE_DOC_ID = org.doxygen.Project
1365   -
1366   -# If you want full control over the layout of the generated HTML pages it might
1367   -# be necessary to disable the index and replace it with your own. The
1368   -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
1369   -# of each HTML page. A value of NO enables the index and the value YES disables
1370   -# it. Since the tabs in the index contain the same information as the navigation
1371   -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
1372   -# The default value is: NO.
1373   -# This tag requires that the tag GENERATE_HTML is set to YES.
1374   -
1375   -DISABLE_INDEX = NO
1376   -
1377   -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
1378   -# structure should be generated to display hierarchical information. If the tag
1379   -# value is set to YES, a side panel will be generated containing a tree-like
1380   -# index structure (just like the one that is generated for HTML Help). For this
1381   -# to work a browser that supports JavaScript, DHTML, CSS and frames is required
1382   -# (i.e. any modern browser). Windows users are probably better off using the
1383   -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
1384   -# further fine-tune the look of the index. As an example, the default style
1385   -# sheet generated by doxygen has an example that shows how to put an image at
1386   -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
1387   -# the same information as the tab index, you could consider setting
1388   -# DISABLE_INDEX to YES when enabling this option.
1389   -# The default value is: NO.
1390   -# This tag requires that the tag GENERATE_HTML is set to YES.
1391   -
1392   -GENERATE_TREEVIEW = NO
1393   -
1394   -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
1395   -# doxygen will group on one line in the generated HTML documentation.
1396   -#
1397   -# Note that a value of 0 will completely suppress the enum values from appearing
1398   -# in the overview section.
1399   -# Minimum value: 0, maximum value: 20, default value: 4.
1400   -# This tag requires that the tag GENERATE_HTML is set to YES.
1401   -
1402   -ENUM_VALUES_PER_LINE = 4
1403   -
1404   -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
1405   -# to set the initial width (in pixels) of the frame in which the tree is shown.
1406   -# Minimum value: 0, maximum value: 1500, default value: 250.
1407   -# This tag requires that the tag GENERATE_HTML is set to YES.
1408   -
1409   -TREEVIEW_WIDTH = 250
1410   -
1411   -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
1412   -# external symbols imported via tag files in a separate window.
1413   -# The default value is: NO.
1414   -# This tag requires that the tag GENERATE_HTML is set to YES.
1415   -
1416   -EXT_LINKS_IN_WINDOW = NO
1417   -
1418   -# Use this tag to change the font size of LaTeX formulas included as images in
1419   -# the HTML documentation. When you change the font size after a successful
1420   -# doxygen run you need to manually remove any form_*.png images from the HTML
1421   -# output directory to force them to be regenerated.
1422   -# Minimum value: 8, maximum value: 50, default value: 10.
1423   -# This tag requires that the tag GENERATE_HTML is set to YES.
1424   -
1425   -FORMULA_FONTSIZE = 10
1426   -
1427   -# Use the FORMULA_TRANPARENT tag to determine whether or not the images
1428   -# generated for formulas are transparent PNGs. Transparent PNGs are not
1429   -# supported properly for IE 6.0, but are supported on all modern browsers.
1430   -#
1431   -# Note that when changing this option you need to delete any form_*.png files in
1432   -# the HTML output directory before the changes have effect.
1433   -# The default value is: YES.
1434   -# This tag requires that the tag GENERATE_HTML is set to YES.
1435   -
1436   -FORMULA_TRANSPARENT = YES
1437   -
1438   -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
1439   -# http://www.mathjax.org) which uses client side Javascript for the rendering
1440   -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
1441   -# installed or if you want to formulas look prettier in the HTML output. When
1442   -# enabled you may also need to install MathJax separately and configure the path
1443   -# to it using the MATHJAX_RELPATH option.
1444   -# The default value is: NO.
1445   -# This tag requires that the tag GENERATE_HTML is set to YES.
1446   -
1447   -USE_MATHJAX = NO
1448   -
1449   -# When MathJax is enabled you can set the default output format to be used for
1450   -# the MathJax output. See the MathJax site (see:
1451   -# http://docs.mathjax.org/en/latest/output.html) for more details.
1452   -# Possible values are: HTML-CSS (which is slower, but has the best
1453   -# compatibility), NativeMML (i.e. MathML) and SVG.
1454   -# The default value is: HTML-CSS.
1455   -# This tag requires that the tag USE_MATHJAX is set to YES.
1456   -
1457   -MATHJAX_FORMAT = HTML-CSS
1458   -
1459   -# When MathJax is enabled you need to specify the location relative to the HTML
1460   -# output directory using the MATHJAX_RELPATH option. The destination directory
1461   -# should contain the MathJax.js script. For instance, if the mathjax directory
1462   -# is located at the same level as the HTML output directory, then
1463   -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
1464   -# Content Delivery Network so you can quickly see the result without installing
1465   -# MathJax. However, it is strongly recommended to install a local copy of
1466   -# MathJax from http://www.mathjax.org before deployment.
1467   -# The default value is: http://cdn.mathjax.org/mathjax/latest.
1468   -# This tag requires that the tag USE_MATHJAX is set to YES.
1469   -
1470   -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
1471   -
1472   -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
1473   -# extension names that should be enabled during MathJax rendering. For example
1474   -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
1475   -# This tag requires that the tag USE_MATHJAX is set to YES.
1476   -
1477   -MATHJAX_EXTENSIONS =
1478   -
1479   -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
1480   -# of code that will be used on startup of the MathJax code. See the MathJax site
1481   -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
1482   -# example see the documentation.
1483   -# This tag requires that the tag USE_MATHJAX is set to YES.
1484   -
1485   -MATHJAX_CODEFILE =
1486   -
1487   -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
1488   -# the HTML output. The underlying search engine uses javascript and DHTML and
1489   -# should work on any modern browser. Note that when using HTML help
1490   -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
1491   -# there is already a search function so this one should typically be disabled.
1492   -# For large projects the javascript based search engine can be slow, then
1493   -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
1494   -# search using the keyboard; to jump to the search box use <access key> + S
1495   -# (what the <access key> is depends on the OS and browser, but it is typically
1496   -# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
1497   -# key> to jump into the search results window, the results can be navigated
1498   -# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
1499   -# the search. The filter options can be selected when the cursor is inside the
1500   -# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
1501   -# to select a filter and <Enter> or <escape> to activate or cancel the filter
1502   -# option.
1503   -# The default value is: YES.
1504   -# This tag requires that the tag GENERATE_HTML is set to YES.
1505   -
1506   -SEARCHENGINE = YES
1507   -
1508   -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
1509   -# implemented using a web server instead of a web client using Javascript. There
1510   -# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
1511   -# setting. When disabled, doxygen will generate a PHP script for searching and
1512   -# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
1513   -# and searching needs to be provided by external tools. See the section
1514   -# "External Indexing and Searching" for details.
1515   -# The default value is: NO.
1516   -# This tag requires that the tag SEARCHENGINE is set to YES.
1517   -
1518   -SERVER_BASED_SEARCH = NO
1519   -
1520   -# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
1521   -# script for searching. Instead the search results are written to an XML file
1522   -# which needs to be processed by an external indexer. Doxygen will invoke an
1523   -# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
1524   -# search results.
1525   -#
1526   -# Doxygen ships with an example indexer (doxyindexer) and search engine
1527   -# (doxysearch.cgi) which are based on the open source search engine library
1528   -# Xapian (see: http://xapian.org/).
1529   -#
1530   -# See the section "External Indexing and Searching" for details.
1531   -# The default value is: NO.
1532   -# This tag requires that the tag SEARCHENGINE is set to YES.
1533   -
1534   -EXTERNAL_SEARCH = NO
1535   -
1536   -# The SEARCHENGINE_URL should point to a search engine hosted by a web server
1537   -# which will return the search results when EXTERNAL_SEARCH is enabled.
1538   -#
1539   -# Doxygen ships with an example indexer (doxyindexer) and search engine
1540   -# (doxysearch.cgi) which are based on the open source search engine library
1541   -# Xapian (see: http://xapian.org/). See the section "External Indexing and
1542   -# Searching" for details.
1543   -# This tag requires that the tag SEARCHENGINE is set to YES.
1544   -
1545   -SEARCHENGINE_URL =
1546   -
1547   -# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
1548   -# search data is written to a file for indexing by an external tool. With the
1549   -# SEARCHDATA_FILE tag the name of this file can be specified.
1550   -# The default file is: searchdata.xml.
1551   -# This tag requires that the tag SEARCHENGINE is set to YES.
1552   -
1553   -SEARCHDATA_FILE = searchdata.xml
1554   -
1555   -# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
1556   -# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
1557   -# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
1558   -# projects and redirect the results back to the right project.
1559   -# This tag requires that the tag SEARCHENGINE is set to YES.
1560   -
1561   -EXTERNAL_SEARCH_ID =
1562   -
1563   -# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
1564   -# projects other than the one defined by this configuration file, but that are
1565   -# all added to the same external search index. Each project needs to have a
1566   -# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
1567   -# to a relative location where the documentation can be found. The format is:
1568   -# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
1569   -# This tag requires that the tag SEARCHENGINE is set to YES.
1570   -
1571   -EXTRA_SEARCH_MAPPINGS =
1572   -
1573   -#---------------------------------------------------------------------------
1574   -# Configuration options related to the LaTeX output
1575   -#---------------------------------------------------------------------------
1576   -
1577   -# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
1578   -# The default value is: YES.
1579   -
1580   -GENERATE_LATEX = YES
1581   -
1582   -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
1583   -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1584   -# it.
1585   -# The default directory is: latex.
1586   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1587   -
1588   -LATEX_OUTPUT = latex
1589   -
1590   -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
1591   -# invoked.
1592   -#
1593   -# Note that when enabling USE_PDFLATEX this option is only used for generating
1594   -# bitmaps for formulas in the HTML output, but not in the Makefile that is
1595   -# written to the output directory.
1596   -# The default file is: latex.
1597   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1598   -
1599   -LATEX_CMD_NAME = latex
1600   -
1601   -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
1602   -# index for LaTeX.
1603   -# The default file is: makeindex.
1604   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1605   -
1606   -MAKEINDEX_CMD_NAME = makeindex
1607   -
1608   -# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
1609   -# documents. This may be useful for small projects and may help to save some
1610   -# trees in general.
1611   -# The default value is: NO.
1612   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1613   -
1614   -COMPACT_LATEX = NO
1615   -
1616   -# The PAPER_TYPE tag can be used to set the paper type that is used by the
1617   -# printer.
1618   -# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
1619   -# 14 inches) and executive (7.25 x 10.5 inches).
1620   -# The default value is: a4.
1621   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1622   -
1623   -PAPER_TYPE = a4
1624   -
1625   -# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
1626   -# that should be included in the LaTeX output. To get the times font for
1627   -# instance you can specify
1628   -# EXTRA_PACKAGES=times
1629   -# If left blank no extra packages will be included.
1630   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1631   -
1632   -EXTRA_PACKAGES =
1633   -
1634   -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
1635   -# generated LaTeX document. The header should contain everything until the first
1636   -# chapter. If it is left blank doxygen will generate a standard header. See
1637   -# section "Doxygen usage" for information on how to let doxygen write the
1638   -# default header to a separate file.
1639   -#
1640   -# Note: Only use a user-defined header if you know what you are doing! The
1641   -# following commands have a special meaning inside the header: $title,
1642   -# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
1643   -# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
1644   -# string, for the replacement values of the other commands the user is referred
1645   -# to HTML_HEADER.
1646   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1647   -
1648   -LATEX_HEADER =
1649   -
1650   -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
1651   -# generated LaTeX document. The footer should contain everything after the last
1652   -# chapter. If it is left blank doxygen will generate a standard footer. See
1653   -# LATEX_HEADER for more information on how to generate a default footer and what
1654   -# special commands can be used inside the footer.
1655   -#
1656   -# Note: Only use a user-defined footer if you know what you are doing!
1657   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1658   -
1659   -LATEX_FOOTER =
1660   -
1661   -# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
1662   -# LaTeX style sheets that are included after the standard style sheets created
1663   -# by doxygen. Using this option one can overrule certain style aspects. Doxygen
1664   -# will copy the style sheet files to the output directory.
1665   -# Note: The order of the extra style sheet files is of importance (e.g. the last
1666   -# style sheet in the list overrules the setting of the previous ones in the
1667   -# list).
1668   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1669   -
1670   -LATEX_EXTRA_STYLESHEET =
1671   -
1672   -# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
1673   -# other source files which should be copied to the LATEX_OUTPUT output
1674   -# directory. Note that the files will be copied as-is; there are no commands or
1675   -# markers available.
1676   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1677   -
1678   -LATEX_EXTRA_FILES =
1679   -
1680   -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
1681   -# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
1682   -# contain links (just like the HTML output) instead of page references. This
1683   -# makes the output suitable for online browsing using a PDF viewer.
1684   -# The default value is: YES.
1685   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1686   -
1687   -PDF_HYPERLINKS = YES
1688   -
1689   -# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
1690   -# the PDF file directly from the LaTeX files. Set this option to YES, to get a
1691   -# higher quality PDF documentation.
1692   -# The default value is: YES.
1693   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1694   -
1695   -USE_PDFLATEX = YES
1696   -
1697   -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
1698   -# command to the generated LaTeX files. This will instruct LaTeX to keep running
1699   -# if errors occur, instead of asking the user for help. This option is also used
1700   -# when generating formulas in HTML.
1701   -# The default value is: NO.
1702   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1703   -
1704   -LATEX_BATCHMODE = NO
1705   -
1706   -# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
1707   -# index chapters (such as File Index, Compound Index, etc.) in the output.
1708   -# The default value is: NO.
1709   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1710   -
1711   -LATEX_HIDE_INDICES = NO
1712   -
1713   -# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
1714   -# code with syntax highlighting in the LaTeX output.
1715   -#
1716   -# Note that which sources are shown also depends on other settings such as
1717   -# SOURCE_BROWSER.
1718   -# The default value is: NO.
1719   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1720   -
1721   -LATEX_SOURCE_CODE = NO
1722   -
1723   -# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
1724   -# bibliography, e.g. plainnat, or ieeetr. See
1725   -# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
1726   -# The default value is: plain.
1727   -# This tag requires that the tag GENERATE_LATEX is set to YES.
1728   -
1729   -LATEX_BIB_STYLE = plain
1730   -
1731   -#---------------------------------------------------------------------------
1732   -# Configuration options related to the RTF output
1733   -#---------------------------------------------------------------------------
1734   -
1735   -# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
1736   -# RTF output is optimized for Word 97 and may not look too pretty with other RTF
1737   -# readers/editors.
1738   -# The default value is: NO.
1739   -
1740   -GENERATE_RTF = NO
1741   -
1742   -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
1743   -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1744   -# it.
1745   -# The default directory is: rtf.
1746   -# This tag requires that the tag GENERATE_RTF is set to YES.
1747   -
1748   -RTF_OUTPUT = rtf
1749   -
1750   -# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
1751   -# documents. This may be useful for small projects and may help to save some
1752   -# trees in general.
1753   -# The default value is: NO.
1754   -# This tag requires that the tag GENERATE_RTF is set to YES.
1755   -
1756   -COMPACT_RTF = NO
1757   -
1758   -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
1759   -# contain hyperlink fields. The RTF file will contain links (just like the HTML
1760   -# output) instead of page references. This makes the output suitable for online
1761   -# browsing using Word or some other Word compatible readers that support those
1762   -# fields.
1763   -#
1764   -# Note: WordPad (write) and others do not support links.
1765   -# The default value is: NO.
1766   -# This tag requires that the tag GENERATE_RTF is set to YES.
1767   -
1768   -RTF_HYPERLINKS = NO
1769   -
1770   -# Load stylesheet definitions from file. Syntax is similar to doxygen's config
1771   -# file, i.e. a series of assignments. You only have to provide replacements,
1772   -# missing definitions are set to their default value.
1773   -#
1774   -# See also section "Doxygen usage" for information on how to generate the
1775   -# default style sheet that doxygen normally uses.
1776   -# This tag requires that the tag GENERATE_RTF is set to YES.
1777   -
1778   -RTF_STYLESHEET_FILE =
1779   -
1780   -# Set optional variables used in the generation of an RTF document. Syntax is
1781   -# similar to doxygen's config file. A template extensions file can be generated
1782   -# using doxygen -e rtf extensionFile.
1783   -# This tag requires that the tag GENERATE_RTF is set to YES.
1784   -
1785   -RTF_EXTENSIONS_FILE =
1786   -
1787   -# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
1788   -# with syntax highlighting in the RTF output.
1789   -#
1790   -# Note that which sources are shown also depends on other settings such as
1791   -# SOURCE_BROWSER.
1792   -# The default value is: NO.
1793   -# This tag requires that the tag GENERATE_RTF is set to YES.
1794   -
1795   -RTF_SOURCE_CODE = NO
1796   -
1797   -#---------------------------------------------------------------------------
1798   -# Configuration options related to the man page output
1799   -#---------------------------------------------------------------------------
1800   -
1801   -# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
1802   -# classes and files.
1803   -# The default value is: NO.
1804   -
1805   -GENERATE_MAN = NO
1806   -
1807   -# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
1808   -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1809   -# it. A directory man3 will be created inside the directory specified by
1810   -# MAN_OUTPUT.
1811   -# The default directory is: man.
1812   -# This tag requires that the tag GENERATE_MAN is set to YES.
1813   -
1814   -MAN_OUTPUT = man
1815   -
1816   -# The MAN_EXTENSION tag determines the extension that is added to the generated
1817   -# man pages. In case the manual section does not start with a number, the number
1818   -# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
1819   -# optional.
1820   -# The default value is: .3.
1821   -# This tag requires that the tag GENERATE_MAN is set to YES.
1822   -
1823   -MAN_EXTENSION = .3
1824   -
1825   -# The MAN_SUBDIR tag determines the name of the directory created within
1826   -# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
1827   -# MAN_EXTENSION with the initial . removed.
1828   -# This tag requires that the tag GENERATE_MAN is set to YES.
1829   -
1830   -MAN_SUBDIR =
1831   -
1832   -# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
1833   -# will generate one additional man file for each entity documented in the real
1834   -# man page(s). These additional files only source the real man page, but without
1835   -# them the man command would be unable to find the correct page.
1836   -# The default value is: NO.
1837   -# This tag requires that the tag GENERATE_MAN is set to YES.
1838   -
1839   -MAN_LINKS = NO
1840   -
1841   -#---------------------------------------------------------------------------
1842   -# Configuration options related to the XML output
1843   -#---------------------------------------------------------------------------
1844   -
1845   -# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
1846   -# captures the structure of the code including all documentation.
1847   -# The default value is: NO.
1848   -
1849   -GENERATE_XML = NO
1850   -
1851   -# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
1852   -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
1853   -# it.
1854   -# The default directory is: xml.
1855   -# This tag requires that the tag GENERATE_XML is set to YES.
1856   -
1857   -XML_OUTPUT = xml
1858   -
1859   -# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
1860   -# listings (including syntax highlighting and cross-referencing information) to
1861   -# the XML output. Note that enabling this will significantly increase the size
1862   -# of the XML output.
1863   -# The default value is: YES.
1864   -# This tag requires that the tag GENERATE_XML is set to YES.
1865   -
1866   -XML_PROGRAMLISTING = YES
1867   -
1868   -#---------------------------------------------------------------------------
1869   -# Configuration options related to the DOCBOOK output
1870   -#---------------------------------------------------------------------------
1871   -
1872   -# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
1873   -# that can be used to generate PDF.
1874   -# The default value is: NO.
1875   -
1876   -GENERATE_DOCBOOK = NO
1877   -
1878   -# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
1879   -# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
1880   -# front of it.
1881   -# The default directory is: docbook.
1882   -# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
1883   -
1884   -DOCBOOK_OUTPUT = docbook
1885   -
1886   -# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
1887   -# program listings (including syntax highlighting and cross-referencing
1888   -# information) to the DOCBOOK output. Note that enabling this will significantly
1889   -# increase the size of the DOCBOOK output.
1890   -# The default value is: NO.
1891   -# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
1892   -
1893   -DOCBOOK_PROGRAMLISTING = NO
1894   -
1895   -#---------------------------------------------------------------------------
1896   -# Configuration options for the AutoGen Definitions output
1897   -#---------------------------------------------------------------------------
1898   -
1899   -# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
1900   -# AutoGen Definitions (see http://autogen.sf.net) file that captures the
1901   -# structure of the code including all documentation. Note that this feature is
1902   -# still experimental and incomplete at the moment.
1903   -# The default value is: NO.
1904   -
1905   -GENERATE_AUTOGEN_DEF = NO
1906   -
1907   -#---------------------------------------------------------------------------
1908   -# Configuration options related to the Perl module output
1909   -#---------------------------------------------------------------------------
1910   -
1911   -# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
1912   -# file that captures the structure of the code including all documentation.
1913   -#
1914   -# Note that this feature is still experimental and incomplete at the moment.
1915   -# The default value is: NO.
1916   -
1917   -GENERATE_PERLMOD = NO
1918   -
1919   -# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
1920   -# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
1921   -# output from the Perl module output.
1922   -# The default value is: NO.
1923   -# This tag requires that the tag GENERATE_PERLMOD is set to YES.
1924   -
1925   -PERLMOD_LATEX = NO
1926   -
1927   -# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
1928   -# formatted so it can be parsed by a human reader. This is useful if you want to
1929   -# understand what is going on. On the other hand, if this tag is set to NO, the
1930   -# size of the Perl module output will be much smaller and Perl will parse it
1931   -# just the same.
1932   -# The default value is: YES.
1933   -# This tag requires that the tag GENERATE_PERLMOD is set to YES.
1934   -
1935   -PERLMOD_PRETTY = YES
1936   -
1937   -# The names of the make variables in the generated doxyrules.make file are
1938   -# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
1939   -# so different doxyrules.make files included by the same Makefile don't
1940   -# overwrite each other's variables.
1941   -# This tag requires that the tag GENERATE_PERLMOD is set to YES.
1942   -
1943   -PERLMOD_MAKEVAR_PREFIX =
1944   -
1945   -#---------------------------------------------------------------------------
1946   -# Configuration options related to the preprocessor
1947   -#---------------------------------------------------------------------------
1948   -
1949   -# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
1950   -# C-preprocessor directives found in the sources and include files.
1951   -# The default value is: YES.
1952   -
1953   -ENABLE_PREPROCESSING = YES
1954   -
1955   -# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
1956   -# in the source code. If set to NO, only conditional compilation will be
1957   -# performed. Macro expansion can be done in a controlled way by setting
1958   -# EXPAND_ONLY_PREDEF to YES.
1959   -# The default value is: NO.
1960   -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
1961   -
1962   -MACRO_EXPANSION = NO
1963   -
1964   -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
1965   -# the macro expansion is limited to the macros specified with the PREDEFINED and
1966   -# EXPAND_AS_DEFINED tags.
1967   -# The default value is: NO.
1968   -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
1969   -
1970   -EXPAND_ONLY_PREDEF = NO
1971   -
1972   -# If the SEARCH_INCLUDES tag is set to YES, the include files in the
1973   -# INCLUDE_PATH will be searched if a #include is found.
1974   -# The default value is: YES.
1975   -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
1976   -
1977   -SEARCH_INCLUDES = YES
1978   -
1979   -# The INCLUDE_PATH tag can be used to specify one or more directories that
1980   -# contain include files that are not input files but should be processed by the
1981   -# preprocessor.
1982   -# This tag requires that the tag SEARCH_INCLUDES is set to YES.
1983   -
1984   -INCLUDE_PATH =
1985   -
1986   -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1987   -# patterns (like *.h and *.hpp) to filter out the header-files in the
1988   -# directories. If left blank, the patterns specified with FILE_PATTERNS will be
1989   -# used.
1990   -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
1991   -
1992   -INCLUDE_FILE_PATTERNS =
1993   -
1994   -# The PREDEFINED tag can be used to specify one or more macro names that are
1995   -# defined before the preprocessor is started (similar to the -D option of e.g.
1996   -# gcc). The argument of the tag is a list of macros of the form: name or
1997   -# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
1998   -# is assumed. To prevent a macro definition from being undefined via #undef or
1999   -# recursively expanded use the := operator instead of the = operator.
2000   -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
2001   -
2002   -PREDEFINED =
2003   -
2004   -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
2005   -# tag can be used to specify a list of macro names that should be expanded. The
2006   -# macro definition that is found in the sources will be used. Use the PREDEFINED
2007   -# tag if you want to use a different macro definition that overrules the
2008   -# definition found in the source code.
2009   -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
2010   -
2011   -EXPAND_AS_DEFINED =
2012   -
2013   -# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
2014   -# remove all references to function-like macros that are alone on a line, have
2015   -# an all uppercase name, and do not end with a semicolon. Such function macros
2016   -# are typically used for boiler-plate code, and will confuse the parser if not
2017   -# removed.
2018   -# The default value is: YES.
2019   -# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
2020   -
2021   -SKIP_FUNCTION_MACROS = YES
2022   -
2023   -#---------------------------------------------------------------------------
2024   -# Configuration options related to external references
2025   -#---------------------------------------------------------------------------
2026   -
2027   -# The TAGFILES tag can be used to specify one or more tag files. For each tag
2028   -# file the location of the external documentation should be added. The format of
2029   -# a tag file without this location is as follows:
2030   -# TAGFILES = file1 file2 ...
2031   -# Adding location for the tag files is done as follows:
2032   -# TAGFILES = file1=loc1 "file2 = loc2" ...
2033   -# where loc1 and loc2 can be relative or absolute paths or URLs. See the
2034   -# section "Linking to external documentation" for more information about the use
2035   -# of tag files.
2036   -# Note: Each tag file must have a unique name (where the name does NOT include
2037   -# the path). If a tag file is not located in the directory in which doxygen is
2038   -# run, you must also specify the path to the tagfile here.
2039   -
2040   -TAGFILES =
2041   -
2042   -# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
2043   -# tag file that is based on the input files it reads. See section "Linking to
2044   -# external documentation" for more information about the usage of tag files.
2045   -
2046   -GENERATE_TAGFILE =
2047   -
2048   -# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
2049   -# the class index. If set to NO, only the inherited external classes will be
2050   -# listed.
2051   -# The default value is: NO.
2052   -
2053   -ALLEXTERNALS = NO
2054   -
2055   -# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
2056   -# in the modules index. If set to NO, only the current project's groups will be
2057   -# listed.
2058   -# The default value is: YES.
2059   -
2060   -EXTERNAL_GROUPS = YES
2061   -
2062   -# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
2063   -# the related pages index. If set to NO, only the current project's pages will
2064   -# be listed.
2065   -# The default value is: YES.
2066   -
2067   -EXTERNAL_PAGES = YES
2068   -
2069   -# The PERL_PATH should be the absolute path and name of the perl script
2070   -# interpreter (i.e. the result of 'which perl').
2071   -# The default file (with absolute path) is: /usr/bin/perl.
2072   -
2073   -PERL_PATH = /usr/bin/perl
2074   -
2075   -#---------------------------------------------------------------------------
2076   -# Configuration options related to the dot tool
2077   -#---------------------------------------------------------------------------
2078   -
2079   -# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
2080   -# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
2081   -# NO turns the diagrams off. Note that this option also works with HAVE_DOT
2082   -# disabled, but it is recommended to install and use dot, since it yields more
2083   -# powerful graphs.
2084   -# The default value is: YES.
2085   -
2086   -CLASS_DIAGRAMS = YES
2087   -
2088   -# You can define message sequence charts within doxygen comments using the \msc
2089   -# command. Doxygen will then run the mscgen tool (see:
2090   -# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
2091   -# documentation. The MSCGEN_PATH tag allows you to specify the directory where
2092   -# the mscgen tool resides. If left empty the tool is assumed to be found in the
2093   -# default search path.
2094   -
2095   -MSCGEN_PATH =
2096   -
2097   -# You can include diagrams made with dia in doxygen documentation. Doxygen will
2098   -# then run dia to produce the diagram and insert it in the documentation. The
2099   -# DIA_PATH tag allows you to specify the directory where the dia binary resides.
2100   -# If left empty dia is assumed to be found in the default search path.
2101   -
2102   -DIA_PATH =
2103   -
2104   -# If set to YES the inheritance and collaboration graphs will hide inheritance
2105   -# and usage relations if the target is undocumented or is not a class.
2106   -# The default value is: YES.
2107   -
2108   -HIDE_UNDOC_RELATIONS = YES
2109   -
2110   -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
2111   -# available from the path. This tool is part of Graphviz (see:
2112   -# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
2113   -# Bell Labs. The other options in this section have no effect if this option is
2114   -# set to NO
2115   -# The default value is: NO.
2116   -
2117   -HAVE_DOT = NO
2118   -
2119   -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
2120   -# to run in parallel. When set to 0 doxygen will base this on the number of
2121   -# processors available in the system. You can set it explicitly to a value
2122   -# larger than 0 to get control over the balance between CPU load and processing
2123   -# speed.
2124   -# Minimum value: 0, maximum value: 32, default value: 0.
2125   -# This tag requires that the tag HAVE_DOT is set to YES.
2126   -
2127   -DOT_NUM_THREADS = 0
2128   -
2129   -# When you want a differently looking font in the dot files that doxygen
2130   -# generates you can specify the font name using DOT_FONTNAME. You need to make
2131   -# sure dot is able to find the font, which can be done by putting it in a
2132   -# standard location or by setting the DOTFONTPATH environment variable or by
2133   -# setting DOT_FONTPATH to the directory containing the font.
2134   -# The default value is: Helvetica.
2135   -# This tag requires that the tag HAVE_DOT is set to YES.
2136   -
2137   -DOT_FONTNAME = Helvetica
2138   -
2139   -# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
2140   -# dot graphs.
2141   -# Minimum value: 4, maximum value: 24, default value: 10.
2142   -# This tag requires that the tag HAVE_DOT is set to YES.
2143   -
2144   -DOT_FONTSIZE = 10
2145   -
2146   -# By default doxygen will tell dot to use the default font as specified with
2147   -# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
2148   -# the path where dot can find it using this tag.
2149   -# This tag requires that the tag HAVE_DOT is set to YES.
2150   -
2151   -DOT_FONTPATH =
2152   -
2153   -# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
2154   -# each documented class showing the direct and indirect inheritance relations.
2155   -# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
2156   -# The default value is: YES.
2157   -# This tag requires that the tag HAVE_DOT is set to YES.
2158   -
2159   -CLASS_GRAPH = YES
2160   -
2161   -# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
2162   -# graph for each documented class showing the direct and indirect implementation
2163   -# dependencies (inheritance, containment, and class references variables) of the
2164   -# class with other documented classes.
2165   -# The default value is: YES.
2166   -# This tag requires that the tag HAVE_DOT is set to YES.
2167   -
2168   -COLLABORATION_GRAPH = YES
2169   -
2170   -# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
2171   -# groups, showing the direct groups dependencies.
2172   -# The default value is: YES.
2173   -# This tag requires that the tag HAVE_DOT is set to YES.
2174   -
2175   -GROUP_GRAPHS = YES
2176   -
2177   -# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
2178   -# collaboration diagrams in a style similar to the OMG's Unified Modeling
2179   -# Language.
2180   -# The default value is: NO.
2181   -# This tag requires that the tag HAVE_DOT is set to YES.
2182   -
2183   -UML_LOOK = NO
2184   -
2185   -# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
2186   -# class node. If there are many fields or methods and many nodes the graph may
2187   -# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
2188   -# number of items for each type to make the size more manageable. Set this to 0
2189   -# for no limit. Note that the threshold may be exceeded by 50% before the limit
2190   -# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
2191   -# but if the number exceeds 15, the total amount of fields shown is limited to
2192   -# 10.
2193   -# Minimum value: 0, maximum value: 100, default value: 10.
2194   -# This tag requires that the tag HAVE_DOT is set to YES.
2195   -
2196   -UML_LIMIT_NUM_FIELDS = 10
2197   -
2198   -# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
2199   -# collaboration graphs will show the relations between templates and their
2200   -# instances.
2201   -# The default value is: NO.
2202   -# This tag requires that the tag HAVE_DOT is set to YES.
2203   -
2204   -TEMPLATE_RELATIONS = NO
2205   -
2206   -# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
2207   -# YES then doxygen will generate a graph for each documented file showing the
2208   -# direct and indirect include dependencies of the file with other documented
2209   -# files.
2210   -# The default value is: YES.
2211   -# This tag requires that the tag HAVE_DOT is set to YES.
2212   -
2213   -INCLUDE_GRAPH = YES
2214   -
2215   -# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
2216   -# set to YES then doxygen will generate a graph for each documented file showing
2217   -# the direct and indirect include dependencies of the file with other documented
2218   -# files.
2219   -# The default value is: YES.
2220   -# This tag requires that the tag HAVE_DOT is set to YES.
2221   -
2222   -INCLUDED_BY_GRAPH = YES
2223   -
2224   -# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
2225   -# dependency graph for every global function or class method.
2226   -#
2227   -# Note that enabling this option will significantly increase the time of a run.
2228   -# So in most cases it will be better to enable call graphs for selected
2229   -# functions only using the \callgraph command.
2230   -# The default value is: NO.
2231   -# This tag requires that the tag HAVE_DOT is set to YES.
2232   -
2233   -CALL_GRAPH = NO
2234   -
2235   -# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
2236   -# dependency graph for every global function or class method.
2237   -#
2238   -# Note that enabling this option will significantly increase the time of a run.
2239   -# So in most cases it will be better to enable caller graphs for selected
2240   -# functions only using the \callergraph command.
2241   -# The default value is: NO.
2242   -# This tag requires that the tag HAVE_DOT is set to YES.
2243   -
2244   -CALLER_GRAPH = NO
2245   -
2246   -# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
2247   -# hierarchy of all classes instead of a textual one.
2248   -# The default value is: YES.
2249   -# This tag requires that the tag HAVE_DOT is set to YES.
2250   -
2251   -GRAPHICAL_HIERARCHY = YES
2252   -
2253   -# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
2254   -# dependencies a directory has on other directories in a graphical way. The
2255   -# dependency relations are determined by the #include relations between the
2256   -# files in the directories.
2257   -# The default value is: YES.
2258   -# This tag requires that the tag HAVE_DOT is set to YES.
2259   -
2260   -DIRECTORY_GRAPH = YES
2261   -
2262   -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
2263   -# generated by dot.
2264   -# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
2265   -# to make the SVG files visible in IE 9+ (other browsers do not have this
2266   -# requirement).
2267   -# Possible values are: png, jpg, gif and svg.
2268   -# The default value is: png.
2269   -# This tag requires that the tag HAVE_DOT is set to YES.
2270   -
2271   -DOT_IMAGE_FORMAT = png
2272   -
2273   -# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
2274   -# enable generation of interactive SVG images that allow zooming and panning.
2275   -#
2276   -# Note that this requires a modern browser other than Internet Explorer. Tested
2277   -# and working are Firefox, Chrome, Safari, and Opera.
2278   -# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
2279   -# the SVG files visible. Older versions of IE do not have SVG support.
2280   -# The default value is: NO.
2281   -# This tag requires that the tag HAVE_DOT is set to YES.
2282   -
2283   -INTERACTIVE_SVG = NO
2284   -
2285   -# The DOT_PATH tag can be used to specify the path where the dot tool can be
2286   -# found. If left blank, it is assumed the dot tool can be found in the path.
2287   -# This tag requires that the tag HAVE_DOT is set to YES.
2288   -
2289   -DOT_PATH =
2290   -
2291   -# The DOTFILE_DIRS tag can be used to specify one or more directories that
2292   -# contain dot files that are included in the documentation (see the \dotfile
2293   -# command).
2294   -# This tag requires that the tag HAVE_DOT is set to YES.
2295   -
2296   -DOTFILE_DIRS =
2297   -
2298   -# The MSCFILE_DIRS tag can be used to specify one or more directories that
2299   -# contain msc files that are included in the documentation (see the \mscfile
2300   -# command).
2301   -
2302   -MSCFILE_DIRS =
2303   -
2304   -# The DIAFILE_DIRS tag can be used to specify one or more directories that
2305   -# contain dia files that are included in the documentation (see the \diafile
2306   -# command).
2307   -
2308   -DIAFILE_DIRS =
2309   -
2310   -# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
2311   -# path where java can find the plantuml.jar file. If left blank, it is assumed
2312   -# PlantUML is not used or called during a preprocessing step. Doxygen will
2313   -# generate a warning when it encounters a \startuml command in this case and
2314   -# will not generate output for the diagram.
2315   -
2316   -PLANTUML_JAR_PATH =
2317   -
2318   -# When using plantuml, the specified paths are searched for files specified by
2319   -# the !include statement in a plantuml block.
2320   -
2321   -PLANTUML_INCLUDE_PATH =
2322   -
2323   -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
2324   -# that will be shown in the graph. If the number of nodes in a graph becomes
2325   -# larger than this value, doxygen will truncate the graph, which is visualized
2326   -# by representing a node as a red box. Note that doxygen if the number of direct
2327   -# children of the root node in a graph is already larger than
2328   -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
2329   -# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
2330   -# Minimum value: 0, maximum value: 10000, default value: 50.
2331   -# This tag requires that the tag HAVE_DOT is set to YES.
2332   -
2333   -DOT_GRAPH_MAX_NODES = 50
2334   -
2335   -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
2336   -# generated by dot. A depth value of 3 means that only nodes reachable from the
2337   -# root by following a path via at most 3 edges will be shown. Nodes that lay
2338   -# further from the root node will be omitted. Note that setting this option to 1
2339   -# or 2 may greatly reduce the computation time needed for large code bases. Also
2340   -# note that the size of a graph can be further restricted by
2341   -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
2342   -# Minimum value: 0, maximum value: 1000, default value: 0.
2343   -# This tag requires that the tag HAVE_DOT is set to YES.
2344   -
2345   -MAX_DOT_GRAPH_DEPTH = 0
2346   -
2347   -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
2348   -# background. This is disabled by default, because dot on Windows does not seem
2349   -# to support this out of the box.
2350   -#
2351   -# Warning: Depending on the platform used, enabling this option may lead to
2352   -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
2353   -# read).
2354   -# The default value is: NO.
2355   -# This tag requires that the tag HAVE_DOT is set to YES.
2356   -
2357   -DOT_TRANSPARENT = NO
2358   -
2359   -# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
2360   -# files in one run (i.e. multiple -o and -T options on the command line). This
2361   -# makes dot run faster, but since only newer versions of dot (>1.8.10) support
2362   -# this, this feature is disabled by default.
2363   -# The default value is: NO.
2364   -# This tag requires that the tag HAVE_DOT is set to YES.
2365   -
2366   -DOT_MULTI_TARGETS = NO
2367   -
2368   -# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
2369   -# explaining the meaning of the various boxes and arrows in the dot generated
2370   -# graphs.
2371   -# The default value is: YES.
2372   -# This tag requires that the tag HAVE_DOT is set to YES.
2373   -
2374   -GENERATE_LEGEND = YES
2375   -
2376   -# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
2377   -# files that are used to generate the various graphs.
2378   -# The default value is: YES.
2379   -# This tag requires that the tag HAVE_DOT is set to YES.
2380   -
2381   -DOT_CLEANUP = YES
TextureTest.cu deleted
1   -#include <math.h>
2   -#include <iostream>
3   -#include <vector>
4   -#include "stim/math/vector.h"
5   -//#include <GL/gl.h>
6   -#include <GL/glew.h>
7   -#include <GL/glut.h>
8   -//#include <GL/freeglut.h>
9   -//#include <GL/glext.h>
10   -#include "stim/gl/gl_spider.h"
11   -#include "stim/gl/gl_texture.h"
12   -#include "stim/gl/error.h"
13   -#include "stim/visualization/camera.h"
14   -#define VERTICAL 1
15   -#define HORIZONTAL 1
16   - stim::camera cam;
17   - stim::camera Parker;
18   - GLuint texID;
19   - GLuint texID2;
20   -// GLuint fboId;
21   - stim::vec<float> D;
22   -// GLuint rboId;
23   -// GLuint pbo;
24   - float a = -1.0;
25   - float b = 1.0;
26   - GLsizei size[2] = {900,900};
27   - GLfloat Normals[6][3] =
28   - {{ -1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {1.0, 0.0, 0.0},
29   - {0.0, -1.0, 0.0}, {0.0, 0.0, 1.0}, {0.0, 0.0, -1.0}};
30   - GLint faces[6][4] =
31   - {{0, 1, 2, 3}, {4, 5, 7, 6}, {1, 5, 7, 2},
32   - {3, 2, 7, 6}, {0, 4, 6, 3}, {0, 1, 5, 4}};
33   - GLfloat vertex[8][3] =
34   - {{0.0, 0.0, 1.0}, {1.0, 0.0, 1.0}, {1.0, 1.0, 1.0},
35   - {0.0, 1.0, 1.0}, {0.0, 0.0, 0.0}, {1.0, 0.0, 0.0},
36   - {0.0, 1.0, 0.0}, {1.0, 1.0, 0.0}};
37   -
38   - GLint lines[24] = {0,1,1,2,2,3,0,3,4,5,5,7,7,6,6,4,3,6,2,7,1,5,0,4};
39   - GLfloat vertexDrw[8][3] =
40   - {{a, a, b}, {b, a, b}, {b, b, b},
41   - {a, b, b}, {a, a, a}, {b, a, a},
42   - {a, b, a}, {b, b, a}};
43   - static float mousePos[2] = {0,0};
44   - static float prevmousePos[2] = {0,0};
45   - unsigned long tick = 0;
46   - stim::vec<float> p;
47   - stim::vec<float> up;
48   - stim::vec<float> d;
49   - static bool button1 = false;
50   - static bool button_shift = false;
51   - static float degtorad = 360/(2*M_PI);
52   - static GLfloat adjustTex = 1.0/426.0;
53   - static GLfloat adjustDrw = 2.0/426.0;
54   - static GLfloat oriTex[3] = {adjustTex*213+adjustTex/2
55   - ,adjustTex*213+adjustTex/2
56   - ,adjustTex*213+adjustTex/2};
57   - static GLfloat oriDrw[3] = {adjustDrw/2
58   - ,adjustDrw/2
59   - ,adjustDrw/2};
60   - static GLfloat org[2] = {adjustTex/2,adjustTex/2+425*adjustTex};
61   - stim::gl_spider<float> spidey;
62   - stim::vec<float>p1;
63   - stim::vec<float>p2;
64   - stim::vec<float>p3;
65   - stim::vec<float>p4;
66   -//init for a cube
67   -/*void
68   -GenerateFBO(unsigned int width, unsigned int height)
69   -{
70   - glGenFramebuffers(1, &fboId);
71   - glBindFramebuffer(GL_FRAMEBUFFER, fboId);
72   - int numChannels = 3;
73   - unsigned char* texels = new unsigned char[width * height * numChannels];
74   - glGenTextures(1, &texID2);
75   - glBindTexture(GL_TEXTURE_2D, texID2);
76   - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
77   - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
78   - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
79   - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
80   - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8,
81   - width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, texels);
82   - delete[] texels;
83   - glBindFramebuffer(GL_FRAMEBUFFER, 0);
84   -}*/
85   -
86   -void
87   -glInit()
88   -{
89   - CHECK_OPENGL_ERROR
90   - glEnable(GL_TEXTURE_3D);
91   - glEnable(GL_DEPTH_TEST);
92   - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
93   - glClearColor(0.0, 0.0, 0.0, 0.0);
94   - glColor4d(0.0, 0.0, 0.0, 1.0);
95   - glShadeModel(GL_FLAT);
96   - cam.setPosition(3.0,3.0,3.0);
97   - cam.setFocalDistance(6.0);
98   - cam.LookAt(0.0, 0.0, 0.0);
99   - p = cam.getPosition();
100   - up = cam.getUp();
101   - d = cam.getLookAt();
102   - glViewport(0, 0, size[0], size[1]);
103   - glMatrixMode(GL_PROJECTION);
104   - glLoadIdentity();
105   - glOrtho(-5.0, 2.0,-5.0, 2.0, -0.0, 1000.0);
106   - glMatrixMode(GL_MODELVIEW);
107   - spidey = stim::gl_spider<float>(0.515372, 0.564174, 0.494553,
108   - 0.130563, -0.98295, -0.129467,
109   - 0.03, 0.03);
110   - spidey.attachSpider(texID);
111   - Parker.setPosition(spidey.getPosition());
112   - Parker.LookAt(spidey.getDirection());
113   -// GenerateFBO(400, 200);
114   - spidey.initCuda();
115   - //glGenRenderbuffers(1, &rboId);
116   - //glBindRenderbuffer(GL_RENDERBUFFER, rboId);
117   - //GLuint rboId;
118   - //glGenRenderbuffers(1, &rboId);
119   - //glBindRenderbuffer(GL_RENDERBUFFER, rboId);
120   - //glGenBuffers(1, &pbo);
121   - //glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, pbo);
122   - //glBufferData(GL_PIXEL_UNPACK_BUFFER_ARB, 426*426*sizeof(uchar4), NULL, GL_DYNAMIC_DRAW_ARB);
123   - CHECK_OPENGL_ERROR
124   -}
125   -
126   -
127   -void
128   -DrawCube()
129   -{
130   - glLineWidth(2.5);
131   - glColor3f(1.0,0.0,0.0);
132   - glBegin(GL_LINES);
133   -
134   - for (int i = 0; i < 24; i++)
135   - {
136   - glVertex3f(vertexDrw[lines[i]][0],
137   - vertexDrw[lines[i]][1],
138   - vertexDrw[lines[i]][2]);
139   - }
140   - glEnd();
141   -}
142   -
143   -void
144   -DrawPlanes()
145   -{
146   - glEnable(GL_TEXTURE_3D);
147   - glBindTexture(GL_TEXTURE_3D, texID);
148   - p1 = spidey.ver.p(1,1);
149   - p2 = spidey.ver.p(1,0);
150   - p3 = spidey.ver.p(0,0);
151   - p4 = spidey.ver.p(0,1);
152   - //glPushName(VERTICAL);
153   - glBegin(GL_QUADS);
154   - glTexCoord3f(
155   - p1[0],
156   - p1[1],
157   - p1[2]
158   - );
159   - glVertex3f(
160   - p1[0],
161   - p1[1],
162   - p1[2]
163   - );
164   - glTexCoord3f(
165   - p2[0],
166   - p2[1],
167   - p2[2]
168   - );
169   - glVertex3f(
170   - p2[0],
171   - p2[1],
172   - p2[2]
173   - );
174   - glTexCoord3f(
175   - p3[0],
176   - p3[1],
177   - p3[2]
178   - );
179   - glVertex3f(
180   - p3[0],
181   - p3[1],
182   - p3[2]
183   - );
184   - glTexCoord3f(
185   - p4[0],
186   - p4[1],
187   - p4[2]
188   - );
189   - glVertex3f(
190   - p4[0],
191   - p4[1],
192   - p4[2]
193   - );
194   - glEnd();
195   - //glPopName();
196   - p1 = spidey.hor.p(1,1);
197   - p2 = spidey.hor.p(1,0);
198   - p3 = spidey.hor.p(0,0);
199   - p4 = spidey.hor.p(0,1);
200   - //glPushName(HORIZONTAL);
201   - glBegin(GL_QUADS);
202   - glTexCoord3f(
203   - p1[0],
204   - p1[1],
205   - p1[2]
206   - );
207   - glVertex3f(
208   - p1[0],
209   - p1[1],
210   - p1[2]
211   - );
212   - glTexCoord3f(
213   - p2[0],
214   - p2[1],
215   - p2[2]
216   - );
217   - glVertex3f(
218   - p2[0],
219   - p2[1],
220   - p2[2]
221   - );
222   - glTexCoord3f(
223   - p3[0],
224   - p3[1],
225   - p3[2]
226   - );
227   - glVertex3f(
228   - p3[0],
229   - p3[1],
230   - p3[2]
231   - );
232   - glTexCoord3f(
233   - p4[0],
234   - p4[1],
235   - p4[2]
236   - );
237   - glVertex3f(
238   - p4[0],
239   - p4[1],
240   - p4[2]
241   - );
242   - glEnd();
243   - //glPopName();
244   - glBindTexture(GL_TEXTURE_3D, 0);
245   - glDisable(GL_TEXTURE_3D);
246   -}
247   -void
248   -DrawSpiders()
249   -{
250   - glEnable(GL_TEXTURE_3D);
251   - glBindTexture(GL_TEXTURE_3D, texID);
252   - p1 = spidey.hor.p(1,1);
253   - p2 = spidey.hor.p(1,0);
254   - p3 = spidey.hor.p(0,0);
255   - p4 = spidey.hor.p(0,1);
256   - glBegin(GL_QUADS);
257   - glTexCoord3f(
258   - p1[0],
259   - p1[1],
260   - p1[2]
261   - );
262   - glVertex2f(0.0,0.0);
263   - glTexCoord3f(
264   - p2[0],
265   - p2[1],
266   - p2[2]
267   - );
268   - glVertex2f(1.0, 0.0);
269   - glTexCoord3f(
270   - p3[0],
271   - p3[1],
272   - p3[2]
273   - );
274   - glVertex2f(1.0, 2.0);
275   - glTexCoord3f(
276   - p4[0],
277   - p4[1],
278   - p4[2]
279   - );
280   - glVertex2f(0.0, 2.0);
281   - glEnd();
282   - p1 = spidey.ver.p(1,1);
283   - p2 = spidey.ver.p(1,0);
284   - p3 = spidey.ver.p(0,0);
285   - p4 = spidey.ver.p(0,1);
286   -
287   - glBegin(GL_QUADS);
288   - glTexCoord3f(
289   - p1[0],
290   - p1[1],
291   - p1[2]
292   - );
293   - glVertex2f(1.0, 0.0);
294   - glTexCoord3f(
295   - p2[0],
296   - p2[1],
297   - p2[2]
298   - );
299   - glVertex2f(2.0, 0.0);
300   - glTexCoord3f(
301   - p3[0],
302   - p3[1],
303   - p3[2]
304   - );
305   - glVertex2f(2.0, 2.0);
306   - glTexCoord3f(
307   - p4[0],
308   - p4[1],
309   - p4[2]
310   - );
311   - glVertex2f(1.0, 2.0);
312   - glEnd();
313   - glBindTexture(GL_TEXTURE_3D, 0);
314   - glDisable(GL_TEXTURE_3D);
315   -}
316   -
317   -//render cube
318   -
319   -void
320   -renderScene()
321   -{
322   - glViewport(0, 0, size[0], size[1]);
323   - glMatrixMode(GL_PROJECTION);
324   - glLoadIdentity();
325   - glOrtho(-5.0, 2.0,-5.0, 2.0, -0.0, 1000.0);
326   - glMatrixMode(GL_MODELVIEW);
327   - glInitNames();
328   - glClearColor(0,0,0,0);
329   - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
330   - glMatrixMode(GL_MODELVIEW);
331   - glLoadIdentity();
332   - p = cam.getPosition();
333   - up = cam.getUp();
334   - d = cam.getLookAt();
335   - gluLookAt(p[0], p[1], p[2], d[0], d[1], d[2], up[0], up[1], up[2]);
336   - DrawPlanes();
337   - DrawCube();
338   - //glEnable(GL_TEXTURE_2D);
339   -
340   -
341   - //glBindTexture(GL_TEXTURE_2D, texID);
342   - /*glBindFramebuffer(GL_FRAMEBUFFER, fboId);
343   - glFramebufferTexture2D(
344   - GL_FRAMEBUFFER,
345   - GL_COLOR_ATTACHMENT0,
346   - GL_TEXTURE_2D,
347   - texID2,
348   - 0
349   - );
350   - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texID2, 0);
351   - glBindFramebuffer(GL_FRAMEBUFFER, fboId);
352   - GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT0};
353   - glDrawBuffers(1, DrawBuffers);
354   - if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
355   - std::cout << "damn" << std::endl;
356   - glBindTexture(GL_TEXTURE_2D, texID2);
357   - glClearColor(1,1,1,1);
358   - glClear(GL_COLOR_BUFFER_BIT);
359   - //glLoadIdentity();
360   - //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
361   - CHECK_OPENGL_ERROR
362   - glMatrixMode(GL_PROJECTION);
363   - glLoadIdentity();
364   - glMatrixMode(GL_MODELVIEW);
365   - glLoadIdentity();
366   - glViewport(0,0,400,200);
367   - gluOrtho2D(0.0, 2.0, 0.0, 2.0);
368   - DrawSpiders();
369   - //glPopMatrix();
370   - //DrawSpiders2();
371   - //glFlush();
372   - //glFinish();
373   - CHECK_OPENGL_ERROR
374   - glBindFramebuffer(GL_FRAMEBUFFER, 0);
375   - glBindTexture(GL_TEXTURE_2D, 0);*/
376   - glBindFramebuffer(GL_READ_FRAMEBUFFER, spidey.getFB());
377   - glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
378   - glBlitFramebuffer(0,0,800,400, 0, 0, 800, 400, GL_COLOR_BUFFER_BIT, GL_NEAREST);
379   - CHECK_OPENGL_ERROR
380   - //glBindFramebuffer(GL_FRAMEBUFFER,0);
381   - //glBindTexture(GL_TEXTURE_3D, texID);
382   - //glGenerateMipmap(GL_TEXTURE_3D);
383   - //glBindTexture(GL_TEXTURE_3D, 0);
384   - //glViewport(0,0, 800,800);
385   -
386   - //GLint curbuf;
387   - //glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &curbuf);
388   - //std::cout << curbuf << std::endl;
389   -
390   - //glViewport(0,0,600,600);
391   - //glBindFramebuffer(GL_FRAMEBUFFER, fboId);
392   -
393   - //glDrawBuffer(GL_FRAMEBUFFER0);
394   - //glDrawBuffer(fboId);
395   - //glClearColor(1,1,1,1);
396   - //glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
397   - //glLoadIdentity();
398   - //std::cout << fboId << std::endl;
399   - //DrawSpiders();
400   -
401   - //glBlitFramebuffer(0.0,0.0,1,1,0.0,0.0,1,1, GL_COLOR_BUFFER_BIT, GL_LINEAR);
402   - //gluOrtho2D(-5.0, -3.0, -5.0, -1.0);
403   - //glClearColor(1,1,1,1);
404   - //glBindTexture(GL_TEXTURE_3D, texID);
405   - //glPushMatrix();
406   - //glGenerateMipmap(GL_TEXTURE_3D);
407   - //glBindTexture(GL_TEXTURE_3D, 0);
408   - //glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &curbuf);
409   - //std::cout << curbuf << std::endl;
410   -
411   -// glCopyImageSubData(fboId, GL_FRAMEBUFFER, 0, 0, 0, 0, GL_FRONT_AND_BACK, GL_NONE, 0, 0, 0, 0, 20, 20, 0);
412   -
413   -
414   - glutSwapBuffers();
415   -}
416   -
417   -
418   -void
419   -MouseButton(int button, int state, int x, int y)
420   -{
421   -
422   - if (button == GLUT_LEFT_BUTTON)
423   - {
424   - button1 = (state == GLUT_DOWN) ? true : false;
425   - button_shift = glutGetModifiers();
426   - prevmousePos[0] = (float)x;
427   - prevmousePos[1] = (float)y;
428   - }
429   - if (button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN)
430   - {
431   - std::cout << spidey.getPosition() << std::endl
432   - << spidey.getDirection() << std::endl;
433   - std::cout << spidey.getCost() << std::endl;
434   - }
435   -}
436   -
437   -void MouseMotion(int x, int y)
438   -{
439   - if(button1 && !button_shift)
440   - {
441   - mousePos[0] = (prevmousePos[0] - (float) x)*0.0005;
442   - mousePos[1] = ((float)y - prevmousePos[1])*0.0005;
443   - prevmousePos[0] = (float)x;
444   - prevmousePos[1] = (float)y;
445   - cam.OrbitFocus(mousePos[0]*degtorad, mousePos[1]*degtorad);
446   - }
447   - if(button1 && button_shift)
448   - {
449   - mousePos[0] = (prevmousePos[0] - (float) x)*0.00001;
450   - mousePos[1] = ((float)y - prevmousePos[1])*0.00001;
451   - prevmousePos[0] = (float)x;
452   - prevmousePos[1] = (float)y;
453   - Parker.Pan(mousePos[0]*degtorad);
454   - Parker.Tilt(mousePos[1]*degtorad);
455   - spidey.setDirection(Parker.getDirection());
456   - spidey.Update();
457   - std::cout << Parker.getLookAt() << std::endl;
458   - }
459   -}
460   -
461   -void
462   -idleFunction()
463   -{
464   - tick += 10;
465   - glutPostRedisplay();
466   -}
467   -
468   -void
469   -printCost()
470   -{
471   -
472   -}
473   -
474   -
475   -void
476   -processSpecialKeys(int key, int xx, int yy)
477   -{
478   -switch(key) {
479   - case GLUT_KEY_UP:
480   - oriTex[2] = oriTex[2]+adjustTex;
481   - if (oriTex[2] > org[1]){
482   - oriTex[2] = org[1];
483   - }
484   - else{
485   - oriDrw[2] = oriDrw[2] + adjustDrw;
486   - }
487   - if (glutGetModifiers() == GLUT_ACTIVE_SHIFT)
488   - {
489   - stim::vec<float> temp = spidey.getPosition();
490   - temp[1] += 0.001;
491   - spidey.setPosition(temp);
492   - spidey.Update();
493   - }
494   - if (glutGetModifiers() == GLUT_ACTIVE_CTRL)
495   - {
496   - //stim::vec<float> temp = Parker.getDirection();
497   - //temp[1] += 0.001;
498   - Parker.Pan(0.01);
499   - spidey.setDirection(Parker.getDirection());
500   - spidey.Update();
501   - }
502   - break;
503   - case GLUT_KEY_DOWN:
504   - oriTex[2] = oriTex[2]-adjustTex;
505   - if (oriTex[2] < org[0]){
506   - oriTex[2] = org[0];
507   - }
508   - else{
509   - oriDrw[2] = oriDrw[2] - adjustDrw;
510   - }
511   - if (glutGetModifiers() == GLUT_ACTIVE_SHIFT)
512   - {
513   - stim::vec<float> temp = spidey.getPosition();
514   - temp[1] -= 0.001;
515   - spidey.setPosition(temp);
516   - spidey.Update();
517   - }
518   - if (glutGetModifiers() == GLUT_ACTIVE_CTRL)
519   - {
520   - //stim::vec<float> temp = Parker.getDirection();
521   - //temp[1] -= 0.001;
522   - Parker.Pan(-0.01);
523   - spidey.setDirection(Parker.getDirection());
524   - spidey.Update();
525   - }
526   - break;
527   - case GLUT_KEY_LEFT:
528   - oriTex[1] = oriTex[1]+adjustTex;
529   - if (oriTex[1] > org[1]){
530   - oriTex[1] = org[1];
531   - }
532   - else{
533   - oriDrw[1] = oriDrw[1] + adjustDrw;
534   - }
535   - if (glutGetModifiers() == GLUT_ACTIVE_SHIFT)
536   - {
537   - stim::vec<float> temp = spidey.getPosition();
538   - temp[0] += 0.001;
539   - spidey.setPosition(temp);
540   - spidey.Update();
541   - }
542   - if (glutGetModifiers() == GLUT_ACTIVE_CTRL)
543   - {
544   - //stim::vec<float> temp = Parker.getDirection();
545   - //temp[0] += 0.001;
546   - Parker.Tilt(0.01);
547   - spidey.setDirection(Parker.getDirection());
548   - spidey.Update();
549   - }
550   - break;
551   - case GLUT_KEY_RIGHT:
552   - oriTex[1] = oriTex[1]-adjustTex;
553   - if (oriTex[1] < org[0]){
554   - oriTex[1] = org[0];
555   - }
556   - else{
557   - oriDrw[1] = oriDrw[1] - adjustDrw;
558   - }
559   - if (glutGetModifiers() == GLUT_ACTIVE_SHIFT)
560   - {
561   - stim::vec<float> temp = spidey.getPosition();
562   - temp[0] -= 0.001;
563   - spidey.setPosition(temp);
564   - spidey.Update();
565   - }
566   - if (glutGetModifiers() == GLUT_ACTIVE_CTRL)
567   - {
568   - //stim::vec<float> temp = Parker.getDirection();
569   - //temp[0] -= 0.001;
570   - Parker.Tilt(-0.01);
571   - spidey.setDirection(Parker.getDirection());
572   - spidey.Update();
573   - }
574   - break;
575   - }
576   - glutPostRedisplay();
577   -}
578   -
579   -void
580   -processKeys(unsigned char key, int x, int y)
581   -{
582   - if (key == 27)
583   - exit(0);
584   - if (key == 32)
585   - {
586   - spidey.Step();
587   - std::cout << "Took a step" << std::endl;
588   - }
589   - if (key == 43)
590   - {
591   - stim::vec<float> temp = spidey.getMagnitude();
592   - temp = temp + 0.001;
593   - spidey.setMagnitude(temp);
594   - spidey.Update();
595   - }
596   - if (key == 45)
597   - {
598   - stim::vec<float> temp = spidey.getMagnitude();
599   - temp = temp - 0.001;
600   - spidey.setMagnitude(temp);
601   - spidey.Update();
602   - }
603   -}
604   -
605   -
606   -void
607   -changeSize(int w, int h)
608   -{
609   - glViewport(0,0,w,h);
610   - glMatrixMode(GL_PROJECTION);
611   - glLoadIdentity();
612   - glOrtho(-5.0, 2.0,-5.0, 2.0, -0.0, 1000.0);
613   - //gluPerspective(90, 4.0/3.0, 0.1, 100.0);
614   - glMatrixMode(GL_MODELVIEW);
615   -}
616   -
617   -
618   -int
619   -main(int argc, char **argv)
620   -{
621   - CHECK_OPENGL_ERROR
622   - glutInit(&argc, argv);
623   - glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
624   - glutInitWindowSize(size[0], size[1]);
625   - glutCreateWindow("gl_texture");
626   - //std::cout << " Initialization is complete in Glut" << std::endl;
627   -
628   - CHECK_OPENGL_ERROR
629   - glutKeyboardFunc(processKeys);
630   - CHECK_OPENGL_ERROR
631   - glutSpecialFunc(processSpecialKeys);
632   - CHECK_OPENGL_ERROR
633   - glutReshapeFunc(changeSize);
634   - CHECK_OPENGL_ERROR
635   - glutDisplayFunc(renderScene);
636   - CHECK_OPENGL_ERROR
637   - glutMouseFunc(MouseButton);
638   - CHECK_OPENGL_ERROR
639   - glutMotionFunc(MouseMotion);
640   -
641   - //std::cerr << " Keyboard and Reshape is complete in Glut" << std::endl;
642   - GLenum err = glewInit();
643   - if (GLEW_OK != err)
644   - {
645   - std::cerr << "Failed" << std::endl;
646   - fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
647   - }
648   - stim::gl_texture<unsigned char> stack ("/home/pavel/Documents/Test_Data/");
649   - //stack.setDimensions(1.0,1.0,1.0);
650   - //D = stack.getDimensions();
651   - stack.createTexture();
652   - texID = stack.getTexture();
653   - //std::cout << ("I have started an instance of the class") << std::endl;
654   -
655   -
656   - glInit();
657   - CHECK_OPENGL_ERROR
658   - glutIdleFunc(idleFunction);
659   - CHECK_OPENGL_ERROR
660   - glutMainLoop();
661   - CHECK_OPENGL_ERROR
662   - return 0;
663   -}
664   -
665   -
666   -//old code
667   -
668   - /*
669   - for (int i = 0; i < 6; i++)
670   - {
671   - //first vertex
672   - glTexCoord3f(vertex[faces[i][0]][0],
673   - vertex[faces[i][0]][1],
674   - vertex[faces[i][0]][2]);
675   -
676   - glVertex3f(vertex[faces[i][0]][0],
677   - vertex[faces[i][0]][1],
678   - vertex[faces[i][0]][2]);
679   -
680   - //second vertex
681   - glTexCoord3f(vertex[faces[i][1]][0],
682   - vertex[faces[i][1]][1],
683   - vertex[faces[i][1]][2]);
684   -
685   - glVertex3f(vertex[faces[i][1]][0],
686   - vertex[faces[i][1]][1],
687   - vertex[faces[i][1]][2]);
688   - //third vertex
689   - glTexCoord3f(vertex[faces[i][2]][0],
690   - vertex[faces[i][2]][1],
691   - vertex[faces[i][2]][2]);
692   -
693   - glVertex3f(vertex[faces[i][2]][0],
694   - vertex[faces[i][2]][1],
695   - vertex[faces[i][2]][2]);
696   -
697   - //fourth vertex
698   - glTexCoord3f(vertex[faces[i][3]][0],
699   - vertex[faces[i][3]][1],
700   - vertex[faces[i][3]][2]);
701   -
702   - glVertex3f(vertex[faces[i][3]][0],
703   - vertex[faces[i][3]][1],
704   - vertex[faces[i][3]][2]);
705   -
706   -
707   - }*/
708   -
709   -//init for a square.
710   -/*void
711   -glInitSquare(int w, int h)
712   -{
713   - glEnable(GL_TEXTURE_3D);
714   - glEnable(GL_DEPTH_TEST);
715   - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
716   - glClearColor(0.0, 0.0, 0.0, 0.0);
717   - glColor4d(0.0, 0.0, 0.0, 1.0);
718   - //glPointSize(3.0);
719   - glShadeModel(GL_FLAT);
720   -
721   - glViewport(0, 0, (GLsizei) 900, (GLsizei) 900);
722   - glMatrixMode(GL_PROJECTION);
723   - glLoadIdentity();
724   - gluPerspective(90, 4.0/3.0, 0.1, 100.0);
725   - glMatrixMode(GL_MODELVIEW);
726   -
727   -}
728   -//render square
729   -void
730   -renderSceneSquare()
731   -{
732   - glEnable(GL_TEXTURE_3D);
733   - glBindTexture(GL_TEXTURE_3D, texID);
734   - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
735   - glMatrixMode(GL_MODELVIEW);
736   - glLoadIdentity();
737   - glTranslatef(-0.5, -0.5, -pos);
738   - glBegin(GL_QUADS);
739   - glTexCoord3f(vertexTex[faces[1][0]][0],
740   - vertexTex[faces[1][0]][1],
741   - oriTex[2]);
742   -
743   - glVertex3f(vertexDrw[faces[1][0]][0],
744   - vertexDrw[faces[1][0]][1],
745   - vertexDrw[faces[1][0]][2]);
746   -
747   - //second vertex
748   - glTexCoord3f(vertexTex[faces[1][1]][0],
749   - vertexTex[faces[1][1]][1],
750   - oriTex[2]);
751   -
752   - glVertex3f(vertexDrw[faces[1][1]][0],
753   - vertexDrw[faces[1][1]][1],
754   - vertexDrw[faces[1][1]][2]);
755   -
756   - //third vertex
757   - glTexCoord3f(vertexTex[faces[1][2]][0],
758   - vertexTex[faces[1][2]][1],
759   - oriTex[2]);
760   -
761   - glVertex3f(vertexDrw[faces[1][2]][0],
762   - vertexDrw[faces[1][2]][1],
763   - vertexDrw[faces[1][2]][2]);
764   -
765   - //fourth vertex
766   - glTexCoord3f(vertexTex[faces[1][3]][0],
767   - vertexTex[faces[1][3]][1],
768   - oriTex[2]);
769   -
770   - glVertex3f(vertexDrw[faces[1][3]][0],
771   - vertexDrw[faces[1][3]][1],
772   - vertexDrw[faces[1][3]][2]);
773   - glEnd();
774   -
775   - CHECK_OPENGL_ERROR
776   - glutSwapBuffers();
777   -}*/
778   - //GLint faces[6][4] =
779   - // {{0, 1, 2, 3}, {3, 2, 6, 7}, {7, 6, 5, 4},
780   - // {4, 5, 1, 0}, {5, 6, 2, 1}, {7, 4, 0, 3}};
781   - //GLfloat vertex[8][3] =
782   - // {{0.0, 0.0, 1.0}, {0.0, 0.0, 0.0}, {0.0, 1.0, 0.0},
783   - // {0.0, 1.0, 1.0}, {1.0, 0.0, 1.0}, {1.0, 0.0, 0.0},
784   - // {1.0, 1.0, 0.0}, {1.0, 1.0, 1.0}};
785   - //GLfloat vertex[8][3] =
786   - // {{-1.0, -1.0, 1.0}, {-1.0, -1.0, -1.0}, {-1.0, 1.0, -1.0},
787   - // {-1.0, 1.0, 1.0}, {1.0, -1.0, 1.0}, {1.0, -1.0, -1.0},
788   - // {1.0, 1.0, -1.0}, {1.0, 1.0, 1.0}};
789   -/*
790   -void
791   -DrawPlanes()
792   -{
793   - glPushName(VERTICAL);
794   - glBegin(GL_QUADS);
795   - glTexCoord3f(
796   - vertexTex[0][0],
797   - vertexTex[0][1],
798   - oriTex[2]
799   - );
800   - glVertex3f(
801   - vertexDrw[0][0],
802   - vertexDrw[0][1],
803   - oriDrw[2]
804   - );
805   - glTexCoord3f(
806   - vertexTex[1][0],
807   - vertexTex[1][1],
808   - oriTex[2]
809   - );
810   - glVertex3f(
811   - vertexDrw[1][0],
812   - vertexDrw[1][1],
813   - oriDrw[2]
814   - );
815   - glTexCoord3f(
816   - vertexTex[2][0],
817   - vertexTex[2][1],
818   - oriTex[2]
819   - );
820   - glVertex3f(
821   - vertexDrw[2][0],
822   - vertexDrw[2][1],
823   - oriDrw[2]
824   - );
825   - glTexCoord3f(
826   - vertexTex[3][0],
827   - vertexTex[3][1],
828   - oriTex[2]
829   - );
830   - glVertex3f(
831   - vertexDrw[3][0],
832   - vertexDrw[3][1],
833   - oriDrw[2]
834   - );
835   - glEnd();
836   - glPopName();
837   - glPushName(HORIZONTAL);
838   - glBegin(GL_QUADS);
839   - glTexCoord3f(
840   - vertexTex[3][0],
841   - oriTex[1],
842   - vertexTex[3][2]
843   - );
844   - glVertex3f(
845   - vertexDrw[3][0],
846   - oriDrw[1],
847   - vertexDrw[3][2]
848   - );
849   - glTexCoord3f(
850   - vertexTex[2][0],
851   - oriTex[1],
852   - vertexTex[2][2]
853   - );
854   - glVertex3f(
855   - vertexDrw[2][0],
856   - oriDrw[1],
857   - vertexDrw[2][2]
858   - );
859   - glTexCoord3f(
860   - vertexTex[7][0],
861   - oriTex[1],
862   - vertexTex[7][2]
863   - );
864   - glVertex3f(
865   - vertexDrw[7][0],
866   - oriDrw[1],
867   - vertexDrw[7][2]
868   - );
869   - glTexCoord3f(
870   - vertexTex[6][0],
871   - oriTex[1],
872   - vertexTex[6][2]
873   - );
874   - glVertex3f(
875   - vertexDrw[6][0],
876   - oriDrw[1],
877   - vertexDrw[6][2]
878   - );
879   - glEnd();
880   - glPopName();
881   -}
882   -*/
883   -/*
884   -void
885   -renderScene()
886   - {
887   - glEnable(GL_TEXTURE_3D);
888   - glBindTexture(GL_TEXTURE_3D, texID);
889   - CHECK_OPENGL_ERROR
890   - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
891   - glMatrixMode(GL_PROJECTION);
892   - //glMatrixMode(GL_MODELVIEW);
893   - glLoadIdentity();
894   - glTranslatef(-0.4, -0.4, 0.4);
895   - //gluLookAt(0,0, -viewDistance, 0, 0, -1, 0, 1, 0);
896   - //gluLookAt(0,0, 0, 0, 0, 0, 0, 0, 0);
897   - glRotatef(-90, 1.0, 0.0, 0.0);
898   - glRotatef((float)tick/100.0, 1.0, 1.0, 1.0);
899   - CHECK_OPENGL_ERROR
900   - //glVertex3f(0.0, 0.0, 0.0);
901   - //glVertex3f(0.0, 1.0, 0.0);
902   - //glVertex3f(1.0, 1.0, 0.0);
903   - //glVertex3f(1.0, 0.0, 0.0);
904   - glBegin(GL_QUADS);
905   - for (int i = 0; i < 6; i++) {
906   - //first vertex
907   -// std::cout << "setting vertex 1 of face " << i
908   - << " vertex located at " <<
909   - "[" << vertex[faces[i][0]][0] << ","
910   - << vertex[faces[i][0]][1] << ","
911   - << vertex[faces[i][0]][2] << "]" << std::endl;//
912   - glTexCoord3f(vertex[faces[i][0]][0],
913   - vertex[faces[i][0]][1],
914   - vertex[faces[i][0]][2]);
915   -
916   - glVertex3f(vertex[faces[i][0]][0],
917   - vertex[faces[i][0]][1],
918   - vertex[faces[i][0]][2]);
919   -
920   - //second vertex
921   - glTexCoord3f(vertex[faces[i][1]][0],
922   - vertex[faces[i][1]][1],
923   - vertex[faces[i][1]][2]);
924   -
925   - glVertex3f(vertex[faces[i][1]][0],
926   - vertex[faces[i][1]][1],
927   - vertex[faces[i][1]][2]);
928   -
929   - //third vertex
930   - glTexCoord3f(vertex[faces[i][2]][0],
931   - vertex[faces[i][2]][1],
932   - vertex[faces[i][2]][2]);
933   -
934   - glVertex3f(vertex[faces[i][2]][0],
935   - vertex[faces[i][2]][1],
936   - vertex[faces[i][2]][2]);
937   -
938   - //fourth vertex
939   - glTexCoord3f(vertex[faces[i][3]][0],
940   - vertex[faces[i][3]][1],
941   - vertex[faces[i][3]][2]);
942   -
943   - glVertex3f(vertex[faces[i][3]][0],
944   - vertex[faces[i][3]][1],
945   - vertex[faces[i][3]][2]);
946   - }
947   - glEnd();
948   -
949   - CHECK_OPENGL_ERROR
950   - glutSwapBuffers();
951   - //glutPostRedisplay();
952   - }
953   -*/
cuda/cost.h
... ... @@ -7,8 +7,8 @@
7 7 #include <stdio.h>
8 8 #include "../visualization/colormap.h"
9 9  
10   -#define DIM_X 400
11   -#define DIM_Y 200
  10 +#define DIM_Y 10890
  11 +#define DIM_X 20
12 12 typedef unsigned char uchar;
13 13 //surface<void, 2> texOut; ///// maybe just do a normal array instead of a surface.
14 14 //we may not need a surface at all.
... ... @@ -17,6 +17,7 @@ texture&lt;uchar, cudaTextureType2D, cudaReadModeElementType&gt; texIn;
17 17 float *result;
18 18 float* v_dif;
19 19 cudaArray* srcArray;
  20 +bool testing = FALSE;
20 21  
21 22 inline void checkCUDAerrors(const char *msg)
22 23 {
... ... @@ -35,18 +36,20 @@ float get_sum(float *diff)
35 36 cublasHandle_t handle;
36 37 ret = cublasCreate(&handle);
37 38  
38   - ret = cublasSetVector(DIM_X*DIM_Y, sizeof(*diff), diff, 1, v_dif, 1);
39   - //float* out = (float*) malloc(sizeof(float));
  39 + ret = cublasSetVector(20*10, sizeof(*diff), diff, 1, v_dif, 1);
  40 + if(!testing){
  41 + stim::gpu2image<float>(v_dif, "sample0.bmp", 20,10,0,1);
  42 + testing = TRUE;
  43 + } //float* out = (float*) malloc(sizeof(float));
40 44 float out;
41   - ret = cublasSasum(handle, DIM_X*DIM_Y, v_dif, 1, &out);
  45 + ret = cublasSasum(handle, 20*10, v_dif, 1, &out);
42 46 cublasDestroy(handle);
43   - cudaFree(v_dif);
44 47 return out;
45 48 }
46 49  
47 50 __device__ float Template(int x)
48 51 {
49   - if(x < DIM_X/6 || x > DIM_X*5/6 || (x > DIM_X*2/6 && x < DIM_X*4/6)){
  52 + if(x < 20/6 || x > 20*5/6 || (x > 20*2/6 && x < 20*4/6)){
50 53 return 1.0;
51 54 }else{
52 55 return 0.0;
... ... @@ -62,11 +65,11 @@ void get_diff (float *result)
62 65 int y = threadIdx.y + blockIdx.y * blockDim.y;
63 66 int idx = y*DIM_X+x;
64 67  
65   - float valIn = tex2D(texIn, x, y);
66   - //float valIn = tex2D(texIn, x, y)/255.0;
  68 + //float valIn = tex2D(texIn, x, y);
  69 + float valIn = tex2D(texIn, x, y)/255.0;
67 70 float valTemp = Template(x);
68   - //result[idx] = abs(valIn-valTemp);
69   - result[idx] = abs(valIn);
  71 + result[idx] = abs(valIn-valTemp);
  72 + //result[idx] = abs(valTemp);
70 73 // #if __CUDA_ARCH__>=200
71 74 // printf("Value is : %f\n and the result is : %f\n", valIn, result[idx]);
72 75 // #endif
... ... @@ -95,7 +98,7 @@ void initArray(cudaGraphicsResource_t src)
95 98 );
96 99 cudaMalloc( (void**) &result, DIM_X*DIM_Y*sizeof(float));
97 100 checkCUDAerrors("Memory Allocation Issue 1");
98   - cudaMalloc((void **) &v_dif, DIM_X*DIM_Y*sizeof(*result));
  101 + cudaMalloc((void **) &v_dif, 20*10*sizeof(float));
99 102 checkCUDAerrors("Memory Allocation Issue 2");
100 103 //HANDLE_ERROR(
101 104 // cudaBindTextureToArray(texIn, ptr, &channelDesc)
... ... @@ -113,18 +116,35 @@ void cleanUP(cudaGraphicsResource_t src)
113 116 HANDLE_ERROR(
114 117 cudaGraphicsUnmapResources(1,&src)
115 118 );
  119 + HANDLE_ERROR(
  120 + cudaFree(v_dif)
  121 + );
116 122 }
117 123  
118 124 extern "C"
119   -float get_cost(cudaGraphicsResource_t src)
  125 +int get_cost(cudaGraphicsResource_t src)
120 126 {
  127 + float output[1089];
  128 + float mini = 10000000000000000.0;
  129 + int idx;
121 130 initArray(src);
122   - dim3 grid(400, 200);
  131 + dim3 grid(20, 10890);
123 132 dim3 block(1, 1);
124 133 //texIn.normalized = 1;
125 134 get_diff <<< grid, block >>> (result);
126   - stim::gpu2image<float>(result, "test2.bmp", 400,200,0,255);
127   - float output = get_sum(result);
  135 + stim::gpu2image<float>(result, "test.bmp", 20,10890,0,1);
  136 + for (int i = 0; i < 1089; i++){
  137 + output[i] = get_sum(result+(20*10*i));
  138 + if(output[i] < mini){
  139 + mini = output[i];
  140 + idx = i;
  141 + }
  142 + }
  143 + std::cout << output[0] << std::endl;
  144 + std::cout << output[100] << std::endl;
  145 + std::cout << output[500] << std::endl;
  146 + std::cout << output[1000] << std::endl;
  147 + std::cout << idx << std::endl;
128 148 cleanUP(src);
129   - return output;
  149 + return idx;
130 150 }
... ...
gl/gl_spider.h
... ... @@ -32,6 +32,7 @@ class gl_spider : public virtual gl_texture&lt;T&gt;
32 32 //mag[0] = length.
33 33 //mag[1] = width.
34 34 using gl_texture<T>::texID;
  35 + //float (*S)[][];
35 36 //using image_stack<T>::S;
36 37 cudaArray* c_Array;
37 38 //void** devPtr;
... ... @@ -89,13 +90,193 @@ class gl_spider : public virtual gl_texture&lt;T&gt;
89 90 // move to the new position
90 91 }
91 92 */
  93 +
  94 + void
  95 + GenerateFBO(unsigned int width, unsigned int height)
  96 + {
  97 + glGenFramebuffers(1, &fboID);
  98 + glBindFramebuffer(GL_FRAMEBUFFER, fboID);
  99 + int numChannels = 1;
  100 + unsigned char* texels = new unsigned char[width * height * numChannels];
  101 + glGenTextures(1, &texbufferID);
  102 + glBindTexture(GL_TEXTURE_2D, texbufferID);
  103 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  104 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  105 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  106 + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  107 + glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE,
  108 + width, height, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, texels);
  109 + delete[] texels;
  110 + glBindFramebuffer(GL_FRAMEBUFFER, 0);
  111 + glBindTexture(GL_TEXTURE_2D, 0);
  112 + }
  113 +
  114 + void
  115 + UpdateBuffer(float v_x, float v_y)
  116 + {
  117 + //std::cout << v_y << std::endl;
  118 + float len = 10.0;
  119 + stim::vec<float>p1;
  120 + stim::vec<float>p2;
  121 + stim::vec<float>p3;
  122 + stim::vec<float>p4;
  123 + p1 = hor.p(1,1);
  124 + p2 = hor.p(1,0);
  125 + p3 = hor.p(0,0);
  126 + p4 = hor.p(0,1);
  127 + glBegin(GL_QUADS);
  128 + glTexCoord3f(
  129 + p1[0],
  130 + p1[1],
  131 + p1[2]
  132 + );
  133 + //glVertex2f(0.0,0.0);
  134 + glVertex2f(v_x,v_y);
  135 + glTexCoord3f(
  136 + p2[0],
  137 + p2[1],
  138 + p2[2]
  139 + );
  140 + //glVertex2f(1.0, 0.0);
  141 + glVertex2f(v_x+len, v_y);
  142 + glTexCoord3f(
  143 + p3[0],
  144 + p3[1],
  145 + p3[2]
  146 + );
  147 + //glVertex2f(1.0, 2.0);
  148 + glVertex2f(v_x+len, v_y+len);
  149 + glTexCoord3f(
  150 + p4[0],
  151 + p4[1],
  152 + p4[2]
  153 + );
  154 + //glVertex2f(0.0, 2.0);
  155 + glVertex2f(v_x, v_y+len);
  156 + glEnd();
  157 + p1 = ver.p(1,1);
  158 + p2 = ver.p(1,0);
  159 + p3 = ver.p(0,0);
  160 + p4 = ver.p(0,1);
  161 + glBegin(GL_QUADS);
  162 + glTexCoord3f(
  163 + p1[0],
  164 + p1[1],
  165 + p1[2]
  166 + );
  167 + //glVertex2f(1.0, 0.0);
  168 + glVertex2f(v_x+len, v_y);
  169 + glTexCoord3f(
  170 + p2[0],
  171 + p2[1],
  172 + p2[2]
  173 + );
  174 + //glVertex2f(2.0, 0.0);
  175 + glVertex2f(v_x+2*len, v_y);
  176 + glTexCoord3f(
  177 + p3[0],
  178 + p3[1],
  179 + p3[2]
  180 + );
  181 + //glVertex2f(2.0, 2.0);
  182 + glVertex2f(v_x+2*len, v_y+len);
  183 + glTexCoord3f(
  184 + p4[0],
  185 + p4[1],
  186 + p4[2]
  187 + );
  188 + //glVertex2f(1.0, 2.0);
  189 + glVertex2f(v_x+len, v_y+len);
  190 + glEnd();
  191 + }
  192 +
  193 + void
  194 + Update(float v_x, float v_y, vec<float> dir)
  195 + {
  196 + vec<float> Y(1.0,0.0,0.0);
  197 + if(cos(Y.dot(dir))< 0.087){
  198 + Y[0] = 0.0; Y[1] = 1.0;}
  199 + hor = stim::rect<float>(magnitude, position, dir.norm(),
  200 + ((Y.cross(dir)).cross(dir)).norm());
  201 + ver = stim::rect<float>(magnitude, position, dir.norm(),
  202 + hor.n());
  203 + UpdateBuffer(v_x, v_y);
  204 + }
  205 +
  206 +
  207 + void
  208 + Sample(vec<float> in = (0,0,1), int numSamples = 1089, int solidAngle = M_PI/2)
  209 + {
  210 + GenerateFBO(20, numSamples*10);
  211 +
  212 + float samples[numSamples][3]; //Set up the variables
  213 + //necessary for sample generation
  214 + vec<float> d_s = in.cart2sph();
  215 + vec<float> temp;
  216 + int dim = (sqrt(numSamples)-1)/2;
  217 + std::cout << dim << std::endl;
  218 + float y_0 = 0.0;
  219 + float len = 10.0;
  220 + float p0 = M_PI/3;
  221 + float dt = solidAngle/(1.0 * dim);
  222 + float dp = p0/(1.0*dim);
  223 +
  224 +
  225 + glBindFramebuffer(GL_FRAMEBUFFER, fboID);//set up GL buffer
  226 + glFramebufferTexture2D(
  227 + GL_FRAMEBUFFER,
  228 + GL_COLOR_ATTACHMENT0,
  229 + GL_TEXTURE_2D,
  230 + texbufferID,
  231 + 0);
  232 + glBindFramebuffer(GL_FRAMEBUFFER, fboID);
  233 + GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT0};
  234 + glDrawBuffers(1, DrawBuffers);
  235 + glBindTexture(GL_TEXTURE_2D, texbufferID);
  236 + glClearColor(0,0,0,0);
  237 + glClear(GL_COLOR_BUFFER_BIT);
  238 + glMatrixMode(GL_PROJECTION);
  239 + glLoadIdentity();
  240 + glMatrixMode(GL_MODELVIEW);
  241 + glLoadIdentity();
  242 + glViewport(0,0,2.0*len, numSamples*len);
  243 + gluOrtho2D(0.0,2.0*len,0.0,numSamples*len);
  244 + glEnable(GL_TEXTURE_3D);
  245 + glBindTexture(GL_TEXTURE_3D, texID);
  246 +
  247 + //Loop over the samples
  248 + int idx;
  249 + for(int i = -dim; i <= dim; i++){
  250 + for(int j = -dim; j <= dim; j++){
  251 + //Create linear index
  252 + idx = (i+dim)*(dim*2+1) + (j+dim);
  253 + // std::cerr << i+dim << "," << j+dim << ":" << idx << std::endl;
  254 +
  255 + temp[0] = 1; //rotate vector
  256 + temp[1] = d_s[1]+dt*i;
  257 + temp[2] = d_s[2]+dp*j;
  258 +
  259 + temp = temp.sph2cart(); //back to cart
  260 + samples[idx][0] = temp[0]; //save sample vector
  261 + samples[idx][1] = temp[1];
  262 + samples[idx][2] = temp[2];
  263 +
  264 + Update(0.0, y_0+(idx)*10, temp);
  265 + }
  266 + }
  267 + //Finalize GL_buffer
  268 + glBindTexture(GL_TEXTURE_3D, 0);
  269 + glDisable(GL_TEXTURE_3D);
  270 + glBindFramebuffer(GL_FRAMEBUFFER,0);
  271 + glBindTexture(GL_TEXTURE_2D, 0);
  272 + }
  273 +
92 274 public:
93 275  
94 276 stim::rect<float> hor;
95 277 stim::rect<float> ver;
96 278  
97 279  
98   -
99 280 gl_spider
100 281 ()
101 282 {
... ... @@ -131,9 +312,10 @@ class gl_spider : public virtual gl_texture&lt;T&gt;
131 312 attachSpider(GLuint id)
132 313 {
133 314 texID = id;
134   - GenerateFBO(800,400);
  315 + Sample(direction);
  316 + //GenerateFBO(20,10000);
135 317 // Update();
136   - generateVectorField(direction, 25.0);
  318 + // generateVectorField(direction, 4.0);
137 319 }
138 320  
139 321 void
... ... @@ -146,44 +328,11 @@ class gl_spider : public virtual gl_texture&lt;T&gt;
146 328 ((Y.cross(direction)).cross(direction)).norm());
147 329 ver = stim::rect<float>(magnitude, position, direction.norm(),
148 330 hor.n());
149   - UpdateBuffer();
  331 + //UpdateBuffer();
  332 + generateVectorField(direction, 4.0);
150 333 }
151 334  
152   - void
153   - Update(float v_x, float v_y, vec<float> dir, float dim)
154   - {
155   - vec<float> Y(1.0,0.0,0.0);
156   - if(cos(Y.dot(dir))< 0.087){
157   - Y[0] = 0.0; Y[1] = 1.0;}
158   - hor = stim::rect<float>(magnitude, position, dir.norm(),
159   - ((Y.cross(dir)).cross(dir)).norm());
160   - ver = stim::rect<float>(magnitude, position, dir.norm(),
161   - hor.n());
162   - UpdateBuffer(v_x, v_y, dim);
163   - }
164 335  
165   - stim::vec<float>
166   - toSpherical(vec<float> in)
167   - {
168   - vec<float> out;
169   - out[0] = sqrt(pow(in[0],2) + pow(in[1],2) + pow(in[2],2));
170   - out[1] = atan(in[1]/in[0]);
171   - out[2] = acos(in[2]/out[0]);
172   - return out;
173   - }
174   -
175   - stim::vec<float>
176   - toCartesian(vec<float> in)
177   - {
178   - vec<float> out;
179   - out[0] = cos(in[1])*sin(in[2]);
180   - out[1] = sin(in[1])*sin(in[2]);
181   - out[2] = cos(in[2]);
182   - return out;
183   - }
184   -
185   -
186   -
187 336 vec<float>
188 337 getPosition()
189 338 {
... ... @@ -355,114 +504,11 @@ class gl_spider : public virtual gl_texture&lt;T&gt;
355 504 glBindTexture(GL_TEXTURE_2D, 0);
356 505 }
357 506  
358   - void
359   - UpdateBuffer(float v_x, float v_y, float len)
360   - {
361   - //std::cout << v_x << "," << v_y << std::endl;
362   - //float len = dim;
363   - stim::vec<float>p1;
364   - stim::vec<float>p2;
365   - stim::vec<float>p3;
366   - stim::vec<float>p4;
367   - glBindFramebuffer(GL_FRAMEBUFFER, fboID);
368   - glFramebufferTexture2D(
369   - GL_FRAMEBUFFER,
370   - GL_COLOR_ATTACHMENT0,
371   - GL_TEXTURE_2D,
372   - texbufferID,
373   - 0);
374   - glBindFramebuffer(GL_FRAMEBUFFER, fboID);
375   - GLenum DrawBuffers[1] = {GL_COLOR_ATTACHMENT0};
376   - glDrawBuffers(1, DrawBuffers);
377   - glBindTexture(GL_TEXTURE_2D, texbufferID);
378   - //glClearColor(0,0,0,0);
379   - //glClear(GL_COLOR_BUFFER_BIT);
380   - glMatrixMode(GL_PROJECTION);
381   - glLoadIdentity();
382   - glMatrixMode(GL_MODELVIEW);
383   - glLoadIdentity();
384   - glViewport(0,0,800,400);
385   - gluOrtho2D(0.0,8.0,0.0,4.0);
386   - glEnable(GL_TEXTURE_3D);
387   - glBindTexture(GL_TEXTURE_3D, texID);
388   - p1 = hor.p(1,1);
389   - p2 = hor.p(1,0);
390   - p3 = hor.p(0,0);
391   - p4 = hor.p(0,1);
392   - glBegin(GL_QUADS);
393   - glTexCoord3f(
394   - p1[0],
395   - p1[1],
396   - p1[2]
397   - );
398   - //glVertex2f(0.0,0.0);
399   - glVertex2f(v_x,v_y);
400   - glTexCoord3f(
401   - p2[0],
402   - p2[1],
403   - p2[2]
404   - );
405   - //glVertex2f(1.0, 0.0);
406   - glVertex2f(v_x+len, v_y);
407   - glTexCoord3f(
408   - p3[0],
409   - p3[1],
410   - p3[2]
411   - );
412   - //glVertex2f(1.0, 2.0);
413   - glVertex2f(v_x+len, v_y+len);
414   - glTexCoord3f(
415   - p4[0],
416   - p4[1],
417   - p4[2]
418   - );
419   - //glVertex2f(0.0, 2.0);
420   - glVertex2f(v_x, v_y+len);
421   - glEnd();
422   - p1 = ver.p(1,1);
423   - p2 = ver.p(1,0);
424   - p3 = ver.p(0,0);
425   - p4 = ver.p(0,1);
426   - glBegin(GL_QUADS);
427   - glTexCoord3f(
428   - p1[0],
429   - p1[1],
430   - p1[2]
431   - );
432   - //glVertex2f(1.0, 0.0);
433   - glVertex2f(v_x+len, v_y);
434   - glTexCoord3f(
435   - p2[0],
436   - p2[1],
437   - p2[2]
438   - );
439   - //glVertex2f(2.0, 0.0);
440   - glVertex2f(v_x+2*len, v_y);
441   - glTexCoord3f(
442   - p3[0],
443   - p3[1],
444   - p3[2]
445   - );
446   - //glVertex2f(2.0, 2.0);
447   - glVertex2f(v_x+2*len, v_y+len);
448   - glTexCoord3f(
449   - p4[0],
450   - p4[1],
451   - p4[2]
452   - );
453   - //glVertex2f(1.0, 2.0);
454   - glVertex2f(v_x+len, v_y+len);
455   - glEnd();
456   - glBindTexture(GL_TEXTURE_3D, 0);
457   - glDisable(GL_TEXTURE_3D);
458   - glBindFramebuffer(GL_FRAMEBUFFER,0);
459   - glBindTexture(GL_TEXTURE_2D, 0);
460   - }
461 507  
462 508 void
463 509 generateVectorField(stim::vec<float> d, float dim)
464 510 {
465   - vec<float> d_s = toSpherical(d);
  511 + vec<float> d_s = d.cart2sph();
466 512 vec<float> temp;
467 513 float Dim = (float) dim;
468 514 float y_0 = 0.0;
... ... @@ -480,40 +526,23 @@ class gl_spider : public virtual gl_texture&lt;T&gt;
480 526 temp[0] = 1;
481 527 temp[1] = d_s[1]+dt*i;
482 528 temp[2] = d_s[2]+dp*j;
483   - temp = toCartesian(temp);
484   - //std::cout << i <<"," << j << std::endl;
485   - Update(x_0+2.0*(i+dim)*len, y_0+(j+dim)*len, temp, len);
  529 + temp = temp.sph2cart();
  530 + Update(x_0+2.0*(i+dim)*len, y_0+(j+dim)*len, temp);
486 531 }
487 532 }
488 533  
489 534 }
490 535  
491 536  
492   - void
493   - GenerateFBO(unsigned int width, unsigned int height)
494   - {
495   - glGenFramebuffers(1, &fboID);
496   - glBindFramebuffer(GL_FRAMEBUFFER, fboID);
497   - int numChannels = 1;
498   - unsigned char* texels = new unsigned char[width * height * numChannels];
499   - glGenTextures(1, &texbufferID);
500   - glBindTexture(GL_TEXTURE_2D, texbufferID);
501   - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
502   - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
503   - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
504   - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
505   - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE,
506   - width, height, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, texels);
507   - delete[] texels;
508   - glBindFramebuffer(GL_FRAMEBUFFER, 0);
509   - glBindTexture(GL_TEXTURE_2D, 0);
510   - }
511 537  
512 538  
513 539 void
514 540 initCuda()
515 541 {
516 542 stim::cudaSetDevice();
  543 + GLint max;
  544 + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max);
  545 + std::cout << max << std::endl;
517 546 }
518 547  
519 548 void
... ... @@ -538,11 +567,11 @@ class gl_spider : public virtual gl_texture&lt;T&gt;
538 567 }
539 568  
540 569  
541   - float
  570 + int
542 571 getCost()
543 572 {
544 573 createResource();
545   - float cost = get_cost(resource);
  574 + int cost = get_cost(resource);
546 575 destroyResource();
547 576 return cost;
548 577 }
... ...
stim deleted
1   -Subproject commit 1a456186c7c5524468045633d90e2b32063b08d3