Full Code of Immediate-Mode-UI/Nuklear for AI

master 9c24f9c2b943 cached
191 files
4.4 MB
1.2M tokens
6116 symbols
1 requests
Download .txt
Showing preview only (4,689K chars total). Download the full file or copy to clipboard to get everything.
Repository: Immediate-Mode-UI/Nuklear
Branch: master
Commit: 9c24f9c2b943
Files: 191
Total size: 4.4 MB

Directory structure:
gitextract_10wk8iq7/

├── .Doxyfile
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── ci_compile_sources.sh
│   └── workflows/
│       ├── ccpp.yml
│       ├── create-tag.yml
│       └── docs.yml
├── .gitignore
├── LICENSE
├── Makefile
├── Readme.md
├── clib.json
├── demo/
│   ├── allegro5/
│   │   ├── KeyboardHandleriOS.h
│   │   ├── KeyboardHandleriOS.m
│   │   ├── Makefile
│   │   ├── Readme.md
│   │   ├── main.c
│   │   └── nuklear_allegro5.h
│   ├── common/
│   │   ├── calculator.c
│   │   ├── canvas.c
│   │   ├── file_browser.c
│   │   ├── filebrowser/
│   │   │   └── stb_image.h
│   │   ├── node_editor.c
│   │   ├── overview.c
│   │   ├── style.c
│   │   └── style_configurator.c
│   ├── d3d11/
│   │   ├── build.bat
│   │   ├── main.c
│   │   ├── nuklear_d3d11.h
│   │   ├── nuklear_d3d11.hlsl
│   │   ├── nuklear_d3d11_pixel_shader.h
│   │   └── nuklear_d3d11_vertex_shader.h
│   ├── d3d12/
│   │   ├── build.bat
│   │   ├── main.c
│   │   ├── nuklear_d3d12.h
│   │   ├── nuklear_d3d12.hlsl
│   │   ├── nuklear_d3d12_pixel_shader.h
│   │   └── nuklear_d3d12_vertex_shader.h
│   ├── d3d9/
│   │   ├── build.bat
│   │   ├── main.c
│   │   └── nuklear_d3d9.h
│   ├── gdi/
│   │   ├── build.bat
│   │   ├── main.c
│   │   └── nuklear_gdi.h
│   ├── gdi_native_nuklear/
│   │   ├── build.bat
│   │   ├── main.c
│   │   ├── nuklear_gdi.h
│   │   └── window.h
│   ├── gdip/
│   │   ├── build.bat
│   │   ├── main.c
│   │   └── nuklear_gdip.h
│   ├── glfw_opengl2/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_glfw_gl2.h
│   ├── glfw_opengl3/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_glfw_gl3.h
│   ├── glfw_opengl4/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_glfw_gl4.h
│   ├── glfw_vulkan/
│   │   ├── .clang-format
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── main.c
│   │   ├── nuklear_glfw_vulkan.h
│   │   ├── shaders/
│   │   │   ├── demo.frag
│   │   │   └── demo.vert
│   │   └── src/
│   │       ├── Makefile
│   │       ├── README.md
│   │       ├── nuklear_glfw_vulkan.in.h
│   │       └── nuklearshaders/
│   │           ├── nuklear.frag
│   │           └── nuklear.vert
│   ├── rawfb/
│   │   ├── nuklear_rawfb.h
│   │   ├── sdl/
│   │   │   ├── Makefile
│   │   │   └── main.c
│   │   ├── wayland/
│   │   │   ├── .gitignore
│   │   │   ├── Makefile
│   │   │   └── main.c
│   │   └── x11/
│   │       ├── Makefile
│   │       ├── main.c
│   │       └── nuklear_xlib.h
│   ├── sdl3_renderer/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_sdl3_renderer.h
│   ├── sdl_opengl2/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_sdl_gl2.h
│   ├── sdl_opengl3/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_sdl_gl3.h
│   ├── sdl_opengles2/
│   │   ├── Makefile
│   │   ├── Readme.md
│   │   ├── main.c
│   │   └── nuklear_sdl_gles2.h
│   ├── sdl_renderer/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_sdl_renderer.h
│   ├── sdl_vulkan/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── main.c
│   │   ├── nuklear_sdl_vulkan.h
│   │   ├── shaders/
│   │   │   ├── demo.frag
│   │   │   └── demo.vert
│   │   └── src/
│   │       ├── Makefile
│   │       ├── README.md
│   │       ├── nuklear_sdl_vulkan.in.h
│   │       └── nuklearshaders/
│   │           ├── nuklear.frag
│   │           └── nuklear.vert
│   ├── sfml_opengl2/
│   │   ├── Makefile
│   │   ├── Readme.md
│   │   ├── main.cpp
│   │   └── nuklear_sfml_gl2.h
│   ├── sfml_opengl3/
│   │   ├── Makefile
│   │   ├── Readme.md
│   │   ├── main.cpp
│   │   └── nuklear_sfml_gl3.h
│   ├── x11/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_xlib.h
│   ├── x11_opengl2/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_xlib_gl2.h
│   ├── x11_opengl3/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_xlib_gl3.h
│   └── xcb_cairo/
│       ├── Makefile
│       ├── main.c
│       └── nuklear_xcb.h
├── example/
│   ├── Makefile
│   ├── canvas.c
│   ├── extended.c
│   ├── file_browser.c
│   ├── skinning.c
│   └── stb_image.h
├── nuklear.h
└── src/
    ├── CHANGELOG
    ├── CREDITS
    ├── HEADER.md
    ├── LICENSE
    ├── Readme.md
    ├── build.py
    ├── nuklear.h
    ├── nuklear_9slice.c
    ├── nuklear_buffer.c
    ├── nuklear_button.c
    ├── nuklear_chart.c
    ├── nuklear_color.c
    ├── nuklear_color_picker.c
    ├── nuklear_combo.c
    ├── nuklear_context.c
    ├── nuklear_contextual.c
    ├── nuklear_draw.c
    ├── nuklear_edit.c
    ├── nuklear_font.c
    ├── nuklear_group.c
    ├── nuklear_image.c
    ├── nuklear_input.c
    ├── nuklear_internal.h
    ├── nuklear_knob.c
    ├── nuklear_layout.c
    ├── nuklear_list_view.c
    ├── nuklear_math.c
    ├── nuklear_menu.c
    ├── nuklear_page_element.c
    ├── nuklear_panel.c
    ├── nuklear_pool.c
    ├── nuklear_popup.c
    ├── nuklear_progress.c
    ├── nuklear_property.c
    ├── nuklear_scrollbar.c
    ├── nuklear_selectable.c
    ├── nuklear_slider.c
    ├── nuklear_string.c
    ├── nuklear_style.c
    ├── nuklear_table.c
    ├── nuklear_text.c
    ├── nuklear_text_editor.c
    ├── nuklear_toggle.c
    ├── nuklear_tooltip.c
    ├── nuklear_tree.c
    ├── nuklear_utf8.c
    ├── nuklear_util.c
    ├── nuklear_vertex.c
    ├── nuklear_widget.c
    ├── nuklear_window.c
    ├── paq.bat
    ├── paq.sh
    ├── stb_rect_pack.h
    └── stb_truetype.h

================================================
FILE CONTENTS
================================================

================================================
FILE: .Doxyfile
================================================
# Doxyfile 1.9.4

# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
#
# All text after a double hash (##) is considered a comment and is placed in
# front of the TAG it is preceding.
#
# All text after a single hash (#) is considered a comment and will be ignored.
# The format is:
# TAG = value [value, ...]
# For lists, items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (\" \").
#
# Note:
#
# Use doxygen to compare the used configuration file with the template
# configuration file:
# doxygen -x [configFile]
# Use doxygen to compare the used configuration file with the template
# configuration file without replacing the environment variables:
# doxygen -x_noenv [configFile]

#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------

# This tag specifies the encoding used for all characters in the configuration
# file that follow. The default is UTF-8 which is also the encoding used for all
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
# iconv built into libc) for the transcoding. See
# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
# The default value is: UTF-8.

DOXYFILE_ENCODING      = UTF-8

# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
# double-quotes, unless you are using Doxywizard) that should identify the
# project for which the documentation is generated. This name is used in the
# title of most generated pages and in a few other places.
# The default value is: My Project.

PROJECT_NAME           = "Nuklear"

# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER         =

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.

PROJECT_BRIEF          = "This is a minimal-state, immediate-mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed as a simple embeddable user interface for application and does not have any dependencies, a default render backend or OS window/input handling but instead provides a highly modular, library-based approach, with simple input state for input and draw commands describing primitive shapes as output. So instead of providing a layered library that tries to abstract over a number of platform and render backends, it focuses only on the actual UI."

# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.

PROJECT_LOGO           =

# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.

OUTPUT_DIRECTORY       = ./doc

# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
# sub-directories (in 2 levels) under the output directory of each output format
# and will distribute the generated files over these directories. Enabling this
# option can be useful when feeding doxygen a huge amount of source files, where
# putting all generated files in the same directory would otherwise causes
# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to
# control the number of sub-directories.
# The default value is: NO.

CREATE_SUBDIRS         = NO

# Controls the number of sub-directories that will be created when
# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every
# level increment doubles the number of directories, resulting in 4096
# directories at level 8 which is the default and also the maximum value. The
# sub-directories are organized in 2 levels, the first level always has a fixed
# numer of 16 directories.
# Minimum value: 0, maximum value: 8, default value: 8.
# This tag requires that the tag CREATE_SUBDIRS is set to YES.

CREATE_SUBDIRS_LEVEL   = 8

# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
# characters to appear in the names of generated files. If set to NO, non-ASCII
# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
# U+3044.
# The default value is: NO.

ALLOW_UNICODE_NAMES    = NO

# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian,
# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English
# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek,
# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with
# English messages), Korean, Korean-en (Korean with English messages), Latvian,
# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese,
# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish,
# Swedish, Turkish, Ukrainian and Vietnamese.
# The default value is: English.

OUTPUT_LANGUAGE        = English

# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
# The default value is: YES.

BRIEF_MEMBER_DESC      = YES

# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
# description of a member or function before the detailed description
#
# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
# The default value is: YES.

REPEAT_BRIEF           = YES

# This tag implements a quasi-intelligent brief description abbreviator that is
# used to form the text in various listings. Each string in this list, if found
# as the leading text of the brief description, will be stripped from the text
# and the result, after processing the whole list, is used as the annotated
# text. Otherwise, the brief description is used as-is. If left blank, the
# following values are used ($name is automatically replaced with the name of
# the entity):The $name class, The $name widget, The $name file, is, provides,
# specifies, contains, represents, a, an and the.

ABBREVIATE_BRIEF       = "The $name class" \
                         "The $name widget" \
                         "The $name file" \
                         is \
                         provides \
                         specifies \
                         contains \
                         represents \
                         a \
                         an \
                         the

# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# doxygen will generate a detailed section even if there is only a brief
# description.
# The default value is: NO.

ALWAYS_DETAILED_SEC    = NO

# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
# The default value is: NO.

INLINE_INHERITED_MEMB  = NO

# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
# before files name in the file list and in the header files. If set to NO the
# shortest path that makes the file name unique will be used
# The default value is: YES.

FULL_PATH_NAMES        = YES

# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
# Stripping is only done if one of the specified strings matches the left-hand
# part of the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the path to
# strip.
#
# Note that you can specify absolute paths here, but also relative paths, which
# will be relative from the directory where doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.

STRIP_FROM_PATH        =

# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
# header file to include in order to use a class. If left blank only the name of
# the header file containing the class definition is used. Otherwise one should
# specify the list of include paths that are normally passed to the compiler
# using the -I flag.

STRIP_FROM_INC_PATH    =

# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
# less readable) file names. This can be useful is your file systems doesn't
# support long names like on DOS, Mac, or CD-ROM.
# The default value is: NO.

SHORT_NAMES            = NO

# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
# first line (until the first dot) of a Javadoc-style comment as the brief
# description. If set to NO, the Javadoc-style will behave just like regular Qt-
# style comments (thus requiring an explicit @brief command for a brief
# description.)
# The default value is: NO.

JAVADOC_AUTOBRIEF      = YES

# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
# such as
# /***************
# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
# Javadoc-style will behave just like regular comments and it will not be
# interpreted by doxygen.
# The default value is: NO.

JAVADOC_BANNER         = NO

# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
# requiring an explicit \brief command for a brief description.)
# The default value is: NO.

QT_AUTOBRIEF           = YES

# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
# a brief description. This used to be the default behavior. The new default is
# to treat a multi-line C++ comment block as a detailed description. Set this
# tag to YES if you prefer the old behavior instead.
#
# Note that setting this tag to YES also means that rational rose comments are
# not recognized any more.
# The default value is: NO.

MULTILINE_CPP_IS_BRIEF = YES

# By default Python docstrings are displayed as preformatted text and doxygen's
# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
# doxygen's special commands can be used and the contents of the docstring
# documentation blocks is shown as doxygen documentation.
# The default value is: YES.

PYTHON_DOCSTRING       = YES

# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
# documentation from any documented member that it re-implements.
# The default value is: YES.

INHERIT_DOCS           = YES

# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
# page for each member. If set to NO, the documentation of a member will be part
# of the file/class/namespace that contains it.
# The default value is: NO.

SEPARATE_MEMBER_PAGES  = NO

# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
# uses this value to replace tabs by spaces in code fragments.
# Minimum value: 1, maximum value: 16, default value: 4.

TAB_SIZE               = 4

# This tag can be used to specify a number of aliases that act as commands in
# the documentation. An alias has the form:
# name=value
# For example adding
# "sideeffect=@par Side Effects:^^"
# will allow you to put the command \sideeffect (or @sideeffect) in the
# documentation, which will result in a user-defined paragraph with heading
# "Side Effects:". Note that you cannot put \n's in the value part of an alias
# to insert newlines (in the resulting output). You can put ^^ in the value part
# of an alias to insert a newline as if a physical newline was in the original
# file. When you need a literal { or } or , in the value part of an alias you
# have to escape them by means of a backslash (\), this can lead to conflicts
# with the commands \{ and \} for these it is advised to use the version @{ and
# @} or use a double escape (\\{ and \\})

ALIASES                =

# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
# instance, some of the names that are used will be different. The list of all
# members will be omitted, etc.
# The default value is: NO.

OPTIMIZE_OUTPUT_FOR_C  = YES

# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
# Python sources only. Doxygen will then generate output that is more tailored
# for that language. For instance, namespaces will be presented as packages,
# qualified scopes will look different, etc.
# The default value is: NO.

OPTIMIZE_OUTPUT_JAVA   = NO

# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources. Doxygen will then generate output that is tailored for Fortran.
# The default value is: NO.

OPTIMIZE_FOR_FORTRAN   = NO

# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for VHDL.
# The default value is: NO.

OPTIMIZE_OUTPUT_VHDL   = NO

# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
# sources only. Doxygen will then generate output that is more tailored for that
# language. For instance, namespaces will be presented as modules, types will be
# separated into more groups, etc.
# The default value is: NO.

OPTIMIZE_OUTPUT_SLICE  = NO

# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice,
# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
# tries to guess whether the code is fixed or free formatted code, this is the
# default for Fortran type files). For instance to make doxygen treat .inc files
# as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C.
#
# Note: For files without extension you can use no_extension as a placeholder.
#
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen. When specifying no_extension you should add
# * to the FILE_PATTERNS.
#
# Note see also the list of default file extension mappings.

EXTENSION_MAPPING      =

# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
# documentation. See https://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by doxygen, so you can
# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
# case of backward compatibilities issues.
# The default value is: YES.

MARKDOWN_SUPPORT       = YES

# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
# to that level are automatically included in the table of contents, even if
# they do not have an id attribute.
# Note: This feature currently applies only to Markdown headings.
# Minimum value: 0, maximum value: 99, default value: 5.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.

TOC_INCLUDE_HEADINGS   = 5

# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
# be prevented in individual cases by putting a % sign in front of the word or
# globally by setting AUTOLINK_SUPPORT to NO.
# The default value is: YES.

AUTOLINK_SUPPORT       = YES

# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should set this
# tag to YES in order to let doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string);
# versus func(std::string) {}). This also make the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
# The default value is: NO.

BUILTIN_STL_SUPPORT    = NO

# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
# The default value is: NO.

CPP_CLI_SUPPORT        = NO

# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen
# will parse them like normal C++ but will assume all classes use public instead
# of private inheritance when no explicit protection keyword is present.
# The default value is: NO.

SIP_SUPPORT            = NO

# For Microsoft's IDL there are propget and propput attributes to indicate
# getter and setter methods for a property. Setting this option to YES will make
# doxygen to replace the get and set methods by a property in the documentation.
# This will only work if the methods are indeed getting or setting a simple
# type. If this is not the case, or you want to show the methods anyway, you
# should set this option to NO.
# The default value is: YES.

IDL_PROPERTY_SUPPORT   = YES

# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
# The default value is: NO.

DISTRIBUTE_GROUP_DOC   = NO

# If one adds a struct or class to a group and this option is enabled, then also
# any nested class or struct is added to the same group. By default this option
# is disabled and one has to add nested compounds explicitly via \ingroup.
# The default value is: NO.

GROUP_NESTED_COMPOUNDS = NO

# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
# type (e.g. under the Public Functions section). Set it to NO to prevent
# subgrouping. Alternatively, this can be done per class using the
# \nosubgrouping command.
# The default value is: YES.

SUBGROUPING            = YES

# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
# are shown inside the group in which they are included (e.g. using \ingroup)
# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
# and RTF).
#
# Note that this feature does not work in combination with
# SEPARATE_MEMBER_PAGES.
# The default value is: NO.

INLINE_GROUPED_CLASSES = NO

# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
# with only public data fields or simple typedef fields will be shown inline in
# the documentation of the scope in which they are defined (i.e. file,
# namespace, or group documentation), provided this scope is documented. If set
# to NO, structs, classes, and unions are shown on a separate page (for HTML and
# Man pages) or section (for LaTeX and RTF).
# The default value is: NO.

INLINE_SIMPLE_STRUCTS  = NO

# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
# enum is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
# with name TypeT. When disabled the typedef will appear as a member of a file,
# namespace, or class. And the struct will be named TypeS. This can typically be
# useful for C code in case the coding convention dictates that all compound
# types are typedef'ed and only the typedef is referenced, never the tag name.
# The default value is: NO.

TYPEDEF_HIDES_STRUCT   = NO

# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
# cache is used to resolve symbols given their name and scope. Since this can be
# an expensive process and often the same symbol appears multiple times in the
# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
# doxygen will become slower. If the cache is too large, memory is wasted. The
# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
# symbols. At the end of a run doxygen will report the cache usage and suggest
# the optimal cache size from a speed point of view.
# Minimum value: 0, maximum value: 9, default value: 0.

LOOKUP_CACHE_SIZE      = 0

# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use
# during processing. When set to 0 doxygen will based this on the number of
# cores available in the system. You can set it explicitly to a value larger
# than 0 to get more control over the balance between CPU load and processing
# speed. At this moment only the input processing can be done using multiple
# threads. Since this is still an experimental feature the default is set to 1,
# which effectively disables parallel processing. Please report any issues you
# encounter. Generating dot graphs in parallel is controlled by the
# DOT_NUM_THREADS setting.
# Minimum value: 0, maximum value: 32, default value: 1.

NUM_PROC_THREADS       = 0

#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------

# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
# documentation are documented, even if no documentation was available. Private
# class members and static file members will be hidden unless the
# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
# Note: This will also disable the warnings about undocumented members that are
# normally produced when WARNINGS is set to YES.
# The default value is: NO.

EXTRACT_ALL            = NO

# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
# be included in the documentation.
# The default value is: NO.

EXTRACT_PRIVATE        = NO

# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
# methods of a class will be included in the documentation.
# The default value is: NO.

EXTRACT_PRIV_VIRTUAL   = NO

# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
# scope will be included in the documentation.
# The default value is: NO.

EXTRACT_PACKAGE        = NO

# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
# included in the documentation.
# The default value is: NO.

EXTRACT_STATIC         = YES

# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
# locally in source files will be included in the documentation. If set to NO,
# only classes defined in header files are included. Does not have any effect
# for Java sources.
# The default value is: YES.

EXTRACT_LOCAL_CLASSES  = YES

# This flag is only useful for Objective-C code. If set to YES, local methods,
# which are defined in the implementation section but not in the interface are
# included in the documentation. If set to NO, only methods in the interface are
# included.
# The default value is: NO.

EXTRACT_LOCAL_METHODS  = NO

# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base name of
# the file that contains the anonymous namespace. By default anonymous namespace
# are hidden.
# The default value is: NO.

EXTRACT_ANON_NSPACES   = NO

# If this flag is set to YES, the name of an unnamed parameter in a declaration
# will be determined by the corresponding definition. By default unnamed
# parameters remain unnamed in the output.
# The default value is: YES.

RESOLVE_UNNAMED_PARAMS = YES

# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
# undocumented members inside documented classes or files. If set to NO these
# members will be included in the various overviews, but no documentation
# section is generated. This option has no effect if EXTRACT_ALL is enabled.
# The default value is: NO.

HIDE_UNDOC_MEMBERS     = NO

# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy. If set
# to NO, these classes will be included in the various overviews. This option
# has no effect if EXTRACT_ALL is enabled.
# The default value is: NO.

HIDE_UNDOC_CLASSES     = NO

# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
# declarations. If set to NO, these declarations will be included in the
# documentation.
# The default value is: NO.

HIDE_FRIEND_COMPOUNDS  = NO

# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
# documentation blocks found inside the body of a function. If set to NO, these
# blocks will be appended to the function's detailed documentation block.
# The default value is: NO.

HIDE_IN_BODY_DOCS      = NO

# The INTERNAL_DOCS tag determines if documentation that is typed after a
# \internal command is included. If the tag is set to NO then the documentation
# will be excluded. Set it to YES to include the internal documentation.
# The default value is: NO.

INTERNAL_DOCS          = NO

# With the correct setting of option CASE_SENSE_NAMES doxygen will better be
# able to match the capabilities of the underlying filesystem. In case the
# filesystem is case sensitive (i.e. it supports files in the same directory
# whose names only differ in casing), the option must be set to YES to properly
# deal with such files in case they appear in the input. For filesystems that
# are not case sensitive the option should be set to NO to properly deal with
# output files written for symbols that only differ in casing, such as for two
# classes, one named CLASS and the other named Class, and to also support
# references to files without having to specify the exact matching casing. On
# Windows (including Cygwin) and MacOS, users should typically set this option
# to NO, whereas on Linux or other Unix flavors it should typically be set to
# YES.
# The default value is: system dependent.

CASE_SENSE_NAMES       = YES

# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
# their full class and namespace scopes in the documentation. If set to YES, the
# scope will be hidden.
# The default value is: NO.

HIDE_SCOPE_NAMES       = NO

# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
# append additional text to a page's title, such as Class Reference. If set to
# YES the compound reference will be hidden.
# The default value is: NO.

HIDE_COMPOUND_REFERENCE= NO

# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class
# will show which file needs to be included to use the class.
# The default value is: YES.

SHOW_HEADERFILE        = YES

# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
# the files that are included by a file in the documentation of that file.
# The default value is: YES.

SHOW_INCLUDE_FILES     = YES

# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
# grouped member an include statement to the documentation, telling the reader
# which file to include in order to use the member.
# The default value is: NO.

SHOW_GROUPED_MEMB_INC  = NO

# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
# files with double quotes in the documentation rather than with sharp brackets.
# The default value is: NO.

FORCE_LOCAL_INCLUDES   = NO

# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
# documentation for inline members.
# The default value is: YES.

INLINE_INFO            = YES

# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
# (detailed) documentation of file and class members alphabetically by member
# name. If set to NO, the members will appear in declaration order.
# The default value is: YES.

SORT_MEMBER_DOCS       = YES

# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
# descriptions of file, namespace and class members alphabetically by member
# name. If set to NO, the members will appear in declaration order. Note that
# this will also influence the order of the classes in the class list.
# The default value is: NO.

SORT_BRIEF_DOCS        = NO

# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
# (brief and detailed) documentation of class members so that constructors and
# destructors are listed first. If set to NO the constructors will appear in the
# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
# member documentation.
# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
# detailed member documentation.
# The default value is: NO.

SORT_MEMBERS_CTORS_1ST = NO

# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
# of group names into alphabetical order. If set to NO the group names will
# appear in their defined order.
# The default value is: NO.

SORT_GROUP_NAMES       = NO

# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
# fully-qualified names, including namespaces. If set to NO, the class list will
# be sorted only by class name, not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
# Note: This option applies only to the class list, not to the alphabetical
# list.
# The default value is: NO.

SORT_BY_SCOPE_NAME     = NO

# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
# type resolution of all parameters of a function it will reject a match between
# the prototype and the implementation of a member function even if there is
# only one candidate or it is obvious which candidate to choose by doing a
# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
# accept a match between prototype and implementation in such cases.
# The default value is: NO.

STRICT_PROTO_MATCHING  = NO

# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
# list. This list is created by putting \todo commands in the documentation.
# The default value is: YES.

GENERATE_TODOLIST      = YES

# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
# list. This list is created by putting \test commands in the documentation.
# The default value is: YES.

GENERATE_TESTLIST      = YES

# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
# list. This list is created by putting \bug commands in the documentation.
# The default value is: YES.

GENERATE_BUGLIST       = YES

# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
# the deprecated list. This list is created by putting \deprecated commands in
# the documentation.
# The default value is: YES.

GENERATE_DEPRECATEDLIST= YES

# The ENABLED_SECTIONS tag can be used to enable conditional documentation
# sections, marked by \if <section_label> ... \endif and \cond <section_label>
# ... \endcond blocks.

ENABLED_SECTIONS       =

# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
# initial value of a variable or macro / define can have for it to appear in the
# documentation. If the initializer consists of more lines than specified here
# it will be hidden. Use a value of 0 to hide initializers completely. The
# appearance of the value of individual variables and macros / defines can be
# controlled using \showinitializer or \hideinitializer command in the
# documentation regardless of this setting.
# Minimum value: 0, maximum value: 10000, default value: 30.

MAX_INITIALIZER_LINES  = 30

# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
# the bottom of the documentation of classes and structs. If set to YES, the
# list will mention the files that were used to generate the documentation.
# The default value is: YES.

SHOW_USED_FILES        = YES

# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
# will remove the Files entry from the Quick Index and from the Folder Tree View
# (if specified).
# The default value is: YES.

SHOW_FILES             = YES

# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
# page. This will remove the Namespaces entry from the Quick Index and from the
# Folder Tree View (if specified).
# The default value is: YES.

SHOW_NAMESPACES        = YES

# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
# popen()) the command command input-file, where command is the value of the
# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
# by doxygen. Whatever the program writes to standard output is used as the file
# version. For an example see the documentation.

FILE_VERSION_FILTER    =

# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option. You can
# optionally specify a file name after the option, if omitted DoxygenLayout.xml
# will be used as the name of the layout file. See also section "Changing the
# layout of pages" for information.
#
# Note that if you run doxygen from a directory containing a file called
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
# tag is left empty.

LAYOUT_FILE            =

# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
# the reference definitions. This must be a list of .bib files. The .bib
# extension is automatically appended if omitted. This requires the bibtex tool
# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
# For LaTeX the style of the bibliography can be controlled using
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
# search path. See also \cite for info how to create references.

CITE_BIB_FILES         =

#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------

# The QUIET tag can be used to turn on/off the messages that are generated to
# standard output by doxygen. If QUIET is set to YES this implies that the
# messages are off.
# The default value is: NO.

QUIET                  = NO

# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
# this implies that the warnings are on.
#
# Tip: Turn warnings on while writing the documentation.
# The default value is: YES.

WARNINGS               = YES

# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: YES.

WARN_IF_UNDOCUMENTED   = YES

# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as documenting some parameters in
# a documented function twice, or documenting parameters that don't exist or
# using markup commands wrongly.
# The default value is: YES.

WARN_IF_DOC_ERROR      = YES

# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete
# function parameter documentation. If set to NO, doxygen will accept that some
# parameters have no documentation without warning.
# The default value is: YES.

WARN_IF_INCOMPLETE_DOC = YES

# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
# value. If set to NO, doxygen will only warn about wrong parameter
# documentation, but not about the absence of documentation. If EXTRACT_ALL is
# set to YES then this flag will automatically be disabled. See also
# WARN_IF_INCOMPLETE_DOC
# The default value is: NO.

WARN_NO_PARAMDOC       = YES

# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS
# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but
# at the end of the doxygen process doxygen will return with a non-zero status.
# Possible values are: NO, YES and FAIL_ON_WARNINGS.
# The default value is: NO.

WARN_AS_ERROR          = NO

# The WARN_FORMAT tag determines the format of the warning messages that doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
# will be replaced by the file and line number from which the warning originated
# and the warning text. Optionally the format may contain $version, which will
# be replaced by the version of the file (if it could be obtained via
# FILE_VERSION_FILTER)
# See also: WARN_LINE_FORMAT
# The default value is: $file:$line: $text.

WARN_FORMAT            = "$file:$line: $text"

# In the $text part of the WARN_FORMAT command it is possible that a reference
# to a more specific place is given. To make it easier to jump to this place
# (outside of doxygen) the user can define a custom "cut" / "paste" string.
# Example:
# WARN_LINE_FORMAT = "'vi $file +$line'"
# See also: WARN_FORMAT
# The default value is: at line $line of file $file.

WARN_LINE_FORMAT       = "at line $line of file $file"

# The WARN_LOGFILE tag can be used to specify a file to which warning and error
# messages should be written. If left blank the output is written to standard
# error (stderr). In case the file specified cannot be opened for writing the
# warning and error messages are written to standard error. When as file - is
# specified the warning and error messages are written to standard output
# (stdout).

WARN_LOGFILE           =

#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------

# The INPUT tag is used to specify the files and/or directories that contain
# documented source files. You may enter file names like myfile.cpp or
# directories like /usr/src/myproject. Separate the files or directories with
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.

INPUT                  =    "./src" \
                            "./src/HEADER.md"



# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
# documentation (see:
# https://www.gnu.org/software/libiconv/) for the list of possible encodings.
# The default value is: UTF-8.

INPUT_ENCODING         = UTF-8

# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
# *.h) to filter out the source-files in the directories.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# read by doxygen.
#
# Note the list of default checked file patterns might differ from the list of
# default file extension mappings.
#
# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml,
# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C
# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd,
# *.vhdl, *.ucf, *.qsf and *.ice.

FILE_PATTERNS          = *.c \
                         *.cc \
                         *.cxx \
                         *.cpp \
                         *.c++ \
                         *.java \
                         *.ii \
                         *.ixx \
                         *.ipp \
                         *.i++ \
                         *.inl \
                         *.idl \
                         *.ddl \
                         *.odl \
                         *.h \
                         *.hh \
                         *.hxx \
                         *.hpp \
                         *.h++ \
                         *.l \
                         *.cs \
                         *.d \
                         *.php \
                         *.php4 \
                         *.php5 \
                         *.phtml \
                         *.inc \
                         *.m \
                         *.markdown \
                         *.md \
                         *.mm \
                         *.dox \
                         *.py \
                         *.pyw \
                         *.f90 \
                         *.f95 \
                         *.f03 \
                         *.f08 \
                         *.f18 \
                         *.f \
                         *.for \
                         *.vhd \
                         *.vhdl \
                         *.ucf \
                         *.qsf \
                         *.ice

# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
# The default value is: NO.

RECURSIVE              = NO

# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
#
# Note that relative paths are relative to the directory from which doxygen is
# run.

EXCLUDE                = "./src/Readme.md" \
                            "./src/paq.sh" \
                            "./src/paq.bat"

# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
# The default value is: NO.

EXCLUDE_SYMLINKS       = NO

# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories.
#
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*

EXCLUDE_PATTERNS       =

# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# ANamespace::AClass, ANamespace::*Test
#
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories use the pattern */test/*

EXCLUDE_SYMBOLS        =

# The EXAMPLE_PATH tag can be used to specify one or more files or directories
# that contain example code fragments that are included (see the \include
# command).

EXAMPLE_PATH           =

# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.

EXAMPLE_PATTERNS       = *

# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
# irrespective of the value of the RECURSIVE tag.
# The default value is: NO.

EXAMPLE_RECURSIVE      = NO

# The IMAGE_PATH tag can be used to specify one or more files or directories
# that contain images that are to be included in the documentation (see the
# \image command).

IMAGE_PATH             =

# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
# by executing (via popen()) the command:
#
# <filter> <input-file>
#
# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
# name of an input file. Doxygen will then use the output that the filter
# program writes to standard output. If FILTER_PATTERNS is specified, this tag
# will be ignored.
#
# Note that the filter must not add or remove lines; it is applied before the
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# properly processed by doxygen.

INPUT_FILTER           =

# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
# filter if there is a match. The filters are a list of the form: pattern=filter
# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# properly processed by doxygen.

FILTER_PATTERNS        =

# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will also be used to filter the input files that are used for
# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
# The default value is: NO.

FILTER_SOURCE_FILES    = NO

# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
# it is also possible to disable source filtering for a specific pattern using
# *.ext= (so without naming a filter).
# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.

FILTER_SOURCE_PATTERNS =

# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
# is part of the input, its contents will be placed on the main page
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output.

USE_MDFILE_AS_MAINPAGE = src/HEADER.md

#---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------

# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
# generated. Documented entities will be cross-referenced with these sources.
#
# Note: To get rid of all source code in the generated output, make sure that
# also VERBATIM_HEADERS is set to NO.
# The default value is: NO.

SOURCE_BROWSER         = YES

# Setting the INLINE_SOURCES tag to YES will include the body of functions,
# classes and enums directly into the documentation.
# The default value is: NO.

INLINE_SOURCES         = NO

# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
# special comment blocks from generated source code fragments. Normal C, C++ and
# Fortran comments will always remain visible.
# The default value is: YES.

STRIP_CODE_COMMENTS    = YES

# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
# entity all documented functions referencing it will be listed.
# The default value is: NO.

REFERENCED_BY_RELATION = YES

# If the REFERENCES_RELATION tag is set to YES then for each documented function
# all documented entities called/used by that function will be listed.
# The default value is: NO.

REFERENCES_RELATION    = YES

# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
# to YES then the hyperlinks from functions in REFERENCES_RELATION and
# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
# link to the documentation.
# The default value is: YES.

REFERENCES_LINK_SOURCE = YES

# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
# source code will show a tooltip with additional information such as prototype,
# brief description and links to the definition and documentation. Since this
# will make the HTML file larger and loading of large files a bit slower, you
# can opt to disable this feature.
# The default value is: YES.
# This tag requires that the tag SOURCE_BROWSER is set to YES.

SOURCE_TOOLTIPS        = YES

# If the USE_HTAGS tag is set to YES then the references to source code will
# point to the HTML generated by the htags(1) tool instead of doxygen built-in
# source browser. The htags tool is part of GNU's global source tagging system
# (see https://www.gnu.org/software/global/global.html). You will need version
# 4.8.6 or higher.
#
# To use it do the following:
# - Install the latest version of global
# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
# - Make sure the INPUT points to the root of the source tree
# - Run doxygen as normal
#
# Doxygen will invoke htags (and that will in turn invoke gtags), so these
# tools must be available from the command line (i.e. in the search path).
#
# The result: instead of the source browser generated by doxygen, the links to
# source code will now point to the output of htags.
# The default value is: NO.
# This tag requires that the tag SOURCE_BROWSER is set to YES.

USE_HTAGS              = NO

# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
# verbatim copy of the header file for each class for which an include is
# specified. Set to NO to disable this.
# See also: Section \class.
# The default value is: YES.

VERBATIM_HEADERS       = YES

# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
# clang parser (see:
# http://clang.llvm.org/) for more accurate parsing at the cost of reduced
# performance. This can be particularly helpful with template rich C++ code for
# which doxygen's built-in parser lacks the necessary type information.
# Note: The availability of this option depends on whether or not doxygen was
# generated with the -Duse_libclang=ON option for CMake.
# The default value is: NO.

CLANG_ASSISTED_PARSING = NO

# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS
# tag is set to YES then doxygen will add the directory of each input to the
# include path.
# The default value is: YES.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.

CLANG_ADD_INC_PATHS    = YES

# If clang assisted parsing is enabled you can provide the compiler with command
# line options that you would normally use when invoking the compiler. Note that
# the include paths will already be set by doxygen for the files and directories
# specified with INPUT and INCLUDE_PATH.
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.

CLANG_OPTIONS          =

# If clang assisted parsing is enabled you can provide the clang parser with the
# path to the directory containing a file called compile_commands.json. This
# file is the compilation database (see:
# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the
# options used when the source files were built. This is equivalent to
# specifying the -p option to a clang tool, such as clang-check. These options
# will then be passed to the parser. Any options specified with CLANG_OPTIONS
# will be added as well.
# Note: The availability of this option depends on whether or not doxygen was
# generated with the -Duse_libclang=ON option for CMake.

CLANG_DATABASE_PATH    =

#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------

# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
# compounds will be generated. Enable this if the project contains a lot of
# classes, structs, unions or interfaces.
# The default value is: YES.

ALPHABETICAL_INDEX     = YES

# In case all classes in a project start with a common prefix, all classes will
# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
# can be used to specify a prefix (or a list of prefixes) that should be ignored
# while generating the index headers.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.

IGNORE_PREFIX          =

#---------------------------------------------------------------------------
# Configuration options related to the HTML output
#---------------------------------------------------------------------------

# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
# The default value is: YES.

GENERATE_HTML          = YES

# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_OUTPUT            = html

# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
# The default value is: .html.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_FILE_EXTENSION    = .html

# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
# each generated HTML page. If the tag is left blank doxygen will generate a
# standard header.
#
# To get valid HTML the header file that includes any scripts and style sheets
# that doxygen needs, which is dependent on the configuration options used (e.g.
# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
# default header using
# doxygen -w html new_header.html new_footer.html new_stylesheet.css
# YourConfigFile
# and then modify the file new_header.html. See also section "Doxygen usage"
# for information on how to generate the default header that doxygen normally
# uses.
# Note: The header is subject to change so you typically have to regenerate the
# default header when upgrading to a newer version of doxygen. For a description
# of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_HEADER            =

# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
# generated HTML page. If the tag is left blank doxygen will generate a standard
# footer. See HTML_HEADER for more information on how to generate a default
# footer and what special commands can be used inside the footer. See also
# section "Doxygen usage" for information on how to generate the default footer
# that doxygen normally uses.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_FOOTER            =

# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
# sheet that is used by each HTML page. It can be used to fine-tune the look of
# the HTML output. If left blank doxygen will generate a default style sheet.
# See also section "Doxygen usage" for information on how to generate the style
# sheet that doxygen normally uses.
# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
# it is more robust and this tag (HTML_STYLESHEET) will in the future become
# obsolete.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_STYLESHEET        =

# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# cascading style sheets that are included after the standard style sheets
# created by doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
# standard style sheet and is therefore more robust against future updates.
# Doxygen will copy the style sheet files to the output directory.
# Note: The order of the extra style sheet files is of importance (e.g. the last
# style sheet in the list overrules the setting of the previous ones in the
# list). For an example see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_EXTRA_STYLESHEET  = ./doc/doxygen-awesome-css/doxygen-awesome.css

# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
# files will be copied as-is; there are no commands or markers available.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_EXTRA_FILES       =

# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the style sheet and background images according to
# this color. Hue is specified as an angle on a color-wheel, see
# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
# purple, and 360 is red again.
# Minimum value: 0, maximum value: 359, default value: 220.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_HUE    = 220

# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
# in the HTML output. For a value of 0 the output will use gray-scales only. A
# value of 255 will produce the most vivid colors.
# Minimum value: 0, maximum value: 255, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_SAT    = 100

# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
# luminance component of the colors in the HTML output. Values below 100
# gradually make the output lighter, whereas values above 100 make the output
# darker. The value divided by 100 is the actual gamma applied, so 80 represents
# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
# change the gamma.
# Minimum value: 40, maximum value: 240, default value: 80.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_COLORSTYLE_GAMMA  = 80

# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
# page will contain the date and time when the page was generated. Setting this
# to YES can help to show when doxygen was last run and thus if the
# documentation is up to date.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_TIMESTAMP         = NO

# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
# documentation will contain a main index with vertical navigation menus that
# are dynamically created via JavaScript. If disabled, the navigation index will
# consists of multiple levels of tabs that are statically embedded in every HTML
# page. Disable this option to support browsers that do not have JavaScript,
# like the Qt help browser.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_DYNAMIC_MENUS     = YES

# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_DYNAMIC_SECTIONS  = NO

# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
# shown in the various tree structured indices initially; the user can expand
# and collapse entries dynamically later on. Doxygen will expand the tree to
# such a level that at most the specified number of entries are visible (unless
# a fully collapsed tree already exceeds this amount). So setting the number of
# entries 1 will produce a full collapsed tree by default. 0 is a special value
# representing an infinite number of entries and will result in a full expanded
# tree by default.
# Minimum value: 0, maximum value: 9999, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_INDEX_NUM_ENTRIES = 100

# If the GENERATE_DOCSET tag is set to YES, additional index files will be
# generated that can be used as input for Apple's Xcode 3 integrated development
# environment (see:
# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To
# create a documentation set, doxygen will generate a Makefile in the HTML
# output directory. Running make will produce the docset in that directory and
# running make install will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
# genXcode/_index.html for more information.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_DOCSET        = NO

# This tag determines the name of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
# (such as a company or product suite) can be grouped.
# The default value is: Doxygen generated docs.
# This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_FEEDNAME        = "Doxygen generated docs"

# This tag determines the URL of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
# (such as a company or product suite) can be grouped.
# This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_FEEDURL         =

# This tag specifies a string that should uniquely identify the documentation
# set bundle. This should be a reverse domain-name style string, e.g.
# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_BUNDLE_ID       = org.doxygen.Project

# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.
# The default value is: org.doxygen.Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_PUBLISHER_ID    = org.doxygen.Publisher

# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
# The default value is: Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.

DOCSET_PUBLISHER_NAME  = Publisher

# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
# on Windows. In the beginning of 2021 Microsoft took the original page, with
# a.o. the download links, offline the HTML help workshop was already many years
# in maintenance mode). You can download the HTML help workshop from the web
# archives at Installation executable (see:
# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo
# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe).
#
# The HTML Help Workshop contains a compiler that can convert all HTML output
# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
# files are now used as the Windows 98 help format, and will replace the old
# Windows help format (.hlp) on all Windows platforms in the future. Compressed
# HTML files also contain an index, a table of contents, and you can search for
# words in the documentation. The HTML workshop also contains a viewer for
# compressed HTML files.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_HTMLHELP      = NO

# The CHM_FILE tag can be used to specify the file name of the resulting .chm
# file. You can add a path in front of the file if the result should not be
# written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

CHM_FILE               =

# The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler (hhc.exe). If non-empty,
# doxygen will try to run the HTML help compiler on the generated index.hhp.
# The file has to be specified with full path.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

HHC_LOCATION           =

# The GENERATE_CHI flag controls if a separate .chi index file is generated
# (YES) or that it should be included in the main .chm file (NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

GENERATE_CHI           = NO

# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
# and project file content.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

CHM_INDEX_ENCODING     =

# The BINARY_TOC flag controls whether a binary table of contents is generated
# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
# enables the Previous and Next buttons.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

BINARY_TOC             = NO

# The TOC_EXPAND flag can be set to YES to add extra items for group members to
# the table of contents of the HTML help documentation and to the tree view.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.

TOC_EXPAND             = NO

# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
# (.qch) of the generated HTML documentation.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_QHP           = NO

# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
# the file name of the resulting .qch file. The path specified is relative to
# the HTML output folder.
# This tag requires that the tag GENERATE_QHP is set to YES.

QCH_FILE               =

# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
# Project output. For more information please see Qt Help Project / Namespace
# (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_QHP is set to YES.

QHP_NAMESPACE          = org.doxygen.Project

# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
# Help Project output. For more information please see Qt Help Project / Virtual
# Folders (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders).
# The default value is: doc.
# This tag requires that the tag GENERATE_QHP is set to YES.

QHP_VIRTUAL_FOLDER     = doc

# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
# filter to add. For more information please see Qt Help Project / Custom
# Filters (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
# This tag requires that the tag GENERATE_QHP is set to YES.

QHP_CUST_FILTER_NAME   =

# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see Qt Help Project / Custom
# Filters (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
# This tag requires that the tag GENERATE_QHP is set to YES.

QHP_CUST_FILTER_ATTRS  =

# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's filter section matches. Qt Help Project / Filter Attributes (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
# This tag requires that the tag GENERATE_QHP is set to YES.

QHP_SECT_FILTER_ATTRS  =

# The QHG_LOCATION tag can be used to specify the location (absolute path
# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to
# run qhelpgenerator on the generated .qhp file.
# This tag requires that the tag GENERATE_QHP is set to YES.

QHG_LOCATION           =

# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
# generated, together with the HTML files, they form an Eclipse help plugin. To
# install this plugin and make it available under the help contents menu in
# Eclipse, the contents of the directory containing the HTML and XML files needs
# to be copied into the plugins directory of eclipse. The name of the directory
# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
# After copying Eclipse needs to be restarted before the help appears.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_ECLIPSEHELP   = NO

# A unique identifier for the Eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have this
# name. Each documentation set should have its own identifier.
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.

ECLIPSE_DOC_ID         = org.doxygen.Project

# If you want full control over the layout of the generated HTML pages it might
# be necessary to disable the index and replace it with your own. The
# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
# of each HTML page. A value of NO enables the index and the value YES disables
# it. Since the tabs in the index contain the same information as the navigation
# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

DISABLE_INDEX          = YES

# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information. If the tag
# value is set to YES, a side panel will be generated containing a tree-like
# index structure (just like the one that is generated for HTML Help). For this
# to work a browser that supports JavaScript, DHTML, CSS and frames is required
# (i.e. any modern browser). Windows users are probably better off using the
# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
# further fine tune the look of the index (see "Fine-tuning the output"). As an
# example, the default style sheet generated by doxygen has an example that
# shows how to put an image at the root of the tree instead of the PROJECT_NAME.
# Since the tree basically has the same information as the tab index, you could
# consider setting DISABLE_INDEX to YES when enabling this option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

GENERATE_TREEVIEW      = YES

# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the
# FULL_SIDEBAR option determines if the side bar is limited to only the treeview
# area (value NO) or if it should extend to the full height of the window (value
# YES). Setting this to YES gives a layout similar to
# https://docs.readthedocs.io with more room for contents, but less room for the
# project logo, title, and description. If either GENERATE_TREEVIEW or
# DISABLE_INDEX is set to NO, this option has no effect.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

FULL_SIDEBAR           = NO

# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
# doxygen will group on one line in the generated HTML documentation.
#
# Note that a value of 0 will completely suppress the enum values from appearing
# in the overview section.
# Minimum value: 0, maximum value: 20, default value: 4.
# This tag requires that the tag GENERATE_HTML is set to YES.

ENUM_VALUES_PER_LINE   = 4

# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
# to set the initial width (in pixels) of the frame in which the tree is shown.
# Minimum value: 0, maximum value: 1500, default value: 250.
# This tag requires that the tag GENERATE_HTML is set to YES.

TREEVIEW_WIDTH         = 250

# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
# external symbols imported via tag files in a separate window.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

EXT_LINKS_IN_WINDOW    = NO

# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email
# addresses.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.

OBFUSCATE_EMAILS       = YES

# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg
# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
# https://inkscape.org) to generate formulas as SVG images instead of PNGs for
# the HTML output. These images will generally look nicer at scaled resolutions.
# Possible values are: png (the default) and svg (looks nicer but requires the
# pdf2svg or inkscape tool).
# The default value is: png.
# This tag requires that the tag GENERATE_HTML is set to YES.

HTML_FORMULA_FORMAT    = png

# Use this tag to change the font size of LaTeX formulas included as images in
# the HTML documentation. When you change the font size after a successful
# doxygen run you need to manually remove any form_*.png images from the HTML
# output directory to force them to be regenerated.
# Minimum value: 8, maximum value: 50, default value: 10.
# This tag requires that the tag GENERATE_HTML is set to YES.

FORMULA_FONTSIZE       = 10

# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are not
# supported properly for IE 6.0, but are supported on all modern browsers.
#
# Note that when changing this option you need to delete any form_*.png files in
# the HTML output directory before the changes have effect.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.

FORMULA_TRANSPARENT    = YES

# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
# to create new LaTeX commands to be used in formulas as building blocks. See
# the section "Including formulas" for details.

FORMULA_MACROFILE      =

# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
# https://www.mathjax.org) which uses client side JavaScript for the rendering
# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
# installed or if you want to formulas look prettier in the HTML output. When
# enabled you may also need to install MathJax separately and configure the path
# to it using the MATHJAX_RELPATH option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.

USE_MATHJAX            = NO

# With MATHJAX_VERSION it is possible to specify the MathJax version to be used.
# Note that the different versions of MathJax have different requirements with
# regards to the different settings, so it is possible that also other MathJax
# settings have to be changed when switching between the different MathJax
# versions.
# Possible values are: MathJax_2 and MathJax_3.
# The default value is: MathJax_2.
# This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_VERSION        = MathJax_2

# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. For more details about the output format see MathJax
# version 2 (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3
# (see:
# http://docs.mathjax.org/en/latest/web/components/output.html).
# Possible values are: HTML-CSS (which is slower, but has the best
# compatibility. This is the name for Mathjax version 2, for MathJax version 3
# this will be translated into chtml), NativeMML (i.e. MathML. Only supported
# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This
# is the name for Mathjax version 3, for MathJax version 2 this will be
# translated into HTML-CSS) and SVG.
# The default value is: HTML-CSS.
# This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_FORMAT         = HTML-CSS

# When MathJax is enabled you need to specify the location relative to the HTML
# output directory using the MATHJAX_RELPATH option. The destination directory
# should contain the MathJax.js script. For instance, if the mathjax directory
# is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
# Content Delivery Network so you can quickly see the result without installing
# MathJax. However, it is strongly recommended to install a local copy of
# MathJax from https://www.mathjax.org before deployment. The default value is:
# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2
# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3
# This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_RELPATH        =

# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example
# for MathJax version 2 (see
# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions):
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# For example for MathJax version 3 (see
# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html):
# MATHJAX_EXTENSIONS = ams
# This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_EXTENSIONS     =

# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
# (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an
# example see the documentation.
# This tag requires that the tag USE_MATHJAX is set to YES.

MATHJAX_CODEFILE       =

# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
# the HTML output. The underlying search engine uses javascript and DHTML and
# should work on any modern browser. Note that when using HTML help
# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
# there is already a search function so this one should typically be disabled.
# For large projects the javascript based search engine can be slow, then
# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
# search using the keyboard; to jump to the search box use <access key> + S
# (what the <access key> is depends on the OS and browser, but it is typically
# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
# key> to jump into the search results window, the results can be navigated
# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
# the search. The filter options can be selected when the cursor is inside the
# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
# to select a filter and <Enter> or <escape> to activate or cancel the filter
# option.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.

SEARCHENGINE           = YES

# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a web server instead of a web client using JavaScript. There
# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
# setting. When disabled, doxygen will generate a PHP script for searching and
# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
# and searching needs to be provided by external tools. See the section
# "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.

SERVER_BASED_SEARCH    = NO

# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
# script for searching. Instead the search results are written to an XML file
# which needs to be processed by an external indexer. Doxygen will invoke an
# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
# search results.
#
# Doxygen ships with an example indexer (doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see:
# https://xapian.org/).
#
# See the section "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.

EXTERNAL_SEARCH        = NO

# The SEARCHENGINE_URL should point to a search engine hosted by a web server
# which will return the search results when EXTERNAL_SEARCH is enabled.
#
# Doxygen ships with an example indexer (doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see:
# https://xapian.org/). See the section "External Indexing and Searching" for
# details.
# This tag requires that the tag SEARCHENGINE is set to YES.

SEARCHENGINE_URL       =

# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
# search data is written to a file for indexing by an external tool. With the
# SEARCHDATA_FILE tag the name of this file can be specified.
# The default file is: searchdata.xml.
# This tag requires that the tag SEARCHENGINE is set to YES.

SEARCHDATA_FILE        = searchdata.xml

# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
# projects and redirect the results back to the right project.
# This tag requires that the tag SEARCHENGINE is set to YES.

EXTERNAL_SEARCH_ID     =

# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
# projects other than the one defined by this configuration file, but that are
# all added to the same external search index. Each project needs to have a
# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
# to a relative location where the documentation can be found. The format is:
# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
# This tag requires that the tag SEARCHENGINE is set to YES.

EXTRA_SEARCH_MAPPINGS  =

#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------

# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
# The default value is: YES.

GENERATE_LATEX         = NO

# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: latex.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_OUTPUT           = latex

# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked.
#
# Note that when not enabling USE_PDFLATEX the default is latex when enabling
# USE_PDFLATEX the default is pdflatex and when in the later case latex is
# chosen this is overwritten by pdflatex. For specific output languages the
# default can have been set differently, this depends on the implementation of
# the output language.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_CMD_NAME         =

# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
# index for LaTeX.
# Note: This tag is used in the Makefile / make.bat.
# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
# (.tex).
# The default file is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.

MAKEINDEX_CMD_NAME     = makeindex

# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
# generate index for LaTeX. In case there is no backslash (\) as first character
# it will be automatically added in the LaTeX code.
# Note: This tag is used in the generated output file (.tex).
# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
# The default value is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_MAKEINDEX_CMD    = makeindex

# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.

COMPACT_LATEX          = NO

# The PAPER_TYPE tag can be used to set the paper type that is used by the
# printer.
# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
# 14 inches) and executive (7.25 x 10.5 inches).
# The default value is: a4.
# This tag requires that the tag GENERATE_LATEX is set to YES.

PAPER_TYPE             = a4

# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
# that should be included in the LaTeX output. The package can be specified just
# by its name or with the correct syntax as to be used with the LaTeX
# \usepackage command. To get the times font for instance you can specify :
# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
# To use the option intlimits with the amsmath package you can specify:
# EXTRA_PACKAGES=[intlimits]{amsmath}
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.

EXTRA_PACKAGES         =

# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for
# the generated LaTeX document. The header should contain everything until the
# first chapter. If it is left blank doxygen will generate a standard header. It
# is highly recommended to start with a default header using
# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty
# and then modify the file new_header.tex. See also section "Doxygen usage" for
# information on how to generate the default header that doxygen normally uses.
#
# Note: Only use a user-defined header if you know what you are doing!
# Note: The header is subject to change so you typically have to regenerate the
# default header when upgrading to a newer version of doxygen. The following
# commands have a special meaning inside the header (and footer): For a
# description of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_HEADER           =

# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for
# the generated LaTeX document. The footer should contain everything after the
# last chapter. If it is left blank doxygen will generate a standard footer. See
# LATEX_HEADER for more information on how to generate a default footer and what
# special commands can be used inside the footer. See also section "Doxygen
# usage" for information on how to generate the default footer that doxygen
# normally uses. Note: Only use a user-defined footer if you know what you are
# doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_FOOTER           =

# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# LaTeX style sheets that are included after the standard style sheets created
# by doxygen. Using this option one can overrule certain style aspects. Doxygen
# will copy the style sheet files to the output directory.
# Note: The order of the extra style sheet files is of importance (e.g. the last
# style sheet in the list overrules the setting of the previous ones in the
# list).
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_EXTRA_STYLESHEET =

# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the LATEX_OUTPUT output
# directory. Note that the files will be copied as-is; there are no commands or
# markers available.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_EXTRA_FILES      =

# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
# contain links (just like the HTML output) instead of page references. This
# makes the output suitable for online browsing using a PDF viewer.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.

PDF_HYPERLINKS         = YES

# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as
# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX
# files. Set this option to YES, to get a higher quality PDF documentation.
#
# See also section LATEX_CMD_NAME for selecting the engine.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.

USE_PDFLATEX           = YES

# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
# command to the generated LaTeX files. This will instruct LaTeX to keep running
# if errors occur, instead of asking the user for help.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_BATCHMODE        = NO

# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
# index chapters (such as File Index, Compound Index, etc.) in the output.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_HIDE_INDICES     = NO

# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. See
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
# The default value is: plain.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_BIB_STYLE        = plain

# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
# page will contain the date and time when the page was generated. Setting this
# to NO can help when comparing the output of multiple runs.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_TIMESTAMP        = NO

# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
# path from which the emoji images will be read. If a relative path is entered,
# it will be relative to the LATEX_OUTPUT directory. If left blank the
# LATEX_OUTPUT directory will be used.
# This tag requires that the tag GENERATE_LATEX is set to YES.

LATEX_EMOJI_DIRECTORY  =

#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------

# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
# RTF output is optimized for Word 97 and may not look too pretty with other RTF
# readers/editors.
# The default value is: NO.

GENERATE_RTF           = NO

# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: rtf.
# This tag requires that the tag GENERATE_RTF is set to YES.

RTF_OUTPUT             = rtf

# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.

COMPACT_RTF            = NO

# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
# contain hyperlink fields. The RTF file will contain links (just like the HTML
# output) instead of page references. This makes the output suitable for online
# browsing using Word or some other Word compatible readers that support those
# fields.
#
# Note: WordPad (write) and others do not support links.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.

RTF_HYPERLINKS         = NO

# Load stylesheet definitions from file. Syntax is similar to doxygen's
# configuration file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
#
# See also section "Doxygen usage" for information on how to generate the
# default style sheet that doxygen normally uses.
# This tag requires that the tag GENERATE_RTF is set to YES.

RTF_STYLESHEET_FILE    =

# Set optional variables used in the generation of an RTF document. Syntax is
# similar to doxygen's configuration file. A template extensions file can be
# generated using doxygen -e rtf extensionFile.
# This tag requires that the tag GENERATE_RTF is set to YES.

RTF_EXTENSIONS_FILE    =

#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------

# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
# classes and files.
# The default value is: NO.

GENERATE_MAN           = NO

# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it. A directory man3 will be created inside the directory specified by
# MAN_OUTPUT.
# The default directory is: man.
# This tag requires that the tag GENERATE_MAN is set to YES.

MAN_OUTPUT             = man

# The MAN_EXTENSION tag determines the extension that is added to the generated
# man pages. In case the manual section does not start with a number, the number
# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
# optional.
# The default value is: .3.
# This tag requires that the tag GENERATE_MAN is set to YES.

MAN_EXTENSION          = .3

# The MAN_SUBDIR tag determines the name of the directory created within
# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
# MAN_EXTENSION with the initial . removed.
# This tag requires that the tag GENERATE_MAN is set to YES.

MAN_SUBDIR             =

# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
# will generate one additional man file for each entity documented in the real
# man page(s). These additional files only source the real man page, but without
# them the man command would be unable to find the correct page.
# The default value is: NO.
# This tag requires that the tag GENERATE_MAN is set to YES.

MAN_LINKS              = NO

#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------

# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
# captures the structure of the code including all documentation.
# The default value is: NO.

GENERATE_XML           = NO

# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: xml.
# This tag requires that the tag GENERATE_XML is set to YES.

XML_OUTPUT             = xml

# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
# listings (including syntax highlighting and cross-referencing information) to
# the XML output. Note that enabling this will significantly increase the size
# of the XML output.
# The default value is: YES.
# This tag requires that the tag GENERATE_XML is set to YES.

XML_PROGRAMLISTING     = YES

# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
# namespace members in file scope as well, matching the HTML output.
# The default value is: NO.
# This tag requires that the tag GENERATE_XML is set to YES.

XML_NS_MEMB_FILE_SCOPE = NO

#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------

# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
# that can be used to generate PDF.
# The default value is: NO.

GENERATE_DOCBOOK       = NO

# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
# front of it.
# The default directory is: docbook.
# This tag requires that the tag GENERATE_DOCBOOK is set to YES.

DOCBOOK_OUTPUT         = docbook

#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------

# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures
# the structure of the code including all documentation. Note that this feature
# is still experimental and incomplete at the moment.
# The default value is: NO.

GENERATE_AUTOGEN_DEF   = NO

#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------

# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
# file that captures the structure of the code including all documentation.
#
# Note that this feature is still experimental and incomplete at the moment.
# The default value is: NO.

GENERATE_PERLMOD       = NO

# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
# output from the Perl module output.
# The default value is: NO.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.

PERLMOD_LATEX          = NO

# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
# formatted so it can be parsed by a human reader. This is useful if you want to
# understand what is going on. On the other hand, if this tag is set to NO, the
# size of the Perl module output will be much smaller and Perl will parse it
# just the same.
# The default value is: YES.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.

PERLMOD_PRETTY         = YES

# The names of the make variables in the generated doxyrules.make file are
# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
# so different doxyrules.make files included by the same Makefile don't
# overwrite each other's variables.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.

PERLMOD_MAKEVAR_PREFIX =

#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------

# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
# C-preprocessor directives found in the sources and include files.
# The default value is: YES.

ENABLE_PREPROCESSING   = YES

# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
# in the source code. If set to NO, only conditional compilation will be
# performed. Macro expansion can be done in a controlled way by setting
# EXPAND_ONLY_PREDEF to YES.
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

MACRO_EXPANSION        = NO

# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
# the macro expansion is limited to the macros specified with the PREDEFINED and
# EXPAND_AS_DEFINED tags.
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

EXPAND_ONLY_PREDEF     = NO

# If the SEARCH_INCLUDES tag is set to YES, the include files in the
# INCLUDE_PATH will be searched if a #include is found.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

SEARCH_INCLUDES        = YES

# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by the
# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of
# RECURSIVE has no effect here.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.

INCLUDE_PATH           =

# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will be
# used.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

INCLUDE_FILE_PATTERNS  =

# The PREDEFINED tag can be used to specify one or more macro names that are
# defined before the preprocessor is started (similar to the -D option of e.g.
# gcc). The argument of the tag is a list of macros of the form: name or
# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
# is assumed. To prevent a macro definition from being undefined via #undef or
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

PREDEFINED             =

# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
# macro definition that is found in the sources will be used. Use the PREDEFINED
# tag if you want to use a different macro definition that overrules the
# definition found in the source code.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

EXPAND_AS_DEFINED      =

# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
# remove all references to function-like macros that are alone on a line, have
# an all uppercase name, and do not end with a semicolon. Such function macros
# are typically used for boiler-plate code, and will confuse the parser if not
# removed.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

SKIP_FUNCTION_MACROS   = YES

#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------

# The TAGFILES tag can be used to specify one or more tag files. For each tag
# file the location of the external documentation should be added. The format of
# a tag file without this location is as follows:
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where loc1 and loc2 can be relative or absolute paths or URLs. See the
# section "Linking to external documentation" for more information about the use
# of tag files.
# Note: Each tag file must have a unique name (where the name does NOT include
# the path). If a tag file is not located in the directory in which doxygen is
# run, you must also specify the path to the tagfile here.

TAGFILES               =

# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
# tag file that is based on the input files it reads. See section "Linking to
# external documentation" for more information about the usage of tag files.

GENERATE_TAGFILE       =

# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
# the class index. If set to NO, only the inherited external classes will be
# listed.
# The default value is: NO.

ALLEXTERNALS           = NO

# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
# in the modules index. If set to NO, only the current project's groups will be
# listed.
# The default value is: YES.

EXTERNAL_GROUPS        = YES

# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
# the related pages index. If set to NO, only the current project's pages will
# be listed.
# The default value is: YES.

EXTERNAL_PAGES         = YES

#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------

# You can include diagrams made with dia in doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
# If left empty dia is assumed to be found in the default search path.

DIA_PATH               =

# If set to YES the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
# The default value is: YES.

HIDE_UNDOC_RELATIONS   = YES

# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz (see:
# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
# Bell Labs. The other options in this section have no effect if this option is
# set to NO
# The default value is: YES.

HAVE_DOT               = YES

# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
# to run in parallel. When set to 0 doxygen will base this on the number of
# processors available in the system. You can set it explicitly to a value
# larger than 0 to get control over the balance between CPU load and processing
# speed.
# Minimum value: 0, maximum value: 32, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_NUM_THREADS        = 0

# When you want a differently looking font in the dot files that doxygen
# generates you can specify the font name using DOT_FONTNAME. You need to make
# sure dot is able to find the font, which can be done by putting it in a
# standard location or by setting the DOTFONTPATH environment variable or by
# setting DOT_FONTPATH to the directory containing the font.
# The default value is: Helvetica.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTNAME           = Helvetica

# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
# dot graphs.
# Minimum value: 4, maximum value: 24, default value: 10.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTSIZE           = 10

# By default doxygen will tell dot to use the default font as specified with
# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
# the path where dot can find it using this tag.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_FONTPATH           =

# If the CLASS_GRAPH tag is set to YES (or GRAPH) then doxygen will generate a
# graph for each documented class showing the direct and indirect inheritance
# relations. In case HAVE_DOT is set as well dot will be used to draw the graph,
# otherwise the built-in generator will be used. If the CLASS_GRAPH tag is set
# to TEXT the direct and indirect inheritance relations will be shown as texts /
# links.
# Possible values are: NO, YES, TEXT and GRAPH.
# The default value is: YES.

CLASS_GRAPH            = YES

# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
# graph for each documented class showing the direct and indirect implementation
# dependencies (inheritance, containment, and class references variables) of the
# class with other documented classes.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

COLLABORATION_GRAPH    = YES

# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
# groups, showing the direct groups dependencies. See also the chapter Grouping
# in the manual.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

GROUP_GRAPHS           = YES

# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

UML_LOOK               = NO

# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
# class node. If there are many fields or methods and many nodes the graph may
# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
# number of items for each type to make the size more manageable. Set this to 0
# for no limit. Note that the threshold may be exceeded by 50% before the limit
# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
# but if the number exceeds 15, the total amount of fields shown is limited to
# 10.
# Minimum value: 0, maximum value: 100, default value: 10.
# This tag requires that the tag UML_LOOK is set to YES.

UML_LIMIT_NUM_FIELDS   = 10

# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and
# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS
# tag is set to YES, doxygen will add type and arguments for attributes and
# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen
# will not generate fields with class member information in the UML graphs. The
# class diagrams will look similar to the default class diagrams but using UML
# notation for the relationships.
# Possible values are: NO, YES and NONE.
# The default value is: NO.
# This tag requires that the tag UML_LOOK is set to YES.

DOT_UML_DETAILS        = NO

# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters
# to display on a single line. If the actual line length exceeds this threshold
# significantly it will wrapped across multiple lines. Some heuristics are apply
# to avoid ugly line breaks.
# Minimum value: 0, maximum value: 1000, default value: 17.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_WRAP_THRESHOLD     = 17

# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
# collaboration graphs will show the relations between templates and their
# instances.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

TEMPLATE_RELATIONS     = NO

# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
# YES then doxygen will generate a graph for each documented file showing the
# direct and indirect include dependencies of the file with other documented
# files.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

INCLUDE_GRAPH          = YES

# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
# set to YES then doxygen will generate a graph for each documented file showing
# the direct and indirect include dependencies of the file with other documented
# files.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

INCLUDED_BY_GRAPH      = YES

# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
# dependency graph for every global function or class method.
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable call graphs for selected
# functions only using the \callgraph command. Disabling a call graph can be
# accomplished by means of the command \hidecallgraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

CALL_GRAPH             = NO

# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
# dependency graph for every global function or class method.
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable caller graphs for selected
# functions only using the \callergraph command. Disabling a caller graph can be
# accomplished by means of the command \hidecallergraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

CALLER_GRAPH           = NO

# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
# hierarchy of all classes instead of a textual one.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

GRAPHICAL_HIERARCHY    = YES

# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
# dependencies a directory has on other directories in a graphical way. The
# dependency relations are determined by the #include relations between the
# files in the directories.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

DIRECTORY_GRAPH        = YES

# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels
# of child directories generated in directory dependency graphs by dot.
# Minimum value: 1, maximum value: 25, default value: 1.
# This tag requires that the tag DIRECTORY_GRAPH is set to YES.

DIR_GRAPH_MAX_DEPTH    = 1

# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. For an explanation of the image formats see the section
# output formats in the documentation of the dot tool (Graphviz (see:
# http://www.graphviz.org/)).
# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
# to make the SVG files visible in IE 9+ (other browsers do not have this
# requirement).
# Possible values are: png, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd,
# gif, gif:cairo, gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd,
# png:cairo, png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
# png:gdiplus:gdiplus.
# The default value is: png.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_IMAGE_FORMAT       = png

# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
#
# Note that this requires a modern browser other than Internet Explorer. Tested
# and working are Firefox, Chrome, Safari, and Opera.
# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
# the SVG files visible. Older versions of IE do not have SVG support.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

INTERACTIVE_SVG        = NO

# The DOT_PATH tag can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_PATH               =

# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the \dotfile
# command).
# This tag requires that the tag HAVE_DOT is set to YES.

DOTFILE_DIRS           =

# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
# command).

MSCFILE_DIRS           =

# The DIAFILE_DIRS tag can be used to specify one or more directories that
# contain dia files that are included in the documentation (see the \diafile
# command).

DIAFILE_DIRS           =

# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
# path where java can find the plantuml.jar file or to the filename of jar file
# to be used. If left blank, it is assumed PlantUML is not used or called during
# a preprocessing step. Doxygen will generate a warning when it encounters a
# \startuml command in this case and will not generate output for the diagram.

PLANTUML_JAR_PATH      =

# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
# configuration file for plantuml.

PLANTUML_CFG_FILE      =

# When using plantuml, the specified paths are searched for files specified by
# the !include statement in a plantuml block.

PLANTUML_INCLUDE_PATH  =

# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
# that will be shown in the graph. If the number of nodes in a graph becomes
# larger than this value, doxygen will truncate the graph, which is visualized
# by representing a node as a red box. Note that doxygen if the number of direct
# children of the root node in a graph is already larger than
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
# Minimum value: 0, maximum value: 10000, default value: 50.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_GRAPH_MAX_NODES    = 50

# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
# generated by dot. A depth value of 3 means that only nodes reachable from the
# root by following a path via at most 3 edges will be shown. Nodes that lay
# further from the root node will be omitted. Note that setting this option to 1
# or 2 may greatly reduce the computation time needed for large code bases. Also
# note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
# Minimum value: 0, maximum value: 1000, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.

MAX_DOT_GRAPH_DEPTH    = 0

# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
# background. This is disabled by default, because dot on Windows does not seem
# to support this out of the box.
#
# Warning: Depending on the platform used, enabling this option may lead to
# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
# read).
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_TRANSPARENT        = NO

# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support
# this, this feature is disabled by default.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.

DOT_MULTI_TARGETS      = NO

# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
# explaining the meaning of the various boxes and arrows in the dot generated
# graphs.
# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal
# graphical representation for inheritance and collaboration diagrams is used.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.

GENERATE_LEGEND        = YES

# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate
# files that are used to generate the various graphs.
#
# Note: This setting is not only used for dot files but also for msc temporary
# files.
# The default value is: YES.

DOT_CLEANUP            = YES


================================================
FILE: .editorconfig
================================================
# EditorConfig: https://EditorConfig.org

root = true

[*]
indent_style = space
charset = utf-8
end_of_line = lf
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true

[**.{json,yml}]
indent_size = 2


================================================
FILE: .gitattributes
================================================
# Github language settings
*.h linguist-language=c
*.c linguist-language=c

*.h text eol=auto
*.c text eol=auto


================================================
FILE: .github/ci_compile_sources.sh
================================================
#!/bin/sh
# This shellscript compiles each Nuklear/src/*.c source separetly
# in order to check for simple compilation failures by our CI runner.

# FIXME: This script compiles WITHOUT LINKING, which means that it won't catch
# any potential failures at link time. We don't have any example and/or demo
# that would work without amalgamated header, so we can't really test linking
# at the moment (but we defenetily should do this in the future!)

# FIXME: This script currently lives in Nuklear/.github/* folder because
# there are no other scripts like this one, and having it somewhere else
# could confuse people. Same reason why it wasn't made as Makefile.

set -e

CC=cc
SRCDIR=./src

set -- ""
set -- "$@" -std=c89
set -- "$@" -Wall
set -- "$@" -Wextra
set -- "$@" -pedantic
CFLAGS=$*

set -- ""
set -- "$@" -DNK_INCLUDE_FIXED_TYPES
set -- "$@" -DNK_INCLUDE_DEFAULT_ALLOCATOR
set -- "$@" -DNK_INCLUDE_STANDARD_IO
set -- "$@" -DNK_INCLUDE_STANDARD_VARARGS
set -- "$@" -DNK_INCLUDE_STANDARD_BOOL
set -- "$@" -DNK_INCLUDE_VERTEX_BUFFER_OUTPUT
set -- "$@" -DNK_INCLUDE_DEFAULT_FONT
set -- "$@" -DNK_INCLUDE_COMMAND_USERDATA
CPPFLAGS=$*

retcode=0

for i in "${SRCDIR}"/*.c ; do
    printf "CC %s\n" "${i}"
    # shellcheck disable=SC2086
    if ! $CC -x c -c "${i}" -o /dev/null $CFLAGS $CPPFLAGS ; then
        retcode=1
    fi
done

exit "${retcode}"



================================================
FILE: .github/workflows/ccpp.yml
================================================
name: C/C++ CI

on: [push, pull_request]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: apt-update
      run: sudo apt-get update -qq
    - name: apt get demo-libs
      run: sudo apt-get install -y --no-install-recommends glslc liballegro5-dev liballegro-image5-dev liballegro-ttf5-dev libcairo2-dev libglfw3 libglfw3-dev libglew-dev libsdl2-dev libvulkan-dev libwayland-dev libx11-dev libxcb1-dev libxcb-util0-dev libxcb-keysyms1-dev libxft-dev libxkbcommon-x11-dev wayland-protocols
    - name: build allegro5
      run: make -C demo/allegro5
    - name: build glfw_opengl2
      run: make -C demo/glfw_opengl2
    - name: build glfw_opengl3
      run: make -C demo/glfw_opengl3
    - name: build glfw_opengl4
      run: make -C demo/glfw_opengl4
    - name: build glfw_vulkan
      run: make -C demo/glfw_vulkan
    - name: build sdl_opengl2
      run: make -C demo/sdl_opengl2
    - name: build sdl_opengl3
      run: make -C demo/sdl_opengl3
    - name: build sdl_opengles2
      run: make -C demo/sdl_opengles2
    - name: build sdl_renderer
      run: make -C demo/sdl_renderer
    - name: build sdl_vulkan
      run: make -C demo/sdl_vulkan
    - name: build sdl_rawfb
      run: make -C demo/rawfb/sdl
    - name: build wayland_rawfb
      run: make -C demo/rawfb/wayland
    - name: build x11
      run: make -C demo/x11
    - name: build x11_opengl2
      run: make -C demo/x11_opengl2
    - name: build x11_opengl3
      run: make -C demo/x11_opengl3
    - name: build x11_rawfb
      run: make -C demo/rawfb/x11
    - name: build xcb_cairo
      run: make -C demo/xcb_cairo
    - name: build example
      run: make -C example
    - name: compile sources
      run: sh -e ./.github/ci_compile_sources.sh


================================================
FILE: .github/workflows/create-tag.yml
================================================
name: Create Tag

on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: butlerlogic/action-autotag@1.1.2
      env:
        GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
      with:
        root: clib.json


================================================
FILE: .github/workflows/docs.yml
================================================
name: Documentation on github.io

on:
  push:
    branches: [ master ]

jobs:
  build-documentation:
    runs-on: ubuntu-latest
    steps:
    - name: checkout
      uses: actions/checkout@v4
    - name: apt-update
      run: sudo apt-get update -qq
    - name: apt-get doxygen
      run: sudo apt-get install -y doxygen
    - name: build doc
      run: make docs
    - name: deploy
      uses: peaceiris/actions-gh-pages@v4
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: ./doc/html/
        enable_jekyll: false
        allow_empty_commit: false
        force_orphan: true


================================================
FILE: .gitignore
================================================
demo/*/*/demo
demo/*/bin/*
example/bin/*
/doc
*.tmp
*.swo
*.swp
*.o
*.obj
*.exe
*.dSYM
/private/


================================================
FILE: LICENSE
================================================
------------------------------------------------------------------------------
This software is available under 2 licenses -- choose whichever you prefer.
------------------------------------------------------------------------------
ALTERNATIVE A - MIT License
Copyright (c) 2017 Micha Mettke
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
------------------------------------------------------------------------------
ALTERNATIVE B - Public Domain (www.unlicense.org)
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
software, either in source code form or as a compiled binary, for any purpose,
commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this
software dedicate any and all copyright interest in the software to the public
domain. We make this dedication for the benefit of the public at large and to
the detriment of our heirs and successors. We intend this dedication to be an
overt act of relinquishment in perpetuity of all present and future rights to
this software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-----------------------------------------------------------------------------


================================================
FILE: Makefile
================================================

######################################################################################
##  								 SETTINGS                                       ##
######################################################################################

## path stuff
DOCS_PATH:=./doc
DEMO_PATH=demo
SRC_PATH=src


## Documents settings
DOXYFILE:=.Doxyfile


## HEADER file packing settings
## note: source file paths are prefixed later, no need to add prefix here; just
## give it the name.
MACRO = NK
INTRO =  HEADER.md
PUB = nuklear.h
OUTPUT = nuklear.h

PRIV1 = nuklear_internal.h nuklear_math.c nuklear_util.c nuklear_color.c nuklear_utf8.c nuklear_buffer.c nuklear_string.c nuklear_draw.c nuklear_vertex.c 

EXTERN =  stb_rect_pack.h stb_truetype.h 

PRIV2 = nuklear_font.c nuklear_input.c nuklear_style.c nuklear_context.c nuklear_pool.c nuklear_page_element.c nuklear_table.c nuklear_panel.c nuklear_window.c nuklear_popup.c nuklear_contextual.c nuklear_menu.c nuklear_layout.c nuklear_tree.c nuklear_group.c nuklear_list_view.c nuklear_widget.c nuklear_text.c nuklear_image.c nuklear_9slice.c nuklear_button.c nuklear_toggle.c nuklear_selectable.c nuklear_slider.c nuklear_knob.c nuklear_progress.c nuklear_scrollbar.c nuklear_text_editor.c nuklear_edit.c nuklear_property.c nuklear_chart.c nuklear_color_picker.c nuklear_combo.c nuklear_tooltip.c

OUTRO = LICENSE CHANGELOG CREDITS

## Demo settings
DEMO_LIST = $(shell find $(DEMO_PATH) -type f -name Makefile -printf "%h ")

######################################################################################
##  								 RECIPES                                        ##
######################################################################################


.PHONY: usage all demos $(DEMO_LIST)

usage:
	echo "make docs		to create documentation"
	echo "make nuke		to rebuild the single header nuklear.h from source"
	echo "make demos	to build all of the demos"
	echo "make all 		to re-pack the header and create documentation"

all: docs nuke demos 
demos: $(DEMO_LIST)


########################################################################################
##   Nuklear.h

nuke: $(addprefix $(SRC_PATH)/, $(SRC))
	python3 $(SRC_PATH)/build.py --macro $(MACRO) --intro $(addprefix $(SRC_PATH)/, $(INTRO)) --pub $(addprefix $(SRC_PATH)/, $(PUB)) --priv1 "$(addprefix $(SRC_PATH)/, $(PRIV1))" --extern "$(addprefix $(SRC_PATH)/, $(EXTERN))" --priv2 "$(addprefix $(SRC_PATH)/, $(PRIV2))" --outro "$(addprefix $(SRC_PATH)/, $(OUTRO))" > $(OUTPUT)





########################################################################################
##   Docs

docs: $(DOCS_PATH)/html/index.html 

$(DOCS_PATH)/html/index.html: $(DOCS_PATH)/doxygen-awesome-css/doxygen-awesome.css $(DOXYFILE)
	doxygen $(DOXYFILE)

$(DOXYFILE):
	doxygen -g $@

$(DOCS_PATH)/doxygen-awesome-css/doxygen-awesome.css:
	git clone https://github.com/jothepro/doxygen-awesome-css.git $(DOCS_PATH)/doxygen-awesome-css --branch v2.3.4



########################################################################################
##   Demos

$(DEMO_LIST):
	$(MAKE) -C $@



########################################################################################
##   Utility helpers

clean:
	rm -rf $(DOCS_PATH)/html $(OUTPUT)


================================================
FILE: Readme.md
================================================
# Nuklear

[![](https://github.com/Immediate-Mode-UI/Nuklear/workflows/C%2FC++%20CI/badge.svg )](https://github.com/Immediate-Mode-UI/Nuklear/actions)

This is a minimal-state, immediate-mode graphical user interface toolkit
written in ANSI C and licensed under public domain. It was designed as a simple
embeddable user interface for application and does not have any dependencies,
a default render backend or OS window/input handling but instead provides a
highly modular, library-based approach, with simple input state for input and
draw commands describing primitive shapes as output. So instead of providing a
layered library that tries to abstract over a number of platform and
render backends, it focuses only on the actual UI.

## Features

- Immediate-mode graphical user interface toolkit
- Single-header library
- Written in C89 (ANSI C)
- Small codebase (~18kLOC)
- Focus on portability, efficiency and simplicity
- No dependencies (not even the standard library if not wanted)
- Fully skinnable and customizable
- Low memory footprint with total control of memory usage if needed / wanted
- UTF-8 support
- No global or hidden state
- Customizable library modules (you can compile and use only what you need)
- Optional font baker and vertex buffer output
- [Documentation](https://Immediate-Mode-UI.github.io/Nuklear/)

## Building

This library is self-contained in one single header file and can be used either
in header-only mode or in implementation mode. The header-only mode is used
by default when included and allows including this header in other headers
and does not contain the actual implementation.

The implementation mode requires defining the preprocessor macro
`NK_IMPLEMENTATION` in *one* .c/.cpp file before `#include`ing this file, e.g.:
```c
#define NK_IMPLEMENTATION
#include "nuklear.h"
```
IMPORTANT: Every time you include "nuklear.h" you have to define the same optional flags.
This is very important; not doing it either leads to compiler errors, or even worse, stack corruptions.

## Gallery

![screenshot](https://cloud.githubusercontent.com/assets/8057201/11761525/ae06f0ca-a0c6-11e5-819d-5610b25f6ef4.gif)
![screen](https://cloud.githubusercontent.com/assets/8057201/13538240/acd96876-e249-11e5-9547-5ac0b19667a0.png)
![screen2](https://cloud.githubusercontent.com/assets/8057201/13538243/b04acd4c-e249-11e5-8fd2-ad7744a5b446.png)
![node](https://cloud.githubusercontent.com/assets/8057201/9976995/e81ac04a-5ef7-11e5-872b-acd54fbeee03.gif)
![skinning](https://cloud.githubusercontent.com/assets/8057201/15991632/76494854-30b8-11e6-9555-a69840d0d50b.png)
![gamepad](https://cloud.githubusercontent.com/assets/8057201/14902576/339926a8-0d9c-11e6-9fee-a8b73af04473.png)

## Example

```c
/* init gui state */
struct nk_context ctx;
nk_init_fixed(&ctx, calloc(1, MAX_MEMORY), MAX_MEMORY, &font);

enum {EASY, HARD};
static int op = EASY;
static float value = 0.6f;
static int i =  20;

if (nk_begin(&ctx, "Show", nk_rect(50, 50, 220, 220),
    NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_CLOSABLE)) {
    /* fixed widget pixel width */
    nk_layout_row_static(&ctx, 30, 80, 1);
    if (nk_button_label(&ctx, "button")) {
        /* event handling */
    }

    /* fixed widget window ratio width */
    nk_layout_row_dynamic(&ctx, 30, 2);
    if (nk_option_label(&ctx, "easy", op == EASY)) op = EASY;
    if (nk_option_label(&ctx, "hard", op == HARD)) op = HARD;

    /* custom widget pixel width */
    nk_layout_row_begin(&ctx, NK_STATIC, 30, 2);
    {
        nk_layout_row_push(&ctx, 50);
        nk_label(&ctx, "Volume:", NK_TEXT_LEFT);
        nk_layout_row_push(&ctx, 110);
        nk_slider_float(&ctx, 0, &value, 1.0f, 0.1f);
    }
    nk_layout_row_end(&ctx);
}
nk_end(&ctx);
```
![example](https://cloud.githubusercontent.com/assets/8057201/10187981/584ecd68-675c-11e5-897c-822ef534a876.png)

## Bindings
There are a number of nuklear bindings for different languages created by other authors.
I cannot attest for their quality since I am not necessarily proficient in any of these
languages. Furthermore there are no guarantee that all bindings will always be kept up to date:

- [Java](https://github.com/glegris/nuklear4j) by Guillaume Legris
- [D](https://github.com/Timu5/bindbc-nuklear) by Mateusz Muszyński
- [Golang](https://github.com/golang-ui/nuklear) by golang-ui@github.com
- [Rust](https://github.com/snuk182/nuklear-rust) by snuk182@github.com
- [Chicken](https://github.com/wasamasa/nuklear) by wasamasa@github.com
- [Nim](https://github.com/zacharycarter/nuklear-nim) by zacharycarter@github.com
- Lua
  - [LÖVE-Nuklear](https://github.com/keharriso/love-nuklear) by Kevin Harrison
  - [MoonNuklear](https://github.com/stetre/moonnuklear) by Stefano Trettel
- Python
  - [pyNuklear](https://github.com/billsix/pyNuklear) by William Emerison Six (ctypes-based wrapper)
  - [pynk](https://github.com/nathanrw/nuklear-cffi) by nathanrw@github.com (cffi binding)
- [CSharp/.NET](https://github.com/cartman300/NuklearDotNet) by cartman300@github.com
- [V](https://github.com/nsauzede/vnk) by Nicolas Sauzede

## Credits
Developed by Micha Mettke and every direct or indirect contributor to the GitHub.


Embeds `stb_texedit`, `stb_truetype` and `stb_rectpack` by Sean Barrett (public domain)
Embeds `ProggyClean.ttf` font by Tristan Grimmer (MIT license).


Big thank you to Omar Cornut (ocornut@github) for his [imgui](https://github.com/ocornut/imgui) library and
giving me the inspiration for this library, Casey Muratori for handmade hero
and his original immediate-mode graphical user interface idea and Sean
Barrett for his amazing single-header [libraries](https://github.com/nothings/stb) which restored my faith
in libraries and brought me to create some of my own. Finally Apoorva Joshi for his single-header [file packer](http://apoorvaj.io/single-header-packer.html).

## License
Nuklear is avaliable under either the MIT License or public domain.
See [LICENSE](LICENSE) for more info.

## Reviewers guide

When reviewing pull request there are common things a reviewer should keep
in mind.

Reviewing changes to `src/*` and `nuklear.h`:

* Ensure C89 compatibility.
* The code should work for several backends to an acceptable degree.
* Check no other parts of `nuklear.h` are related to the PR and thus nothing is missing.
* Recommend simple optimizations.
  * Pass small structs by value instead of by pointer.
  * Use local buffers over heap allocation when possible.
* Check that the coding style is consistent with code around it.
  * Variable/function name casing.
  * Indentation.
  * Curly bracket (`{}`) placement.
* Ensure that the contributor has bumped the appropriate version in
  [clib.json](https://github.com/Immediate-Mode-UI/Nuklear/blob/master/clib.json)
  and added their changes to the
  [CHANGELOG](https://github.com/Immediate-Mode-UI/Nuklear/blob/master/src/CHANGELOG).
* Have at least one other person review the changes before merging.

Reviewing changes to `demo/*`, `example/*` and other files in the repo:

* Focus on getting working code merged.
  * We want to make it easy for people to get started with Nuklear, and any
    `demo` and `example` improvements helps in this regard.
* Use of newer C features, or even other languages is not discouraged.
  * If another language is used, ensure that the build process is easy to figure out.
* Messy or less efficient code can be merged so long as these outliers are pointed out
  and easy to find.
* Version shouldn't be bumped for these changes.
* Changes that improves code to be more inline with `nuklear.h` are ofc always welcome.



================================================
FILE: clib.json
================================================
{
  "name": "nuklear",
  "version": "4.13.2",
  "repo": "Immediate-Mode-UI/Nuklear",
  "description": "A small ANSI C gui toolkit",
  "keywords": ["gl", "ui", "toolkit"],
  "license": "MIT, Unlicense",
  "src": ["nuklear.h"]
}


================================================
FILE: demo/allegro5/KeyboardHandleriOS.h
================================================
#import <UIKit/UIKit.h>

#include <allegro5/allegro.h>

@interface KeyboardHandleriOS : UIView <UIKeyInput>
-(void)setCustomKeyboardEventSource:(ALLEGRO_EVENT_SOURCE*)ev_src;
-(void)show;
-(void)hide;
@end



================================================
FILE: demo/allegro5/KeyboardHandleriOS.m
================================================
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#endif
#import "KeyboardHandleriOS.h"
#include <allegro5/allegro.h>
#include <allegro5/allegro_iphone_objc.h>
@interface KeyboardHandleriOS()
{
    ALLEGRO_EVENT_SOURCE *event_source;
    ALLEGRO_DISPLAY *current_display;
}
@end
@implementation KeyboardHandleriOS
- (id)init {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];
    self = [self initWithFrame:CGRectMake(-100, -100, 0, 0)];
    event_source = NULL;
    current_display = al_get_current_display();
    UIView* v = al_iphone_get_view(current_display);
    [v addSubview:self];
    return self;
}

- (void)setCustomKeyboardEventSource:(ALLEGRO_EVENT_SOURCE *)ev_src {
    event_source = ev_src;
}

- (UIKeyboardType) keyboardType
{
    return UIKeyboardTypeASCIICapable;
}

- (UITextAutocorrectionType) autocorrectionType
{
    return UITextAutocorrectionTypeNo;
}

-(BOOL)canBecomeFirstResponder {
    return YES;
}

- (void)deleteBackward {
    
    if (!event_source) {
        NSLog(@"deleteBackward(): No event source found, not sending events");
        return;
    }
    
    ALLEGRO_EVENT *event_down = (ALLEGRO_EVENT*)calloc(1, sizeof(ALLEGRO_EVENT));
    ALLEGRO_EVENT *event_up = (ALLEGRO_EVENT*)calloc(1, sizeof(ALLEGRO_EVENT));
    
    event_down->type = ALLEGRO_EVENT_KEY_DOWN;
    event_down->keyboard.display = current_display;
    event_down->keyboard.keycode = ALLEGRO_KEY_BACKSPACE;
    event_up->type = ALLEGRO_EVENT_KEY_UP;
    event_up->keyboard.display = current_display;
    event_up->keyboard.keycode = ALLEGRO_KEY_BACKSPACE;
    al_emit_user_event(event_source, event_down, NULL);
    al_emit_user_event(event_source, event_up, NULL);
    
    free(event_down);
    free(event_up);
}

- (BOOL)hasText {
    return YES;
}

- (void)insertText:(NSString *)text
{
    if (!event_source) {
        NSLog(@"insertText(): No event source found, not sending events");
        return;
    }
    
    ALLEGRO_EVENT *event_down = (ALLEGRO_EVENT*)calloc(1, sizeof(ALLEGRO_EVENT));
    ALLEGRO_EVENT *event_up = (ALLEGRO_EVENT*)calloc(1, sizeof(ALLEGRO_EVENT));
    
    if([text isEqualToString:@"\n"])
    {
        event_down->type = ALLEGRO_EVENT_KEY_DOWN;
        event_down->keyboard.display = current_display;
        event_down->keyboard.keycode = ALLEGRO_KEY_ENTER;
        event_up->type = ALLEGRO_EVENT_KEY_UP;
        event_up->keyboard.display = current_display;
        event_up->keyboard.keycode = ALLEGRO_KEY_ENTER;
        al_emit_user_event(event_source, event_down, NULL);
        al_emit_user_event(event_source, event_up, NULL);
        [self hide];
        //m_kb->setDonePressed();
    }
    else {
        event_down->type = ALLEGRO_EVENT_KEY_CHAR;
        event_down->keyboard.display = current_display;
        event_down->keyboard.unichar = [text characterAtIndex:0];
        // doesn't matter what keycode is, nuklear backend ignores it as long as it
        // isn't a special key
        event_down->keyboard.keycode = ALLEGRO_KEY_A;
        al_emit_user_event(event_source, event_down, NULL);
    }
    free(event_down);
    free(event_up);
}

-(void)show {
    NSLog(@"Should be showing!");
 [self performSelectorOnMainThread:@selector(becomeFirstResponder) withObject:nil waitUntilDone:YES];
}
-(void)hide {
    NSLog(@"Should be hiding!");
    [self performSelectorOnMainThread:@selector(resignFirstResponder) withObject:nil waitUntilDone:YES];
}
- (void)keyboardDidHide:(NSNotification *)notification {
    NSLog(@"keyboardDidHide called");
}

-(void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil];
}
@end


================================================
FILE: demo/allegro5/Makefile
================================================
# Install
BIN = demo

# Flags
CFLAGS += -std=c89 -Wall -Wextra -pedantic -Wno-unused-function

SRC = main.c
OBJ = $(SRC:.c=.o)

# TODO: Handle Windows build
#ifeq ($(OS),Windows_NT)
#BIN := $(BIN).exe
#LIBS = -lglfw3 -lopengl32 -lm -lGLU32 -lGLEW32
#else
LIBS = -lallegro -lallegro_main -lallegro_image -lallegro_font \
	-lallegro_ttf -lallegro_primitives -lm
#endif

$(BIN):
	@mkdir -p bin
	rm -f bin/$(BIN) $(OBJS)
	$(CC) $(SRC) $(CFLAGS) -o bin/$(BIN) $(LIBS)


================================================
FILE: demo/allegro5/Readme.md
================================================
# Allegro v5 nuklear backend

This backend provides support for [Allegro version 5](https://liballeg.github.io). It works on on all supported platforms with an OpenGL backend, including iOS and Android.

Touch support is provided by handling the first touch (ignoring any extra simultaneous touches) and emitting nuklear mouse events. nuklear will handle only the first touch like a single left-mouse click. Dragging the touch screen emits mouse-move events.

## Compiling
You must link with image, font, ttf, and primitives Allegro addons. See the `Makefile`.

## Resolutions

Like every nuklear backend, handling many different resolutions and resolution densities can be tricky. 14px font on a desktop may be perfect, but extremely small on a retina iPad. I recommend writing a middleware that will detect what kind of screen is being used, and modify the sizes of widgets accordingly.

## Soft Keyboard for Touch Screen Devices

Information on how to implement soft keyboard callbacks for Android can be on the Allegro community wiki: https://wiki.allegro.cc/index.php?title=Running_Allegro_applications_on_Android#Displaying_the_Android_keyboard

To display a soft keyboard on iOS, you must create a `UIView` subclass that implements the `UIKeyInput` interface. See `KeyboardHandleriOS.h` and `KeyboardHandleriOS.m` Objective-C source code files for an example on how to do this. As the Allegro keyboard driver does not currently listen for iOS events, we use a custom event emitter to emit keyboard events, which is passed in after initialization with `(void)setCustomKeyboardEventSource:(ALLEGRO_EVENT_SOURCE *)ev_src`. This causes normal keyboard events to be emitted and properly caught by the nuklear backend. The provided `main.c` demo file does not implement this, but with the provided source code files it is not difficult to do. See this Allegro community forum thread for more information: https://www.allegro.cc/forums/thread/616672

To know when nuklear wants to open and close the keyboard, you can check edit widget flags:

```
nk_flags ed_flags = nk_edit_string(ctx, NK_EDIT_FIELD, field_buffer, &field_len, 64, nk_filter_default);
if (ed_flags & NK_EDIT_ACTIVATED)
    open_ios_soft_keyboard();
if (ed_flags &  NK_EDIT_DEACTIVATED)
    close_ios_soft_keyboard();
```

### Manual Soft Keyboard Dismissal
As the user can dismiss a keyboard manually, nuklear will not be aware when this occurs, and the text edit cursor will think the entry field is still active. I recommend catching the dismiss event, then emitting `ALLEGRO_EVENT_TOUCH_BEGIN` and `ALLEGRO_EVENT_TOUCH_END` events in an unused portion of the screen (like the bottom-right corner). This will simulate the user touching outside of the text entry widget, which will make the edit field inactive.

### The Keyboard Covers Widgets

If you have a widget near the bottom of the screen, the keyboard opening woll cover it, and the user won't see what they are entering. One way to handle this is to make all text edit widgets view-only, and when tapped you dynamically create a new widget above the keyboard that receives all the key strokes. When the user dismisses the keyboard, copy the result from the new widget into the existing read-only text view and destroy the dynamic one.

================================================
FILE: demo/allegro5/main.c
================================================
/* nuklear - 1.32.0 - public domain */
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdarg.h>
#include <string.h>
#include <math.h>
#include <assert.h>
#include <limits.h>
#include <time.h>

#include <allegro5/allegro.h>

#define WINDOW_WIDTH 1200
#define WINDOW_HEIGHT 800

#define NK_INCLUDE_FIXED_TYPES
#define NK_INCLUDE_STANDARD_IO
#define NK_INCLUDE_STANDARD_VARARGS
#define NK_INCLUDE_DEFAULT_ALLOCATOR
#define NK_IMPLEMENTATION
#define NK_ALLEGRO5_IMPLEMENTATION
#include "../../nuklear.h"
#include "nuklear_allegro5.h"


#define UNUSED(a) (void)a
#define MIN(a,b) ((a) < (b) ? (a) : (b))
#define MAX(a,b) ((a) < (b) ? (b) : (a))
#define LEN(a) (sizeof(a)/sizeof(a)[0])


/* ===============================================================
 *
 *                          EXAMPLE
 *
 * ===============================================================*/
/* This are some code examples to provide a small overview of what can be
 * done with this library. To try out an example uncomment the defines */
/*#define INCLUDE_ALL */
/*#define INCLUDE_STYLE */
/*#define INCLUDE_CALCULATOR */
/*#define INCLUDE_CANVAS */
#define INCLUDE_OVERVIEW
/*#define INCLUDE_CONFIGURATOR */
/*#define INCLUDE_NODE_EDITOR */

#ifdef INCLUDE_ALL
  #define INCLUDE_STYLE
  #define INCLUDE_CALCULATOR
  #define INCLUDE_CANVAS
  #define INCLUDE_OVERVIEW
  #define INCLUDE_CONFIGURATOR
  #define INCLUDE_NODE_EDITOR
#endif

#ifdef INCLUDE_STYLE
  #include "../../demo/common/style.c"
#endif
#ifdef INCLUDE_CALCULATOR
  #include "../../demo/common/calculator.c"
#endif
#ifdef INCLUDE_CANVAS
  #include "../../demo/common/canvas.c"
#endif
#ifdef INCLUDE_OVERVIEW
  #include "../../demo/common/overview.c"
#endif
#ifdef INCLUDE_CONFIGURATOR
  #include "../../demo/common/style_configurator.c"
#endif
#ifdef INCLUDE_NODE_EDITOR
  #include "../../demo/common/node_editor.c"
#endif

/* ===============================================================
 *
 *                          DEMO
 *
 * ===============================================================*/
int main(void)
{
    /* Platform */
    ALLEGRO_DISPLAY *display = NULL;
    ALLEGRO_EVENT_QUEUE *event_queue = NULL;
    NkAllegro5Font *font;
    struct nk_context *ctx;

    #ifdef INCLUDE_CONFIGURATOR
    static struct nk_color color_table[NK_COLOR_COUNT];
    memcpy(color_table, nk_default_color_style, sizeof(color_table));
    #endif

    if (!al_init()) {
        fprintf(stdout, "failed to initialize allegro5!\n");
        exit(1);
    }

    al_install_mouse();
    al_set_mouse_wheel_precision(150);
    al_install_keyboard();

    al_set_new_display_flags(ALLEGRO_WINDOWED|ALLEGRO_RESIZABLE|ALLEGRO_OPENGL);
    al_set_new_display_option(ALLEGRO_SAMPLE_BUFFERS, 1, ALLEGRO_SUGGEST);
    al_set_new_display_option(ALLEGRO_SAMPLES, 8, ALLEGRO_SUGGEST);
    display = al_create_display(WINDOW_WIDTH, WINDOW_HEIGHT);
    if (!display) {
        fprintf(stdout, "failed to create display!\n");
        exit(1);
    }

    event_queue = al_create_event_queue();
    if (!event_queue) {
        fprintf(stdout, "failed to create event_queue!\n");
        al_destroy_display(display);
        exit(1);
    }

    al_register_event_source(event_queue, al_get_display_event_source(display));
    al_register_event_source(event_queue, al_get_mouse_event_source());
    al_register_event_source(event_queue, al_get_keyboard_event_source());

    font = nk_allegro5_font_create_from_file("../../extra_font/Roboto-Regular.ttf", 12, 0);

    ctx = nk_allegro5_init(font, display, WINDOW_WIDTH, WINDOW_HEIGHT);

    while(1)
    {
        bool get_event;
        ALLEGRO_EVENT ev;
        ALLEGRO_TIMEOUT timeout;
        al_init_timeout(&timeout, 0.06);

        get_event = al_wait_for_event_until(event_queue, &ev, &timeout);

        if (get_event && ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) {
            break;
        }

        /* Very Important: Always do nk_input_begin / nk_input_end even if
           there are no events, otherwise internal nuklear state gets messed up */
        nk_input_begin(ctx);
        if (get_event) {
            while (get_event) {
                nk_allegro5_handle_event(&ev);
                get_event = al_get_next_event(event_queue, &ev);
            }
        }
        nk_input_end(ctx);

        /* GUI */
        if (nk_begin(ctx, "Demo", nk_rect(50, 50, 200, 200),
            NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_SCALABLE|
            NK_WINDOW_CLOSABLE|NK_WINDOW_MINIMIZABLE|NK_WINDOW_TITLE))
        {
            enum {EASY, HARD};
            static int op = EASY;
            static int property = 20;

            nk_layout_row_static(ctx, 30, 80, 1);
            if (nk_button_label(ctx, "button"))
                fprintf(stdout, "button pressed\n");
            nk_layout_row_dynamic(ctx, 30, 2);
            if (nk_option_label(ctx, "easy", op == EASY)) op = EASY;
            if (nk_option_label(ctx, "hard", op == HARD)) op = HARD;
            nk_layout_row_dynamic(ctx, 22, 1);
            nk_property_int(ctx, "Compression:", 0, &property, 100, 10, 1);
        }
        nk_end(ctx);

        /* -------------- EXAMPLES ---------------- */
        #ifdef INCLUDE_CALCULATOR
          calculator(ctx);
        #endif
        #ifdef INCLUDE_CANVAS
          canvas(ctx);
        #endif
        #ifdef INCLUDE_OVERVIEW
          overview(ctx);
        #endif
        #ifdef INCLUDE_CONFIGURATOR
          style_configurator(ctx, color_table);
        #endif
        #ifdef INCLUDE_NODE_EDITOR
          node_editor(ctx);
        #endif
        /* ----------------------------------------- */

        /* Draw */
        al_clear_to_color(al_map_rgb(19, 43, 81));
        /* IMPORTANT: `nk_allegro5_render` changes the target backbuffer
        to the display set at initialization and does not restore it.
        Change it if you want to draw somewhere else. */
        nk_allegro5_render();
        al_flip_display();
    }

    nk_allegro5_font_del(font);
    nk_allegro5_shutdown();
    al_destroy_display(display);
    al_destroy_event_queue(event_queue);
    return 0;
}



================================================
FILE: demo/allegro5/nuklear_allegro5.h
================================================
/*
 * Nuklear - 1.32.0 - public domain
 * no warrenty implied; use at your own risk.
 * authored from 2015-2016 by Micha Mettke
 */
/*
 * ==============================================================
 *
 *                              API
 *
 * ===============================================================
 */
#ifndef NK_ALLEGRO5_H_
#define NK_ALLEGRO5_H_

#include <string.h>
#include <allegro5/allegro.h>
#include <allegro5/allegro_image.h>
#include <allegro5/allegro_primitives.h>
#include <allegro5/allegro_font.h>
#include <allegro5/allegro_ttf.h>

typedef struct NkAllegro5Font NkAllegro5Font;
NK_API struct nk_context*     nk_allegro5_init(NkAllegro5Font *font, ALLEGRO_DISPLAY *dsp,
                                  unsigned int width, unsigned int height);
NK_API int                    nk_allegro5_handle_event(ALLEGRO_EVENT *ev);
NK_API void                   nk_allegro5_shutdown(void);
NK_API void                   nk_allegro5_render(void);

NK_API struct nk_image*       nk_allegro5_create_image(const char* file_name);
NK_API void                   nk_allegro5_del_image(struct nk_image* image);

/* Fonts. We wrap normal allegro fonts in some nuklear book keeping */
NK_API NkAllegro5Font*        nk_allegro5_font_create_from_file(const char *file_name, int font_size, int flags);
NK_API void                   nk_allegro5_font_del(NkAllegro5Font *font);
/* NOTE : just use NkAllegro5Font instead of nk_user_font,
    since the former just extends the latter*/
NK_API void                   nk_allegro5_font_set_font(NkAllegro5Font *font);

#endif
/*
 * ==============================================================
 *
 *                          IMPLEMENTATION
 *
 * ===============================================================
 */
#ifdef NK_ALLEGRO5_IMPLEMENTATION
#include <stdio.h>

#ifndef NK_ALLEGRO5_TEXT_MAX
#define NK_ALLEGRO5_TEXT_MAX 256
#endif


struct NkAllegro5Font {
    struct nk_user_font nk;
    ALLEGRO_FONT *font;
};

static struct nk_allegro5 {
    ALLEGRO_DISPLAY *dsp;
    unsigned int width;
    unsigned int height;
    int is_touch_down;
    int touch_down_id;
    struct nk_context ctx;
    struct nk_buffer cmds;
    float delta_time_seconds_last;
} allegro5;


NK_API struct nk_image* nk_allegro5_create_image(const char* file_name)
{
    ALLEGRO_BITMAP *bitmap;
    struct nk_image *image;
    if (!al_init_image_addon()) {
        fprintf(stdout, "Unable to initialize required allegro5 image addon\n");
        exit(1);
    }

    bitmap = al_load_bitmap(file_name);
    if (bitmap == NULL) {
        fprintf(stdout, "Unable to load image file: %s\n", file_name);
        return NULL;
    }

    image = (struct nk_image*)calloc(1, sizeof(struct nk_image));
    image->handle.ptr = bitmap;
    image->w = al_get_bitmap_width(bitmap);
    image->h = al_get_bitmap_height(bitmap);
    return image;
}

NK_API void nk_allegro5_del_image(struct nk_image* image)
{
    if(!image) return;
    al_destroy_bitmap(image->handle.ptr);
    free(image);
}

static float
nk_allegro5_font_get_text_width(nk_handle handle, float height, const char *text, int len)
{
    float width;
    char *str;
    NkAllegro5Font *font = (NkAllegro5Font*)handle.ptr;
    NK_UNUSED(height);
    if (!font || !text) {
        return 0;
    }
    /* We must copy into a new buffer with exact length null-terminated
       as nuklear uses variable size buffers and al_get_text_width doesn't
       accept a length, it infers length from null-termination
       (which is unsafe API design by allegro devs!) */
    str = calloc((size_t)len + 1, 1);
    if(!str) return 0;
    strncpy(str, text, len);
    width = al_get_text_width(font->font, str);
    free(str);
    return width;
}

/* Flags are identical to al_load_font() flags argument */
NK_API NkAllegro5Font*
nk_allegro5_font_create_from_file(const char *file_name, int font_size, int flags)
{
    NkAllegro5Font *font;
    if (!al_init_image_addon()) {
        fprintf(stdout, "Unable to initialize required allegro5 image addon\n");
        exit(1);
    }
    if (!al_init_font_addon()) {
        fprintf(stdout, "Unable to initialize required allegro5 font addon\n");
        exit(1);
    }
    if (!al_init_ttf_addon()) {
        fprintf(stdout, "Unable to initialize required allegro5 TTF font addon\n");
        exit(1);
    }
    font = (NkAllegro5Font*)calloc(1, sizeof(NkAllegro5Font));

    font->font = al_load_font(file_name, font_size, flags);
    if (font->font == NULL) {
        fprintf(stdout, "Unable to load font file: %s\n", file_name);
        return NULL;
    }
    font->nk.userdata = nk_handle_ptr(font);
    font->nk.height = (float)al_get_font_line_height(font->font);
    font->nk.width = nk_allegro5_font_get_text_width;
    return font;
}

NK_API void
nk_allegro5_font_set_font(NkAllegro5Font *allegro5font)
{
    struct nk_user_font *font = &allegro5font->nk;
    nk_style_set_font(&allegro5.ctx, font);
}

NK_API void
nk_allegro5_font_del(NkAllegro5Font *font)
{
    if(!font) return;
    al_destroy_font(font->font);
    free(font);
}

static ALLEGRO_COLOR
nk_color_to_allegro_color(struct nk_color color)
{
    return al_map_rgba((unsigned char)color.r, (unsigned char)color.g,
                (unsigned char)color.b, (unsigned char)color.a);
}

NK_API void
nk_allegro5_render()
{
    const struct nk_command *cmd;

    /* Update the timer */
    float now = (float)al_get_time();
    allegro5.ctx.delta_time_seconds = now - allegro5.delta_time_seconds_last;
    allegro5.delta_time_seconds_last = now;

    al_set_target_backbuffer(allegro5.dsp);

    nk_foreach(cmd, &allegro5.ctx)
    {
        ALLEGRO_COLOR color;
        switch (cmd->type) {
        case NK_COMMAND_NOP: break;
        case NK_COMMAND_SCISSOR: {
            const struct nk_command_scissor *s =(const struct nk_command_scissor*)cmd;
            al_set_clipping_rectangle((int)s->x, (int)s->y, (int)s->w, (int)s->h);
        } break;
        case NK_COMMAND_LINE: {
            const struct nk_command_line *l = (const struct nk_command_line *)cmd;
            color = nk_color_to_allegro_color(l->color);
            al_draw_line((float)l->begin.x, (float)l->begin.y, (float)l->end.x,
                (float)l->end.y, color, (float)l->line_thickness);
        } break;
        case NK_COMMAND_RECT: {
            const struct nk_command_rect *r = (const struct nk_command_rect *)cmd;
            color = nk_color_to_allegro_color(r->color);
            al_draw_rounded_rectangle((float)r->x, (float)r->y, (float)(r->x + r->w),
                (float)(r->y + r->h), (float)r->rounding, (float)r->rounding, color,
                (float)r->line_thickness);
        } break;
        case NK_COMMAND_RECT_FILLED: {
            const struct nk_command_rect_filled *r = (const struct nk_command_rect_filled *)cmd;
            color = nk_color_to_allegro_color(r->color);
            al_draw_filled_rounded_rectangle((float)r->x, (float)r->y,
                (float)(r->x + r->w), (float)(r->y + r->h), (float)r->rounding,
                (float)r->rounding, color);
        } break;
        case NK_COMMAND_CIRCLE: {
            float xr, yr;
            const struct nk_command_circle *c = (const struct nk_command_circle *)cmd;
            color = nk_color_to_allegro_color(c->color);
            xr = (float)c->w/2;
            yr = (float)c->h/2;
            al_draw_ellipse(((float)(c->x)) + xr, ((float)c->y) + yr,
                xr, yr, color, (float)c->line_thickness);
        } break;
        case NK_COMMAND_CIRCLE_FILLED: {
            float xr, yr;
            const struct nk_command_circle_filled *c = (const struct nk_command_circle_filled *)cmd;
            color = nk_color_to_allegro_color(c->color);
            xr = (float)c->w/2;
            yr = (float)c->h/2;
            al_draw_filled_ellipse(((float)(c->x)) + xr, ((float)c->y) + yr,
                xr, yr, color);
        } break;
        case NK_COMMAND_TRIANGLE: {
            const struct nk_command_triangle*t = (const struct nk_command_triangle*)cmd;
            color = nk_color_to_allegro_color(t->color);
            al_draw_triangle((float)t->a.x, (float)t->a.y, (float)t->b.x, (float)t->b.y,
                (float)t->c.x, (float)t->c.y, color, (float)t->line_thickness);
        } break;
        case NK_COMMAND_TRIANGLE_FILLED: {
            const struct nk_command_triangle_filled *t = (const struct nk_command_triangle_filled *)cmd;
            color = nk_color_to_allegro_color(t->color);
            al_draw_filled_triangle((float)t->a.x, (float)t->a.y, (float)t->b.x,
                (float)t->b.y, (float)t->c.x, (float)t->c.y, color);
        } break;
        case NK_COMMAND_POLYGON: {
            int i;
            float *vertices;
            const struct nk_command_polygon *p = (const struct nk_command_polygon*)cmd;
            vertices = calloc(p->point_count * 2, sizeof(float));
            color = nk_color_to_allegro_color(p->color);
            for (i = 0; i < p->point_count; i++) {
                vertices[i*2] = p->points[i].x;
                vertices[(i*2) + 1] = p->points[i].y;
            }
            al_draw_polyline(vertices, (2 * sizeof(float)),
                (int)p->point_count, ALLEGRO_LINE_JOIN_ROUND, ALLEGRO_LINE_CAP_CLOSED,
                color, (float)p->line_thickness, 0.0);
            free(vertices);
        } break;
        case NK_COMMAND_POLYGON_FILLED: {
            int i, j = 0;
            float *vertices;
            const struct nk_command_polygon_filled *p = (const struct nk_command_polygon_filled *)cmd;
            vertices = calloc(p->point_count * 2, sizeof(float));
            color = nk_color_to_allegro_color(p->color);
            for (i = p->point_count - 1; i >= 0; i--) {
                vertices[j++] = p->points[i].x;
                vertices[j++] = p->points[i].y;
            }
            al_draw_filled_polygon(vertices, (int)p->point_count, color);
            free(vertices);
        } break;
        case NK_COMMAND_POLYLINE: {
            int i;
            float *vertices;
            const struct nk_command_polyline *p = (const struct nk_command_polyline *)cmd;
            vertices = calloc(p->point_count * 2, sizeof(float));
            color = nk_color_to_allegro_color(p->color);
            for (i = 0; i < p->point_count; i++) {
                vertices[i*2] = p->points[i].x;
                vertices[(i*2) + 1] = p->points[i].y;
            }
            al_draw_polyline(vertices, (2 * sizeof(float)),
                (int)p->point_count, ALLEGRO_LINE_JOIN_ROUND, ALLEGRO_LINE_CAP_ROUND,
                color, (float)p->line_thickness, 0.0);
            free(vertices);
        } break;
        case NK_COMMAND_TEXT: {
            NkAllegro5Font *font;
            const struct nk_command_text *t = (const struct nk_command_text*)cmd;
            color = nk_color_to_allegro_color(t->foreground);
            font = (NkAllegro5Font*)t->font->userdata.ptr;
            al_draw_text(font->font,
                color, (float)t->x, (float)t->y, 0,
                (const char*)t->string);
        } break;
        case NK_COMMAND_CURVE: {
            float points[8];
            const struct nk_command_curve *q = (const struct nk_command_curve *)cmd;
            color = nk_color_to_allegro_color(q->color);
            points[0] = (float)q->begin.x;
            points[1] = (float)q->begin.y;
            points[2] = (float)q->ctrl[0].x;
            points[3] = (float)q->ctrl[0].y;
            points[4] = (float)q->ctrl[1].x;
            points[5] = (float)q->ctrl[1].y;
            points[6] = (float)q->end.x;
            points[7] = (float)q->end.y;
            al_draw_spline(points, color, (float)q->line_thickness);
        } break;
        case NK_COMMAND_ARC: {
            const struct nk_command_arc *a = (const struct nk_command_arc *)cmd;
            color = nk_color_to_allegro_color(a->color);
            al_draw_pieslice((float)a->cx, (float)a->cy, (float)a->r, a->a[0],
                a->a[1], color, (float)a->line_thickness);
        } break;
        case NK_COMMAND_ARC_FILLED: {
            const struct nk_command_arc_filled *a = (const struct nk_command_arc_filled *)cmd;
            color = nk_color_to_allegro_color(a->color);
            al_draw_filled_pieslice((float)a->cx, (float)a->cy, (float)a->r, a->a[0],
                a->a[1], color);
        } break;
        case NK_COMMAND_IMAGE: {
            const struct nk_command_image *i = (const struct nk_command_image *)cmd;
            nk_ushort
                x = i->img.region[0],
                y = i->img.region[1],
                w = i->img.region[2],
                h = i->img.region[3];
            if(w == 0 && h == 0)
            {
                x = i->x; y = i->y; w = i->w; h = i->h;
            }
            al_draw_scaled_bitmap(i->img.handle.ptr,
                                  x, y, w, h, i->x, i->y, i->w, i->h, 0);
        } break;
        case NK_COMMAND_RECT_MULTI_COLOR:
        default: break;
        }
    }
    nk_clear(&allegro5.ctx);
}

NK_API int
nk_allegro5_handle_event(ALLEGRO_EVENT *ev)
{
    struct nk_context *ctx = &allegro5.ctx;
    static int insert_toggle = 0;
    switch (ev->type) {
        case ALLEGRO_EVENT_DISPLAY_RESIZE: {
            allegro5.width = (unsigned int)ev->display.width;
            allegro5.height = (unsigned int)ev->display.height;
            al_acknowledge_resize(ev->display.source);
            return 1;
        } break;
        case ALLEGRO_EVENT_MOUSE_AXES: {
            nk_input_motion(ctx, ev->mouse.x, ev->mouse.y);
            if (ev->mouse.dz != 0) {
                nk_input_scroll(ctx, nk_vec2(0,(float)ev->mouse.dz / al_get_mouse_wheel_precision()));
            }
            return 1;
        } break;
        case ALLEGRO_EVENT_MOUSE_BUTTON_DOWN:
        case ALLEGRO_EVENT_MOUSE_BUTTON_UP: {
            int button;
            switch (ev->mouse.button) {
                case 1: button = NK_BUTTON_LEFT; break;
                case 2: button = NK_BUTTON_RIGHT; break;
                case 3: button = NK_BUTTON_MIDDLE; break;
                case 4: button = NK_BUTTON_X1; break;
                case 5: button = NK_BUTTON_X2; break;
                default: return 0;
            }
            nk_input_button(ctx, button, ev->mouse.x, ev->mouse.y, ev->type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN);
            return 1;
        } break;
        /* This essentially converts touch events to mouse events */
        case ALLEGRO_EVENT_TOUCH_BEGIN:
        case ALLEGRO_EVENT_TOUCH_END: {
            /* We only acknowledge one touch at a time. Otherwise, each touch
               would be manipulating multiple nuklear elements, as if there
               were multiple mouse cursors */
            if (allegro5.is_touch_down && allegro5.touch_down_id != ev->touch.id) {
                return 0;
            }
            if (ev->type == ALLEGRO_EVENT_TOUCH_BEGIN) {
                allegro5.is_touch_down = 1;
                allegro5.touch_down_id = ev->touch.id;
                /* FIXME: This is a hack to properly simulate
                   touches as a mouse with nuklear. If you instantly jump
                   from one place to another without an nk_input_end(), it
                   confuses the nuklear state. nuklear expects smooth mouse
                   movements, which is unlike a touch screen */
                nk_input_motion(ctx, (int)ev->touch.x, (int)ev->touch.y);
                nk_input_end(ctx);
                nk_input_begin(ctx);
            }
            else {
                allegro5.is_touch_down = 0;
                allegro5.touch_down_id = -1;
            }
            nk_input_button(ctx, NK_BUTTON_LEFT, (int)ev->touch.x, (int)ev->touch.y, ev->type == ALLEGRO_EVENT_TOUCH_BEGIN);
            return 1;
        } break;
        case ALLEGRO_EVENT_TOUCH_MOVE: {
            /* Only acknowledge movements of a single touch, we are
               simulating a mouse cursor */
            if (!allegro5.is_touch_down || allegro5.touch_down_id != ev->touch.id) {
                return 0;
            }
            nk_input_motion(ctx, (int)ev->touch.x, (int)ev->touch.y);
            return 1;
        } break;
        case ALLEGRO_EVENT_KEY_DOWN:
        case ALLEGRO_EVENT_KEY_UP: {
            int kc = ev->keyboard.keycode;
            int down = ev->type == ALLEGRO_EVENT_KEY_DOWN;

            /* do we need this? */
            if (kc == ALLEGRO_KEY_LSHIFT || kc == ALLEGRO_KEY_RSHIFT) nk_input_key(ctx, NK_KEY_SHIFT, down);
            else if (kc == ALLEGRO_KEY_ESCAPE)    nk_input_key(ctx, NK_KEY_TEXT_RESET_MODE, down);
            else if (kc == ALLEGRO_KEY_PGUP)      nk_input_key(ctx, NK_KEY_SCROLL_UP, down);
            else if (kc == ALLEGRO_KEY_PGDN)      nk_input_key(ctx, NK_KEY_SCROLL_DOWN, down);
            else if (kc == ALLEGRO_KEY_INSERT) {
                if (down) insert_toggle = !insert_toggle;
                if (insert_toggle) {
                    nk_input_key(ctx, NK_KEY_TEXT_INSERT_MODE, down);
                    /* nk_input_key(ctx, NK_KEY_TEXT_REPLACE_MODE, !down); */
                } else {
                    nk_input_key(ctx, NK_KEY_TEXT_REPLACE_MODE, down);
                    /* nk_input_key(ctx, NK_KEY_TEXT_INSERT_MODE, !down); */
                }
            } else if (kc == ALLEGRO_KEY_HOME) {
                nk_input_key(ctx, NK_KEY_TEXT_START, down);
                nk_input_key(ctx, NK_KEY_SCROLL_START, down);
            } else if (kc == ALLEGRO_KEY_END) {
                nk_input_key(ctx, NK_KEY_TEXT_END, down);
                nk_input_key(ctx, NK_KEY_SCROLL_END, down);
            }
            return 1;
        } break;
        case ALLEGRO_EVENT_KEY_CHAR: {
            int kc = ev->keyboard.keycode;
            int repeat = ev->keyboard.repeat;
            int control_mask = (ev->keyboard.modifiers & ALLEGRO_KEYMOD_CTRL) ||
                               (ev->keyboard.modifiers & ALLEGRO_KEYMOD_COMMAND);

            if (kc == ALLEGRO_KEY_C && control_mask && !repeat) {
                nk_input_key(ctx, NK_KEY_COPY, 1);
            } else if (kc == ALLEGRO_KEY_V && control_mask) {
                nk_input_key(ctx, NK_KEY_PASTE, 1);
            } else if (kc == ALLEGRO_KEY_X && control_mask && !repeat) {
                nk_input_key(ctx, NK_KEY_CUT, 1);
            } else if (kc == ALLEGRO_KEY_Z && control_mask) {
                nk_input_key(ctx, NK_KEY_TEXT_UNDO, 1);
            } else if (kc == ALLEGRO_KEY_R && control_mask) {
                nk_input_key(ctx, NK_KEY_TEXT_REDO, 1);
            } else if (kc == ALLEGRO_KEY_A && control_mask && !repeat) {
                nk_input_key(ctx, NK_KEY_TEXT_SELECT_ALL, 1);
            } else if (kc == ALLEGRO_KEY_BACKSPACE) {
                nk_input_key(ctx, NK_KEY_BACKSPACE, 1);
            } else if (kc == ALLEGRO_KEY_LEFT) {
                if (control_mask) {
                    nk_input_key(ctx, NK_KEY_TEXT_WORD_LEFT, 1);
                } else {
                    nk_input_key(ctx, NK_KEY_LEFT, 1);
                }
            } else if (kc == ALLEGRO_KEY_RIGHT) {
                if (control_mask) {
                    nk_input_key(ctx, NK_KEY_TEXT_WORD_RIGHT, 1);
                } else {
                    nk_input_key(ctx, NK_KEY_RIGHT, 1);
                }
            } else if (kc == ALLEGRO_KEY_UP) {
                nk_input_key(ctx, NK_KEY_UP, 1);
            } else if (kc == ALLEGRO_KEY_DOWN) {
                nk_input_key(ctx, NK_KEY_DOWN, 1);
            } else if (kc == ALLEGRO_KEY_DELETE) {
                nk_input_key(ctx, NK_KEY_DEL, 1);
            } else if (kc == ALLEGRO_KEY_ENTER || kc == ALLEGRO_KEY_PAD_ENTER) {
                nk_input_key(ctx, NK_KEY_ENTER, 1);
            } else if (kc == ALLEGRO_KEY_TAB) {
                nk_input_key(ctx, NK_KEY_TAB, 1);
            } else {
                if (kc != ALLEGRO_KEY_BACKSPACE &&
                    kc != ALLEGRO_KEY_HOME &&
                    kc != ALLEGRO_KEY_END &&
                    kc != ALLEGRO_KEY_ESCAPE &&
                    kc != ALLEGRO_KEY_INSERT &&
                    kc != ALLEGRO_KEY_PGDN &&
                    kc != ALLEGRO_KEY_PGUP) {
                    nk_input_unicode(ctx, ev->keyboard.unichar);
                }
            }
            return 1;
        } break;
        default: return 0; break;
    }
}

NK_INTERN void
nk_allegro5_clipboard_paste(nk_handle usr, struct nk_text_edit *edit)
{
    char *text = al_get_clipboard_text(allegro5.dsp);
    if (text) nk_textedit_paste(edit, text, nk_strlen(text));
    (void)usr;
    al_free(text);
}

NK_INTERN void
nk_allegro5_clipboard_copy(nk_handle usr, const char *text, int len)
{
    char *str = 0;
    (void)usr;
    if (!len) return;
    str = calloc((size_t)len + 1, 1);
    if (!str) return;
    strncpy(str, text, len);
    al_set_clipboard_text(allegro5.dsp, str);
    free(str);
}

NK_API struct nk_context*
nk_allegro5_init(NkAllegro5Font *allegro5font, ALLEGRO_DISPLAY *dsp,
    unsigned int width, unsigned int height)
{
    struct nk_user_font *font;
    if (!al_init_primitives_addon()) {
        fprintf(stdout, "Unable to initialize required allegro5 primitives addon\n");
        exit(1);
    }

    font = &allegro5font->nk;

    allegro5.dsp = dsp;
    allegro5.width = width;
    allegro5.height = height;
    allegro5.is_touch_down = 0;
    allegro5.touch_down_id = -1;
    allegro5.delta_time_seconds_last = (float)al_get_time();

    nk_init_default(&allegro5.ctx, font);
    allegro5.ctx.clip.copy = nk_allegro5_clipboard_copy;
    allegro5.ctx.clip.paste = nk_allegro5_clipboard_paste;
    allegro5.ctx.clip.userdata = nk_handle_ptr(0);
    return &allegro5.ctx;
}

NK_API
void nk_allegro5_shutdown(void)
{
    nk_free(&allegro5.ctx);
    memset(&allegro5, 0, sizeof(allegro5));
}

#endif /* NK_ALLEGRO5_IMPLEMENTATION */



================================================
FILE: demo/common/calculator.c
================================================
/* nuklear - v1.00 - public domain */
static void
calculator(struct nk_context *ctx)
{
    if (nk_begin(ctx, "Calculator", nk_rect(10, 10, 180, 250),
        NK_WINDOW_BORDER|NK_WINDOW_NO_SCROLLBAR|NK_WINDOW_MOVABLE))
    {
        static int set = 0, prev = 0, op = 0;
        static const char numbers[] = "789456123";
        static const char ops[] = "+-*/";
        static double a = 0, b = 0;
        static double *current = &a;

        size_t i = 0;
        int solve = 0;
        {int len; char buffer[256];
        nk_layout_row_dynamic(ctx, 35, 1);
        len = snprintf(buffer, 256, "%.2f", *current);
        nk_edit_string(ctx, NK_EDIT_SIMPLE, buffer, &len, 255, nk_filter_float);
        buffer[len] = 0;
        *current = atof(buffer);}

        nk_layout_row_dynamic(ctx, 35, 4);
        for (i = 0; i < 16; ++i) {
            if (i >= 12 && i < 15) {
                if (i > 12) continue;
                if (nk_button_label(ctx, "C")) {
                    a = b = op = 0; current = &a; set = 0;
                } if (nk_button_label(ctx, "0")) {
                    *current = *current*10.0f; set = 0;
                } if (nk_button_label(ctx, "=")) {
                    solve = 1; prev = op; op = 0;
                }
            } else if (((i+1) % 4)) {
                if (nk_button_text(ctx, &numbers[(i/4)*3+i%4], 1)) {
                    *current = *current * 10.0f + numbers[(i/4)*3+i%4] - '0';
                    set = 0;
                }
            } else if (nk_button_text(ctx, &ops[i/4], 1)) {
                if (!set) {
                    if (current != &b) {
                        current = &b;
                    } else {
                        prev = op;
                        solve = 1;
                    }
                }
                op = ops[i/4];
                set = 1;
            }
        }
        if (solve) {
            if (prev == '+') a = a + b;
            if (prev == '-') a = a - b;
            if (prev == '*') a = a * b;
            if (prev == '/') a = a / b;
            current = &a;
            if (set) current = &b;
            b = 0; set = 0;
        }
    }
    nk_end(ctx);
}



================================================
FILE: demo/common/canvas.c
================================================
/* nuklear - v1.05 - public domain */
struct nk_canvas {
    struct nk_command_buffer *painter;
    struct nk_vec2 item_spacing;
    struct nk_vec2 panel_padding;
    struct nk_style_item window_background;
};

static nk_bool
canvas_begin(struct nk_context *ctx, struct nk_canvas *canvas, nk_flags flags,
    int x, int y, int width, int height, struct nk_color background_color)
{
    /* save style properties which will be overwritten */
    canvas->panel_padding = ctx->style.window.padding;
    canvas->item_spacing = ctx->style.window.spacing;
    canvas->window_background = ctx->style.window.fixed_background;

    /* use the complete window space and set background */
    ctx->style.window.spacing = nk_vec2(0,0);
    ctx->style.window.padding = nk_vec2(0,0);
    ctx->style.window.fixed_background = nk_style_item_color(background_color);

    /* create/update window and set position + size */
    if (!nk_begin(ctx, "Canvas", nk_rect(x, y, width, height), NK_WINDOW_NO_SCROLLBAR|flags))
        return nk_false;

    /* allocate the complete window space for drawing */
    {
        struct nk_rect total_space;
        total_space = nk_window_get_content_region(ctx);
        nk_layout_row_dynamic(ctx, total_space.h, 1);
        nk_widget(&total_space, ctx);
        canvas->painter = nk_window_get_canvas(ctx);
    }

    return nk_true;
}

static void
canvas_end(struct nk_context *ctx, struct nk_canvas *canvas)
{
    nk_end(ctx);
    ctx->style.window.spacing = canvas->panel_padding;
    ctx->style.window.padding = canvas->item_spacing;
    ctx->style.window.fixed_background = canvas->window_background;
}

static void
canvas(struct nk_context *ctx)
{
        struct nk_canvas canvas;
        if (canvas_begin(ctx, &canvas, NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_SCALABLE|
            NK_WINDOW_CLOSABLE|NK_WINDOW_MINIMIZABLE|NK_WINDOW_TITLE, 10, 10, 500, 550, nk_rgb(250,250,250)))
        {
            float x = canvas.painter->clip.x, y = canvas.painter->clip.y;

            nk_fill_rect(canvas.painter, nk_rect(x + 15, y + 15, 210, 210), 5, nk_rgb(247, 230, 154));
            nk_fill_rect(canvas.painter, nk_rect(x + 20, y + 20, 200, 200), 5, nk_rgb(188, 174, 118));
            /* nk_draw_text(canvas.painter, nk_rect(x + 30, y + 30, 150, 20), "Text to draw", 12, &font->handle, nk_rgb(188,174,118), nk_rgb(0,0,0)); */
            nk_fill_rect(canvas.painter, nk_rect(x + 250, y + 20, 100, 100), 0, nk_rgb(0,0,255));
            nk_fill_circle(canvas.painter, nk_rect(x + 20, y + 250, 100, 100), nk_rgb(255,0,0));
            nk_fill_triangle(canvas.painter, x + 250, y + 250, x + 350, y + 250, x + 300, y + 350, nk_rgb(0,255,0));
            nk_fill_arc(canvas.painter, x + 300, y + 420, 50, 0, 3.141592654f * 3.0f / 4.0f, nk_rgb(255,255,0));

            {
                float points[12];
                points[0]  = x + 200; points[1]  = y + 250;
                points[2]  = x + 250; points[3]  = y + 350;
                points[4]  = x + 225; points[5]  = y + 350;
                points[6]  = x + 200; points[7]  = y + 300;
                points[8]  = x + 175; points[9]  = y + 350;
                points[10] = x + 150; points[11] = y + 350;
                nk_fill_polygon(canvas.painter, points, 6, nk_rgb(0,0,0));
            }

            {
                float points[12];
                points[0]  = x + 200; points[1]  = y + 370;
                points[2]  = x + 250; points[3]  = y + 470;
                points[4]  = x + 225; points[5]  = y + 470;
                points[6]  = x + 200; points[7]  = y + 420;
                points[8]  = x + 175; points[9]  = y + 470;
                points[10] = x + 150; points[11] = y + 470;
                nk_stroke_polygon(canvas.painter, points, 6, 4, nk_rgb(0,0,0));
            }

            {
                float points[8];
                points[0]  = x + 250; points[1]  = y + 200;
                points[2]  = x + 275; points[3]  = y + 220;
                points[4]  = x + 325; points[5]  = y + 170;
                points[6]  = x + 350; points[7]  = y + 200;
                nk_stroke_polyline(canvas.painter, points, 4, 2, nk_rgb(255,128,0));
            }

            nk_stroke_line(canvas.painter, x + 15, y + 10, x + 200, y + 10, 2.0f, nk_rgb(189,45,75));
            nk_stroke_rect(canvas.painter, nk_rect(x + 370, y + 20, 100, 100), 10, 3, nk_rgb(0,0,255));
            nk_stroke_curve(canvas.painter, x + 380, y + 200, x + 405, y + 270, x + 455, y + 120, x + 480, y + 200, 2, nk_rgb(0,150,220));
            nk_stroke_circle(canvas.painter, nk_rect(x + 20, y + 370, 100, 100), 5, nk_rgb(0,255,120));
            nk_stroke_triangle(canvas.painter, x + 370, y + 250, x + 470, y + 250, x + 420, y + 350, 6, nk_rgb(255,0,143));
            nk_stroke_arc(canvas.painter, x + 420, y + 420, 50, 0, 3.141592654f * 3.0f / 4.0f, 5, nk_rgb(0,255,255));
        }
        canvas_end(ctx, &canvas);
}



================================================
FILE: demo/common/file_browser.c
================================================
#include <string.h> // strcpy, strlen

#ifdef __unix__
#include <dirent.h>
#include <unistd.h>
#endif

#ifndef _WIN32
# include <pwd.h>
#endif

struct icons {
    struct nk_image desktop;
    struct nk_image home;
    struct nk_image computer;
    struct nk_image directory;

    struct nk_image default_file;
    struct nk_image text_file;
    struct nk_image music_file;
    struct nk_image font_file;
    struct nk_image img_file;
    struct nk_image movie_file;
};

enum file_groups {
    FILE_GROUP_DEFAULT,
    FILE_GROUP_TEXT,
    FILE_GROUP_MUSIC,
    FILE_GROUP_FONT,
    FILE_GROUP_IMAGE,
    FILE_GROUP_MOVIE,
    FILE_GROUP_MAX
};

enum file_types {
    FILE_DEFAULT,
    FILE_TEXT,
    FILE_C_SOURCE,
    FILE_CPP_SOURCE,
    FILE_HEADER,
    FILE_CPP_HEADER,
    FILE_MP3,
    FILE_WAV,
    FILE_OGG,
    FILE_TTF,
    FILE_BMP,
    FILE_PNG,
    FILE_JPEG,
    FILE_PCX,
    FILE_TGA,
    FILE_GIF,
    FILE_MAX
};

struct file_group {
    enum file_groups group;
    const char *name;
    struct nk_image *icon;
};

struct file {
    enum file_types type;
    const char *suffix;
    enum file_groups group;
};

struct media {
    int font;
    int icon_sheet;
    struct icons icons;
    struct file_group group[FILE_GROUP_MAX];
    struct file files[FILE_MAX];
};

#define MAX_PATH_LEN 512
struct file_browser {
    /* path */
    char file[MAX_PATH_LEN];
    char home[MAX_PATH_LEN];
    char desktop[MAX_PATH_LEN];
    char directory[MAX_PATH_LEN];

    /* directory content */
    char **files;
    char **directories;
    size_t file_count;
    size_t dir_count;
    struct media *media;
};

static void
die(const char *fmt, ...)
{
    va_list ap;
    va_start(ap, fmt);
    vfprintf(stderr, fmt, ap);
    va_end(ap);
    fputs("\n", stderr);
    exit(EXIT_FAILURE);
}

static struct nk_image
icon_load(const char *filename)
{
    int x,y,n;
    GLuint tex;
    unsigned char *data = stbi_load(filename, &x, &y, &n, 0);
    if (!data) die("[SDL]: failed to load image: %s", filename);

    glGenTextures(1, &tex);
    glBindTexture(GL_TEXTURE_2D, tex);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_NEAREST);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, x, y, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
    glGenerateMipmap(GL_TEXTURE_2D);
    stbi_image_free(data);
    return nk_image_id((int)tex);
}

#if 0
static char*
file_load(const char* path, size_t* siz)
{
    char *buf;
    FILE *fd = fopen(path, "rb");
    if (!fd) die("Failed to open file: %s\n", path);
    fseek(fd, 0, SEEK_END);
    *siz = (size_t)ftell(fd);
    fseek(fd, 0, SEEK_SET);
    buf = (char*)calloc(*siz, 1);
    fread(buf, *siz, 1, fd);
    fclose(fd);
    return buf;
}
#endif

static char*
str_duplicate(const char *src)
{
    char *ret;
    size_t len = strlen(src);
    if (!len) return 0;
    ret = (char*)malloc(len+1);
    if (!ret) return 0;
    memcpy(ret, src, len);
    ret[len] = '\0';
    return ret;
}

static void
dir_free_list(char **list, size_t size)
{
    size_t i;
    for (i = 0; i < size; ++i)
        free(list[i]);
    free(list);
}

static char**
dir_list(const char *dir, int return_subdirs, size_t *count)
{
    size_t n = 0;
    char buffer[MAX_PATH_LEN];
    char **results = NULL;
    const DIR *none = NULL;
    size_t capacity = 32;
    size_t size;
    DIR *z;

    assert(dir);
    assert(count);
    strncpy(buffer, dir, MAX_PATH_LEN);
    buffer[MAX_PATH_LEN - 1] = 0;
    n = strlen(buffer);

    if (n > 0 && (buffer[n-1] != '/'))
        buffer[n++] = '/';

    size = 0;

    z = opendir(dir);
    if (z != none) {
        int nonempty = 1;
        struct dirent *data = readdir(z);
        nonempty = (data != NULL);
        if (!nonempty) return NULL;

        do {
            DIR *y;
            char *p;
            int is_subdir;
            if (data->d_name[0] == '.')
                continue;

            strncpy(buffer + n, data->d_name, MAX_PATH_LEN-n);
            y = opendir(buffer);
            is_subdir = (y != NULL);
            if (y != NULL) closedir(y);

            if ((return_subdirs && is_subdir) || (!is_subdir && !return_subdirs)){
                if (!size) {
                    results = (char**)calloc(sizeof(char*), capacity);
                } else if (size >= capacity) {
                    void *old = results;
                    capacity = capacity * 2;
                    results = (char**)realloc(results, capacity * sizeof(char*));
                    assert(results);
                    if (!results) free(old);
                }
                p = str_duplicate(data->d_name);
                results[size++] = p;
            }
        } while ((data = readdir(z)) != NULL);
    }

    if (z) closedir(z);
    *count = size;
    return results;
}

static struct file_group
FILE_GROUP(enum file_groups group, const char *name, struct nk_image *icon)
{
    struct file_group fg;
    fg.group = group;
    fg.name = name;
    fg.icon = icon;
    return fg;
}

static struct file
FILE_DEF(enum file_types type, const char *suffix, enum file_groups group)
{
    struct file fd;
    fd.type = type;
    fd.suffix = suffix;
    fd.group = group;
    return fd;
}

static struct nk_image*
media_icon_for_file(struct media *media, const char *file)
{
    int i = 0;
    const char *s = file;
    char suffix[4];
    int found = 0;
    memset(suffix, 0, sizeof(suffix));

    /* extract suffix .xxx from file */
    while (*s++ != '\0') {
        if (found && i < 3)
            suffix[i++] = *s;

        if (*s == '.') {
            if (found){
                found = 0;
                break;
            }
            found = 1;
        }
    }

    /* check for all file definition of all groups for fitting suffix*/
    for (i = 0; i < FILE_MAX && found; ++i) {
        struct file *d = &media->files[i];
        {
            const char *f = d->suffix;
            s = suffix;
            while (f && *f && *s && *s == *f) {
                s++; f++;
            }

            /* found correct file definition so */
            if (f && *s == '\0' && *f == '\0')
                return media->group[d->group].icon;
        }
    }
    return &media->icons.default_file;
}

static void
media_init(struct media *media)
{
    /* file groups */
    struct icons *icons = &media->icons;
    media->group[FILE_GROUP_DEFAULT] = FILE_GROUP(FILE_GROUP_DEFAULT,"default",&icons->default_file);
    media->group[FILE_GROUP_TEXT] = FILE_GROUP(FILE_GROUP_TEXT, "textual", &icons->text_file);
    media->group[FILE_GROUP_MUSIC] = FILE_GROUP(FILE_GROUP_MUSIC, "music", &icons->music_file);
    media->group[FILE_GROUP_FONT] = FILE_GROUP(FILE_GROUP_FONT, "font", &icons->font_file);
    media->group[FILE_GROUP_IMAGE] = FILE_GROUP(FILE_GROUP_IMAGE, "image", &icons->img_file);
    media->group[FILE_GROUP_MOVIE] = FILE_GROUP(FILE_GROUP_MOVIE, "movie", &icons->movie_file);

    /* files */
    media->files[FILE_DEFAULT] = FILE_DEF(FILE_DEFAULT, NULL, FILE_GROUP_DEFAULT);
    media->files[FILE_TEXT] = FILE_DEF(FILE_TEXT, "txt", FILE_GROUP_TEXT);
    media->files[FILE_C_SOURCE] = FILE_DEF(FILE_C_SOURCE, "c", FILE_GROUP_TEXT);
    media->files[FILE_CPP_SOURCE] = FILE_DEF(FILE_CPP_SOURCE, "cpp", FILE_GROUP_TEXT);
    media->files[FILE_HEADER] = FILE_DEF(FILE_HEADER, "h", FILE_GROUP_TEXT);
    media->files[FILE_CPP_HEADER] = FILE_DEF(FILE_HEADER, "hpp", FILE_GROUP_TEXT);
    media->files[FILE_MP3] = FILE_DEF(FILE_MP3, "mp3", FILE_GROUP_MUSIC);
    media->files[FILE_WAV] = FILE_DEF(FILE_WAV, "wav", FILE_GROUP_MUSIC);
    media->files[FILE_OGG] = FILE_DEF(FILE_OGG, "ogg", FILE_GROUP_MUSIC);
    media->files[FILE_TTF] = FILE_DEF(FILE_TTF, "ttf", FILE_GROUP_FONT);
    media->files[FILE_BMP] = FILE_DEF(FILE_BMP, "bmp", FILE_GROUP_IMAGE);
    media->files[FILE_PNG] = FILE_DEF(FILE_PNG, "png", FILE_GROUP_IMAGE);
    media->files[FILE_JPEG] = FILE_DEF(FILE_JPEG, "jpg", FILE_GROUP_IMAGE);
    media->files[FILE_PCX] = FILE_DEF(FILE_PCX, "pcx", FILE_GROUP_IMAGE);
    media->files[FILE_TGA] = FILE_DEF(FILE_TGA, "tga", FILE_GROUP_IMAGE);
    media->files[FILE_GIF] = FILE_DEF(FILE_GIF, "gif", FILE_GROUP_IMAGE);
}

static void
file_browser_reload_directory_content(struct file_browser *browser, const char *path)
{
    strncpy(browser->directory, path, MAX_PATH_LEN);
    browser->directory[MAX_PATH_LEN - 1] = 0;
    dir_free_list(browser->files, browser->file_count);
    dir_free_list(browser->directories, browser->dir_count);
    browser->files = dir_list(path, 0, &browser->file_count);
    browser->directories = dir_list(path, 1, &browser->dir_count);
}

static void
file_browser_init(struct file_browser *browser, struct media *media)
{
    memset(browser, 0, sizeof(*browser));
    browser->media = media;
    {
        /* load files and sub-directory list */
        const char *home = getenv("HOME");
#ifdef _WIN32
        if (!home) home = getenv("USERPROFILE");
#else
        if (!home) home = getpwuid(getuid())->pw_dir;
        {
            size_t l;
            strncpy(browser->home, home, MAX_PATH_LEN);
            browser->home[MAX_PATH_LEN - 1] = 0;
            l = strlen(browser->home);
            strcpy(browser->home + l, "/");
            strcpy(browser->directory, browser->home);
        }
#endif
        {
            size_t l;
            strcpy(browser->desktop, browser->home);
            l = strlen(browser->desktop);
            strcpy(browser->desktop + l, "desktop/");
        }
        browser->files = dir_list(browser->directory, 0, &browser->file_count);
        browser->directories = dir_list(browser->directory, 1, &browser->dir_count);
    }
}

static void
file_browser_free(struct file_browser *browser)
{
    if (browser->files)
        dir_free_list(browser->files, browser->file_count);
    if (browser->directories)
        dir_free_list(browser->directories, browser->dir_count);
    browser->files = NULL;
    browser->directories = NULL;
    memset(browser, 0, sizeof(*browser));
}

int cmp_fn(const void *str1, const void *str2)
{
    const char *str1_ret = *(const char **)str1;
    const char *str2_ret = *(const char **)str2;
    return nk_stricmp(str1_ret, str2_ret);
}

static int
file_browser_run(struct file_browser *browser, struct nk_context *ctx)
{
    int ret = 0;
    struct media *media = browser->media;
    struct nk_rect total_space;
    static nk_bool file_browser_is_open = nk_true;

    if (file_browser_is_open)
    {
        if (nk_begin(ctx, "File Browser", nk_rect(50, 50, 600, 400),
            NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_SCALABLE|NK_WINDOW_NO_SCROLLBAR|
                NK_WINDOW_CLOSABLE|NK_WINDOW_MINIMIZABLE|NK_WINDOW_TITLE))
        {
            static float ratio[] = {0.25f, NK_UNDEFINED};
            float spacing_x = ctx->style.window.spacing.x;

            /* output path directory selector in the menubar */
            ctx->style.window.spacing.x = 0;
            nk_menubar_begin(ctx);
            {
                char *d = browser->directory;
                char *begin = d + 1;
                nk_layout_row_dynamic(ctx, 25, 6);
                while (*d++) {
                    if (*d == '/') {
                        *d = '\0';
                        if (nk_button_label(ctx, begin)) {
                            *d++ = '/'; *d = '\0';
                            file_browser_reload_directory_content(browser, browser->directory);
                            break;
                        }
                        *d = '/';
                        begin = d + 1;
                    }
                }
            }
            nk_menubar_end(ctx);
            ctx->style.window.spacing.x = spacing_x;

            /* window layout */
            total_space = nk_window_get_content_region(ctx);
            nk_layout_row(ctx, NK_DYNAMIC, total_space.h - 40, 2, ratio);

            nk_group_begin(ctx, "Special", NK_WINDOW_NO_SCROLLBAR);
            {
                struct nk_image home = media->icons.home;
                struct nk_image desktop = media->icons.desktop;
                struct nk_image computer = media->icons.computer;

                nk_layout_row_dynamic(ctx, 40, 1);
                if (nk_button_image_label(ctx, home, "home", NK_TEXT_CENTERED))
                    file_browser_reload_directory_content(browser, browser->home);
                if (nk_button_image_label(ctx,desktop,"desktop",NK_TEXT_CENTERED))
                    file_browser_reload_directory_content(browser, browser->desktop);
                if (nk_button_image_label(ctx,computer,"computer",NK_TEXT_CENTERED))
                    file_browser_reload_directory_content(browser, "/");
                nk_group_end(ctx);
            }

            /* output directory content window */
            nk_group_begin(ctx, "Content", NK_WINDOW_BORDER);
            {
                int index = -1;
                size_t i = 0, j = 0;
                size_t rows = 0, cols = 0;
                size_t count = browser->dir_count + browser->file_count;

                /* File icons layout */
                cols = 2;
                rows = count / cols;
                static float ratio2[] = {0.08f, NK_UNDEFINED};
                nk_layout_row(ctx, NK_DYNAMIC, 30, 2, ratio2);
                for (i = 0; i <= rows; i += 1) {
                    size_t n = j + cols;
                    for (; j < count && j < n; ++j) {
                        /* draw one column of icons */
                        if (j < browser->dir_count) {
                            /* draw and execute directory buttons */
                            if (nk_button_image(ctx,media->icons.directory))
                                index = (int)j;

                            qsort(browser->directories, browser->dir_count, sizeof(char *), cmp_fn);
                            nk_label(ctx, browser->directories[j], NK_TEXT_LEFT);
                        } else {
                            /* draw and execute files buttons */
                            struct nk_image *icon;
                            size_t fileIndex = ((size_t)j - browser->dir_count);
                            icon = media_icon_for_file(media,browser->files[fileIndex]);
                            if (nk_button_image(ctx, *icon)) {
                                strncpy(browser->file, browser->directory, MAX_PATH_LEN);
                                n = strlen(browser->file);
                                strncpy(browser->file + n, browser->files[fileIndex], MAX_PATH_LEN - n);
                                ret = 1;
                            }
                        }
                        /* draw one column of labels */
                        if (j >= browser->dir_count) {
                            size_t t = j - browser->dir_count;
                            qsort(browser->files, browser->file_count, sizeof(char *),
Download .txt
gitextract_10wk8iq7/

├── .Doxyfile
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── ci_compile_sources.sh
│   └── workflows/
│       ├── ccpp.yml
│       ├── create-tag.yml
│       └── docs.yml
├── .gitignore
├── LICENSE
├── Makefile
├── Readme.md
├── clib.json
├── demo/
│   ├── allegro5/
│   │   ├── KeyboardHandleriOS.h
│   │   ├── KeyboardHandleriOS.m
│   │   ├── Makefile
│   │   ├── Readme.md
│   │   ├── main.c
│   │   └── nuklear_allegro5.h
│   ├── common/
│   │   ├── calculator.c
│   │   ├── canvas.c
│   │   ├── file_browser.c
│   │   ├── filebrowser/
│   │   │   └── stb_image.h
│   │   ├── node_editor.c
│   │   ├── overview.c
│   │   ├── style.c
│   │   └── style_configurator.c
│   ├── d3d11/
│   │   ├── build.bat
│   │   ├── main.c
│   │   ├── nuklear_d3d11.h
│   │   ├── nuklear_d3d11.hlsl
│   │   ├── nuklear_d3d11_pixel_shader.h
│   │   └── nuklear_d3d11_vertex_shader.h
│   ├── d3d12/
│   │   ├── build.bat
│   │   ├── main.c
│   │   ├── nuklear_d3d12.h
│   │   ├── nuklear_d3d12.hlsl
│   │   ├── nuklear_d3d12_pixel_shader.h
│   │   └── nuklear_d3d12_vertex_shader.h
│   ├── d3d9/
│   │   ├── build.bat
│   │   ├── main.c
│   │   └── nuklear_d3d9.h
│   ├── gdi/
│   │   ├── build.bat
│   │   ├── main.c
│   │   └── nuklear_gdi.h
│   ├── gdi_native_nuklear/
│   │   ├── build.bat
│   │   ├── main.c
│   │   ├── nuklear_gdi.h
│   │   └── window.h
│   ├── gdip/
│   │   ├── build.bat
│   │   ├── main.c
│   │   └── nuklear_gdip.h
│   ├── glfw_opengl2/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_glfw_gl2.h
│   ├── glfw_opengl3/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_glfw_gl3.h
│   ├── glfw_opengl4/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_glfw_gl4.h
│   ├── glfw_vulkan/
│   │   ├── .clang-format
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── main.c
│   │   ├── nuklear_glfw_vulkan.h
│   │   ├── shaders/
│   │   │   ├── demo.frag
│   │   │   └── demo.vert
│   │   └── src/
│   │       ├── Makefile
│   │       ├── README.md
│   │       ├── nuklear_glfw_vulkan.in.h
│   │       └── nuklearshaders/
│   │           ├── nuklear.frag
│   │           └── nuklear.vert
│   ├── rawfb/
│   │   ├── nuklear_rawfb.h
│   │   ├── sdl/
│   │   │   ├── Makefile
│   │   │   └── main.c
│   │   ├── wayland/
│   │   │   ├── .gitignore
│   │   │   ├── Makefile
│   │   │   └── main.c
│   │   └── x11/
│   │       ├── Makefile
│   │       ├── main.c
│   │       └── nuklear_xlib.h
│   ├── sdl3_renderer/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_sdl3_renderer.h
│   ├── sdl_opengl2/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_sdl_gl2.h
│   ├── sdl_opengl3/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_sdl_gl3.h
│   ├── sdl_opengles2/
│   │   ├── Makefile
│   │   ├── Readme.md
│   │   ├── main.c
│   │   └── nuklear_sdl_gles2.h
│   ├── sdl_renderer/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_sdl_renderer.h
│   ├── sdl_vulkan/
│   │   ├── .gitignore
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── main.c
│   │   ├── nuklear_sdl_vulkan.h
│   │   ├── shaders/
│   │   │   ├── demo.frag
│   │   │   └── demo.vert
│   │   └── src/
│   │       ├── Makefile
│   │       ├── README.md
│   │       ├── nuklear_sdl_vulkan.in.h
│   │       └── nuklearshaders/
│   │           ├── nuklear.frag
│   │           └── nuklear.vert
│   ├── sfml_opengl2/
│   │   ├── Makefile
│   │   ├── Readme.md
│   │   ├── main.cpp
│   │   └── nuklear_sfml_gl2.h
│   ├── sfml_opengl3/
│   │   ├── Makefile
│   │   ├── Readme.md
│   │   ├── main.cpp
│   │   └── nuklear_sfml_gl3.h
│   ├── x11/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_xlib.h
│   ├── x11_opengl2/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_xlib_gl2.h
│   ├── x11_opengl3/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── nuklear_xlib_gl3.h
│   └── xcb_cairo/
│       ├── Makefile
│       ├── main.c
│       └── nuklear_xcb.h
├── example/
│   ├── Makefile
│   ├── canvas.c
│   ├── extended.c
│   ├── file_browser.c
│   ├── skinning.c
│   └── stb_image.h
├── nuklear.h
└── src/
    ├── CHANGELOG
    ├── CREDITS
    ├── HEADER.md
    ├── LICENSE
    ├── Readme.md
    ├── build.py
    ├── nuklear.h
    ├── nuklear_9slice.c
    ├── nuklear_buffer.c
    ├── nuklear_button.c
    ├── nuklear_chart.c
    ├── nuklear_color.c
    ├── nuklear_color_picker.c
    ├── nuklear_combo.c
    ├── nuklear_context.c
    ├── nuklear_contextual.c
    ├── nuklear_draw.c
    ├── nuklear_edit.c
    ├── nuklear_font.c
    ├── nuklear_group.c
    ├── nuklear_image.c
    ├── nuklear_input.c
    ├── nuklear_internal.h
    ├── nuklear_knob.c
    ├── nuklear_layout.c
    ├── nuklear_list_view.c
    ├── nuklear_math.c
    ├── nuklear_menu.c
    ├── nuklear_page_element.c
    ├── nuklear_panel.c
    ├── nuklear_pool.c
    ├── nuklear_popup.c
    ├── nuklear_progress.c
    ├── nuklear_property.c
    ├── nuklear_scrollbar.c
    ├── nuklear_selectable.c
    ├── nuklear_slider.c
    ├── nuklear_string.c
    ├── nuklear_style.c
    ├── nuklear_table.c
    ├── nuklear_text.c
    ├── nuklear_text_editor.c
    ├── nuklear_toggle.c
    ├── nuklear_tooltip.c
    ├── nuklear_tree.c
    ├── nuklear_utf8.c
    ├── nuklear_util.c
    ├── nuklear_vertex.c
    ├── nuklear_widget.c
    ├── nuklear_window.c
    ├── paq.bat
    ├── paq.sh
    ├── stb_rect_pack.h
    └── stb_truetype.h
Download .txt
Showing preview only (365K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (6116 symbols across 115 files)

FILE: demo/allegro5/main.c
  function main (line 81) | int main(void)

FILE: demo/allegro5/nuklear_allegro5.h
  type NkAllegro5Font (line 23) | typedef struct NkAllegro5Font NkAllegro5Font;
  type nk_image (line 31) | struct nk_image
  type NkAllegro5Font (line 56) | struct NkAllegro5Font {
  type nk_allegro5 (line 61) | struct nk_allegro5 {
  function nk_image (line 73) | nk_image* nk_allegro5_create_image(const char* file_name)
  function NK_API (line 95) | NK_API void nk_allegro5_del_image(struct nk_image* image)
  function nk_allegro5_font_get_text_width (line 102) | static float
  function NK_API (line 125) | NK_API NkAllegro5Font*
  function NK_API (line 154) | NK_API void
  function NK_API (line 161) | NK_API void
  function ALLEGRO_COLOR (line 169) | static ALLEGRO_COLOR
  function NK_API (line 176) | NK_API void
  function NK_API (line 346) | NK_API int
  function NK_INTERN (line 503) | NK_INTERN void
  function NK_INTERN (line 512) | NK_INTERN void
  function nk_context (line 525) | nk_context*
  function NK_API (line 551) | NK_API

FILE: demo/common/calculator.c
  function calculator (line 2) | static void

FILE: demo/common/canvas.c
  type nk_canvas (line 2) | struct nk_canvas {
  function nk_bool (line 9) | static nk_bool
  function canvas_end (line 39) | static void
  function canvas (line 48) | static void

FILE: demo/common/file_browser.c
  type icons (line 12) | struct icons {
  type file_groups (line 26) | enum file_groups {
  type file_types (line 36) | enum file_types {
  type file_group (line 56) | struct file_group {
  type file (line 62) | struct file {
  type media (line 68) | struct media {
  type file_browser (line 77) | struct file_browser {
  function die (line 92) | static void
  function icon_load (line 103) | static struct nk_image
  function dir_free_list (line 153) | static void
  type dirent (line 187) | struct dirent
  function FILE_GROUP (line 224) | static struct file_group
  function FILE_DEF (line 234) | static struct file
  type nk_image (line 244) | struct nk_image
  type media (line 245) | struct media
  type file (line 269) | struct file
  function media_init (line 285) | static void
  function file_browser_reload_directory_content (line 316) | static void
  function file_browser_init (line 327) | static void
  function file_browser_free (line 359) | static void
  function cmp_fn (line 371) | int cmp_fn(const void *str1, const void *str2)
  function file_browser_run (line 378) | static int

FILE: demo/common/filebrowser/stb_image.h
  type stbi_uc (line 385) | typedef unsigned char stbi_uc;
  type stbi_us (line 386) | typedef unsigned short stbi_us;
  type stbi_io_callbacks (line 409) | typedef struct
  type stbi__uint16 (line 640) | typedef unsigned short stbi__uint16;
  type stbi__int16 (line 641) | typedef   signed short stbi__int16;
  type stbi__uint32 (line 642) | typedef unsigned int   stbi__uint32;
  type stbi__int32 (line 643) | typedef   signed int   stbi__int32;
  type stbi__uint16 (line 646) | typedef uint16_t stbi__uint16;
  type stbi__int16 (line 647) | typedef int16_t  stbi__int16;
  type stbi__uint32 (line 648) | typedef uint32_t stbi__uint32;
  type stbi__int32 (line 649) | typedef int32_t  stbi__int32;
  function stbi__cpuid3 (line 730) | static int stbi__cpuid3(void)
  function stbi__sse2_available (line 752) | static int stbi__sse2_available(void)
  function stbi__sse2_available (line 763) | static int stbi__sse2_available(void)
  type stbi__context (line 803) | typedef struct
  function stbi__start_mem (line 824) | static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int...
  function stbi__start_callbacks (line 834) | static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c...
  function stbi__stdio_read (line 848) | static int stbi__stdio_read(void *user, char *data, int size)
  function stbi__stdio_skip (line 853) | static void stbi__stdio_skip(void *user, int n)
  function stbi__stdio_eof (line 863) | static int stbi__stdio_eof(void *user)
  function stbi__start_file (line 875) | static void stbi__start_file(stbi__context *s, FILE *f)
  function stbi__rewind (line 884) | static void stbi__rewind(stbi__context *s)
  type stbi__result_info (line 899) | typedef struct
  function STBIDEF (line 970) | STBIDEF const char *stbi_failure_reason(void)
  function stbi__err (line 976) | static int stbi__err(const char *str)
  function stbi__addsizes_valid (line 1000) | static int stbi__addsizes_valid(int a, int b)
  function stbi__mul2sizes_valid (line 1012) | static int stbi__mul2sizes_valid(int a, int b)
  function stbi__mad2sizes_valid (line 1022) | static int stbi__mad2sizes_valid(int a, int b, int add)
  function stbi__mad3sizes_valid (line 1029) | static int stbi__mad3sizes_valid(int a, int b, int c, int add)
  function stbi__mad4sizes_valid (line 1037) | static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add)
  function stbi__addints_valid (line 1068) | static int stbi__addints_valid(int a, int b)
  function stbi__mul2shorts_valid (line 1076) | static int stbi__mul2shorts_valid(short a, short b)
  function STBIDEF (line 1099) | STBIDEF void stbi_image_free(void *retval_from_stbi_load)
  function STBIDEF (line 1114) | STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip)
  function STBIDEF (line 1124) | STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_sh...
  function stbi_uc (line 1188) | static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, ...
  function stbi__uint16 (line 1204) | static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, ...
  function stbi__vertical_flip (line 1220) | static void stbi__vertical_flip(void *image, int w, int h, int bytes_per...
  function stbi__vertical_flip_slices (line 1245) | static void stbi__vertical_flip_slices(void *image, int w, int h, int z,...
  function stbi__uint16 (line 1284) | static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, ...
  function stbi__float_postprocess (line 1312) | static void stbi__float_postprocess(float *result, int *x, int *y, int *...
  function STBIDEF (line 1329) | STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, c...
  function FILE (line 1335) | static FILE *stbi__fopen(char const *filename, char const *mode)
  function STBIDEF (line 1364) | STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *co...
  function STBIDEF (line 1374) | STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp,...
  function STBIDEF (line 1387) | STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, in...
  function STBIDEF (line 1400) | STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int ...
  function STBIDEF (line 1413) | STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len...
  function STBIDEF (line 1420) | STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *cl...
  function STBIDEF (line 1427) | STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, i...
  function STBIDEF (line 1434) | STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk,...
  function STBIDEF (line 1442) | STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int le...
  function STBIDEF (line 1476) | STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, in...
  function STBIDEF (line 1483) | STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, ...
  function STBIDEF (line 1491) | STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *com...
  function STBIDEF (line 1501) | STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, ...
  function STBIDEF (line 1515) | STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len)
  function STBIDEF (line 1529) | STBIDEF int      stbi_is_hdr          (char const *filename)
  function STBIDEF (line 1540) | STBIDEF int stbi_is_hdr_from_file(FILE *f)
  function STBIDEF (line 1557) | STBIDEF int      stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clb...
  function STBIDEF (line 1573) | STBIDEF void   stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = ga...
  function STBIDEF (line 1574) | STBIDEF void   stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = sc...
  function STBIDEF (line 1579) | STBIDEF void   stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = ...
  function STBIDEF (line 1580) | STBIDEF void   stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = ...
  function stbi__refill_buffer (line 1595) | static void stbi__refill_buffer(stbi__context *s)
  function stbi_inline (line 1612) | stbi_inline static stbi_uc stbi__get8(stbi__context *s)
  function stbi_inline (line 1626) | stbi_inline static int stbi__at_eof(stbi__context *s)
  function stbi__skip (line 1642) | static void stbi__skip(stbi__context *s, int n)
  function stbi__getn (line 1664) | static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n)
  function stbi__get16be (line 1692) | static int stbi__get16be(stbi__context *s)
  function stbi__uint32 (line 1702) | static stbi__uint32 stbi__get32be(stbi__context *s)
  function stbi__get16le (line 1712) | static int stbi__get16le(stbi__context *s)
  function stbi__uint32 (line 1720) | static stbi__uint32 stbi__get32le(stbi__context *s)
  function stbi_uc (line 1744) | static stbi_uc stbi__compute_y(int r, int g, int b)
  function stbi__uint16 (line 1801) | static stbi__uint16 stbi__compute_y_16(int r, int g, int b)
  function stbi__uint16 (line 1810) | static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_...
  function stbi_uc (line 1882) | static stbi_uc *stbi__hdr_to_ldr(float   *data, int x, int y, int comp)
  type stbi__huffman (line 1936) | typedef struct
  type stbi__jpeg (line 1947) | typedef struct
  function stbi__build_huffman (line 2001) | static int stbi__build_huffman(stbi__huffman *h, int *count)
  function stbi__build_fast_ac (line 2048) | static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h)
  function stbi__grow_buffer_unsafe (line 2073) | static void stbi__grow_buffer_unsafe(stbi__jpeg *j)
  function stbi_inline (line 2095) | stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffm...
  function stbi_inline (line 2151) | stbi_inline static int stbi__extend_receive(stbi__jpeg *j, int n)
  function stbi_inline (line 2167) | stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n)
  function stbi_inline (line 2179) | stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j)
  function stbi__jpeg_decode_block (line 2208) | static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__...
  function stbi__jpeg_decode_block_prog_dc (line 2263) | static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64]...
  function stbi__jpeg_decode_block_prog_ac (line 2293) | static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64]...
  function stbi_inline (line 2414) | stbi_inline static stbi_uc stbi__clamp(int x)
  function stbi__idct_block (line 2465) | static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64])
  function stbi__idct_simd (line 2528) | static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])
  function stbi__idct_simd (line 2709) | static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])
  function stbi_uc (line 2917) | static stbi_uc stbi__get_marker(stbi__jpeg *j)
  function stbi__jpeg_reset (line 2934) | static void stbi__jpeg_reset(stbi__jpeg *j)
  function stbi__parse_entropy_coded_data (line 2947) | static int stbi__parse_entropy_coded_data(stbi__jpeg *z)
  function stbi__jpeg_dequantize (line 3071) | static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant)
  function stbi__jpeg_finish (line 3078) | static void stbi__jpeg_finish(stbi__jpeg *z)
  function stbi__process_marker (line 3097) | static int stbi__process_marker(stbi__jpeg *z, int m)
  function stbi__process_scan_header (line 3201) | static int stbi__process_scan_header(stbi__jpeg *z)
  function stbi__free_jpeg_components (line 3240) | static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why)
  function stbi__process_frame_header (line 3262) | static int stbi__process_frame_header(stbi__jpeg *z, int scan)
  function stbi__decode_jpeg_header (line 3363) | static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan)
  function stbi__skip_jpeg_junk_at_end (line 3387) | static int stbi__skip_jpeg_junk_at_end(stbi__jpeg *j)
  function stbi__decode_jpeg_image (line 3410) | static int stbi__decode_jpeg_image(stbi__jpeg *j)
  type stbi_uc (line 3449) | typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_u...
  function stbi_uc (line 3454) | static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *...
  function stbi_uc (line 3463) | static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, s...
  function stbi_uc (line 3473) | static stbi_uc*  stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, ...
  function stbi_uc (line 3503) | static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, ...
  function stbi_uc (line 3528) | static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_n...
  function stbi_uc (line 3644) | static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_nea...
  function stbi__YCbCr_to_RGB_row (line 3658) | static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const...
  function stbi__YCbCr_to_RGB_simd (line 3684) | static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi...
  function stbi__setup_jpeg (line 3819) | static void stbi__setup_jpeg(stbi__jpeg *j)
  function stbi__cleanup_jpeg (line 3841) | static void stbi__cleanup_jpeg(stbi__jpeg *j)
  type stbi__resample (line 3846) | typedef struct
  function stbi_uc (line 3857) | static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y)
  function stbi_uc (line 3863) | static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, i...
  function stbi__jpeg_test (line 4040) | static int stbi__jpeg_test(stbi__context *s)
  function stbi__jpeg_info_raw (line 4054) | static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp)
  function stbi__jpeg_info (line 4066) | static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp)
  type stbi__zhuffman (line 4095) | typedef struct
  function stbi_inline (line 4105) | stbi_inline static int stbi__bitreverse16(int n)
  function stbi_inline (line 4114) | stbi_inline static int stbi__bit_reverse(int v, int bits)
  function stbi__zbuild_huffman (line 4122) | static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizeli...
  type stbi__zbuf (line 4175) | typedef struct
  function stbi_inline (line 4189) | stbi_inline static int stbi__zeof(stbi__zbuf *z)
  function stbi_inline (line 4194) | stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z)
  function stbi__fill_bits (line 4199) | static void stbi__fill_bits(stbi__zbuf *z)
  function stbi__zreceive (line 4211) | int stbi__zreceive(stbi__zbuf *z, int n)
  function stbi__zhuffman_decode_slowpath (line 4221) | static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z)
  function stbi_inline (line 4240) | stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffm...
  function stbi__zexpand (line 4259) | static int stbi__zexpand(stbi__zbuf *z, char *zout, int n)  // need to m...
  function stbi__parse_huffman_block (line 4295) | static int stbi__parse_huffman_block(stbi__zbuf *a)
  function stbi__compute_huffman_codes (line 4338) | static int stbi__compute_huffman_codes(stbi__zbuf *a)
  function stbi__parse_uncompressed_block (line 4388) | static int stbi__parse_uncompressed_block(stbi__zbuf *a)
  function stbi__parse_zlib_header (line 4417) | static int stbi__parse_zlib_header(stbi__zbuf *a)
  function stbi__parse_zlib (line 4460) | static int stbi__parse_zlib(stbi__zbuf *a, int parse_header)
  function stbi__do_zlib (line 4488) | static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, i...
  function STBIDEF (line 4498) | STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int ...
  function STBIDEF (line 4514) | STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *...
  function STBIDEF (line 4519) | STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *b...
  function STBIDEF (line 4535) | STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const ...
  function STBIDEF (line 4546) | STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int l...
  function STBIDEF (line 4562) | STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, co...
  type stbi__pngchunk (line 4585) | typedef struct
  function stbi__pngchunk (line 4591) | static stbi__pngchunk stbi__get_chunk_header(stbi__context *s)
  function stbi__check_png_header (line 4599) | static int stbi__check_png_header(stbi__context *s)
  type stbi__png (line 4608) | typedef struct
  function stbi__paeth (line 4636) | static int stbi__paeth(int a, int b, int c)
  function stbi__create_png_image_raw (line 4650) | static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__...
  function stbi__create_png_image (line 4862) | static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stb...
  function stbi__compute_transparency (line 4907) | static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int o...
  function stbi__compute_transparency16 (line 4932) | static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3]...
  function stbi__expand_png_palette (line 4957) | static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int ...
  function STBIDEF (line 4997) | STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpr...
  function STBIDEF (line 5002) | STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_conv...
  function STBIDEF (line 5014) | STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_shou...
  function STBIDEF (line 5020) | STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_shou...
  function stbi__de_iphone (line 5034) | static void stbi__de_iphone(stbi__png *z)
  function stbi__parse_png_file (line 5079) | static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp)
  function stbi__png_test (line 5301) | static int stbi__png_test(stbi__context *s)
  function stbi__png_info_raw (line 5309) | static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp)
  function stbi__png_info (line 5321) | static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__png_is16 (line 5328) | static int stbi__png_is16(stbi__context *s)
  function stbi__bmp_test_raw (line 5345) | static int stbi__bmp_test_raw(stbi__context *s)
  function stbi__bmp_test (line 5360) | static int stbi__bmp_test(stbi__context *s)
  function stbi__high_bit (line 5369) | static int stbi__high_bit(unsigned int z)
  function stbi__bitcount (line 5381) | static int stbi__bitcount(unsigned int a)
  function stbi__shiftsigned (line 5394) | static int stbi__shiftsigned(unsigned int v, int shift, int bits)
  type stbi__bmp_data (line 5414) | typedef struct
  function stbi__bmp_set_mask_defaults (line 5421) | static int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress)
  function stbi__tga_get_comp (line 5738) | static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_r...
  function stbi__tga_info (line 5754) | static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__tga_test (line 5819) | static int stbi__tga_test(stbi__context *s)
  function stbi__tga_read_rgb16 (line 5851) | static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out)
  function stbi__psd_test (line 6080) | static int stbi__psd_test(stbi__context *s)
  function stbi__psd_decode_rle (line 6087) | static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelC...
  function stbi__pic_is4 (line 6335) | static int stbi__pic_is4(stbi__context *s,const char *str)
  function stbi__pic_test_core (line 6345) | static int stbi__pic_test_core(stbi__context *s)
  type stbi__pic_packet (line 6361) | typedef struct
  function stbi_uc (line 6366) | static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest)
  function stbi__copyval (line 6380) | static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src)
  function stbi_uc (line 6389) | static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int heigh...
  function stbi__pic_test (line 6540) | static int stbi__pic_test(stbi__context *s)
  type stbi__gif_lzw (line 6552) | typedef struct
  type stbi__gif (line 6559) | typedef struct
  function stbi__gif_test_raw (line 6579) | static int stbi__gif_test_raw(stbi__context *s)
  function stbi__gif_test (line 6589) | static int stbi__gif_test(stbi__context *s)
  function stbi__gif_parse_colortable (line 6596) | static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256...
  function stbi__gif_header (line 6607) | static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, i...
  function stbi__gif_info_raw (line 6638) | static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp)
  function stbi__out_gif_code (line 6653) | static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code)
  function stbi_uc (line 6690) | static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g)
  function stbi_uc (line 6777) | static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int ...
  function stbi__gif_info (line 7076) | static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__hdr_test_core (line 7086) | static int stbi__hdr_test_core(stbi__context *s, const char *signature)
  function stbi__hdr_test (line 7096) | static int stbi__hdr_test(stbi__context* s)
  function stbi__hdr_convert (line 7130) | static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp)
  function stbi__hdr_info (line 7288) | static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__bmp_info (line 7334) | static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__psd_info (line 7358) | static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__psd_is16 (line 7393) | static int stbi__psd_is16(stbi__context *s)
  function stbi__pic_info (line 7422) | static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__pnm_test (line 7493) | static int      stbi__pnm_test(stbi__context *s)
  function stbi__pnm_isspace (line 7542) | static int      stbi__pnm_isspace(char c)
  function stbi__pnm_skip_whitespace (line 7547) | static void     stbi__pnm_skip_whitespace(stbi__context *s, char *c)
  function stbi__pnm_isdigit (line 7561) | static int      stbi__pnm_isdigit(char c)
  function stbi__pnm_getinteger (line 7566) | static int      stbi__pnm_getinteger(stbi__context *s, char *c)
  function stbi__pnm_info (line 7580) | static int      stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__pnm_is16 (line 7623) | static int stbi__pnm_is16(stbi__context *s)
  function stbi__info_main (line 7631) | static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp)
  function stbi__is_16_main (line 7673) | static int stbi__is_16_main(stbi__context *s)
  function STBIDEF (line 7690) | STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp)
  function STBIDEF (line 7700) | STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp)
  function STBIDEF (line 7711) | STBIDEF int stbi_is_16_bit(char const *filename)
  function STBIDEF (line 7721) | STBIDEF int stbi_is_16_bit_from_file(FILE *f)
  function STBIDEF (line 7733) | STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x...
  function STBIDEF (line 7740) | STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *u...
  function STBIDEF (line 7747) | STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len)
  function STBIDEF (line 7754) | STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, vo...

FILE: demo/common/node_editor.c
  type node (line 13) | struct node {
  type node_link (line 25) | struct node_link {
  type node_linking (line 34) | struct node_linking {
  type node_editor (line 41) | struct node_editor {
  type node_editor (line 55) | struct node_editor
  function node_editor_push (line 57) | static void
  function node_editor_pop (line 74) | static void
  type node (line 89) | struct node
  type node_editor (line 90) | struct node_editor
  type node (line 92) | struct node
  function node_editor_add (line 101) | static void
  function node_editor_link (line 120) | static void
  function node_editor_init (line 133) | static void
  function node_editor (line 147) | static int

FILE: demo/common/overview.c
  function overview (line 4) | static int

FILE: demo/common/style.c
  type theme (line 1) | enum theme {
  function set_style (line 15) | static void set_style(struct nk_context *ctx, enum theme theme) {

FILE: demo/common/style_configurator.c
  function style_rgb (line 26) | static int
  function style_item_color (line 48) | static void
  function style_vec2 (line 54) | static void
  function style_global_colors (line 69) | static void
  function style_text (line 121) | static void
  function style_button (line 134) | static void
  function style_toggle (line 214) | static void style_toggle(struct nk_context* ctx, struct nk_style_toggle*...
  function style_selectable (line 242) | static void
  function style_slider (line 273) | static void
  function style_progress (line 327) | static void
  function style_scrollbars (line 356) | static void
  function style_edit (line 417) | static void
  function style_property (line 453) | static void
  function style_chart (line 497) | static void
  function style_combo (line 518) | static void
  function style_tab (line 551) | static void
  function style_window_header (line 584) | static void
  function style_window (line 632) | static void
  function style_configurator (line 704) | static int

FILE: demo/d3d11/main.c
  function set_swap_chain_size (line 82) | static void
  function LRESULT (line 116) | static LRESULT CALLBACK
  function main (line 142) | int main(void)

FILE: demo/d3d11/nuklear_d3d11.h
  type ID3D11Device (line 19) | typedef struct ID3D11Device ID3D11Device;
  type ID3D11DeviceContext (line 20) | typedef struct ID3D11DeviceContext ID3D11DeviceContext;
  type nk_font_atlas (line 23) | struct nk_font_atlas
  type nk_anti_aliasing (line 26) | enum nk_anti_aliasing
  type nk_d3d11_vertex (line 53) | struct nk_d3d11_vertex {
  type nk_context (line 61) | struct nk_context
  type nk_font_atlas (line 62) | struct nk_font_atlas
  type nk_buffer (line 63) | struct nk_buffer
  type nk_draw_null_texture (line 65) | struct nk_draw_null_texture
  function NK_API (line 83) | NK_API void
  function nk_d3d11_get_projection_matrix (line 174) | static void
  function NK_API (line 195) | NK_API void
  function NK_API (line 209) | NK_API int
  function nk_d3d11_clipboard_paste (line 447) | static void
  function nk_d3d11_clipboard_copy (line 481) | static void
  function nk_context (line 507) | nk_context*
  function NK_API (line 635) | NK_API void
  function NK_API (line 643) | NK_API void
  function NK_API (line 688) | NK_API

FILE: demo/d3d12/main.c
  function signal_and_wait (line 109) | static void signal_and_wait()
  function execute_commands (line 124) | static void execute_commands()
  function get_swap_chain_buffers (line 141) | static void get_swap_chain_buffers()
  function set_swap_chain_size (line 161) | static void
  function LRESULT (line 185) | static LRESULT CALLBACK
  function main (line 211) | int main(void)

FILE: demo/d3d12/nuklear_d3d12.h
  type nk_font_atlas (line 30) | struct nk_font_atlas
  type nk_anti_aliasing (line 65) | enum nk_anti_aliasing
  type nk_d3d12_vertex (line 100) | struct nk_d3d12_vertex
  type nk_context (line 109) | struct nk_context
  type nk_font_atlas (line 110) | struct nk_font_atlas
  type nk_buffer (line 111) | struct nk_buffer
  type nk_draw_null_texture (line 113) | struct nk_draw_null_texture
  function NK_API (line 141) | NK_API void
  function nk_d3d12_get_projection_matrix (line 291) | static void
  function NK_API (line 312) | NK_API void
  function NK_API (line 341) | NK_API int
  function nk_d3d12_clipboard_paste (line 571) | static void
  function nk_d3d12_clipboard_copy (line 605) | static void
  function nk_context (line 631) | nk_context*
  function NK_API (line 826) | NK_API void
  function NK_API (line 835) | NK_API void
  function NK_API (line 942) | NK_API
  function NK_API (line 952) | NK_API
  function NK_API (line 974) | NK_API

FILE: demo/d3d9/main.c
  function LRESULT (line 78) | static LRESULT CALLBACK
  function create_d3d9_device (line 113) | static void create_d3d9_device(HWND wnd)
  function main (line 175) | int main(void)

FILE: demo/d3d9/nuklear_d3d9.h
  type IDirect3DDevice9 (line 19) | typedef struct IDirect3DDevice9 IDirect3DDevice9;
  type nk_font_atlas (line 22) | struct nk_font_atlas
  type nk_anti_aliasing (line 25) | enum nk_anti_aliasing
  type nk_d3d9_vertex (line 48) | struct nk_d3d9_vertex {
  type nk_context (line 58) | struct nk_context
  type nk_font_atlas (line 59) | struct nk_font_atlas
  type nk_buffer (line 60) | struct nk_buffer
  type nk_draw_null_texture (line 62) | struct nk_draw_null_texture
  function NK_API (line 71) | NK_API void
  function NK_API (line 113) | NK_API void
  function nk_d3d9_get_projection_matrix (line 200) | static void
  function NK_API (line 220) | NK_API void
  function nk_d3d9_create_font_texture (line 226) | static void
  function NK_API (line 255) | NK_API void
  function NK_API (line 269) | NK_API int
  function nk_d3d9_clipboard_paste (line 499) | static void
  function nk_d3d9_clipboard_copy (line 544) | static void
  function nk_context (line 571) | nk_context*
  function NK_API (line 597) | NK_API void
  function NK_API (line 605) | NK_API void
  function NK_API (line 614) | NK_API

FILE: demo/gdi/main.c
  function LRESULT (line 69) | static LRESULT CALLBACK
  function main (line 85) | int main(void)

FILE: demo/gdi/nuklear_gdi.h
  type GdiFont (line 20) | typedef struct GdiFont GdiFont;
  type nk_color (line 23) | struct nk_color
  type GdiFont (line 45) | struct GdiFont {
  type nk_context (line 58) | struct nk_context
  function nk_create_image (line 61) | static void
  function nk_delete_image (line 107) | static void
  function nk_gdi_draw_image (line 118) | static void
  function COLORREF (line 136) | static COLORREF
  function nk_gdi_scissor (line 142) | static void
  function nk_gdi_stroke_line (line 149) | static void
  function nk_gdi_stroke_rect (line 172) | static void
  function nk_gdi_fill_rect (line 201) | static void
  function nk_gdi_set_vertexColor (line 218) | static void
  function nk_gdi_rect_multi_color (line 227) | static void
  function BOOL (line 271) | static BOOL
  function nk_gdi_fill_triangle (line 281) | static void
  function nk_gdi_stroke_triangle (line 297) | static void
  function nk_gdi_fill_polygon (line 325) | static void
  function nk_gdi_stroke_polygon (line 342) | static void
  function nk_gdi_stroke_polyline (line 369) | static void
  function nk_gdi_stroke_arc (line 395) | static void
  function nk_gdi_fill_arc (line 436) | static void
  function nk_gdi_fill_circle (line 451) | static void
  function nk_gdi_stroke_circle (line 461) | static void
  function nk_gdi_stroke_curve (line 485) | static void
  function nk_gdi_draw_text (line 515) | static void
  function nk_gdi_clear (line 536) | static void
  function nk_gdi_blit (line 547) | static void
  function GdiFont (line 554) | GdiFont*
  function nk_gdifont_get_text_width (line 569) | static float
  function nk_gdifont_del (line 587) | void
  function nk_gdi_clipboard_paste (line 596) | static void
  function nk_gdi_clipboard_copy (line 630) | static void
  function nk_context (line 656) | nk_context*
  function NK_API (line 677) | NK_API void
  function NK_API (line 687) | NK_API int
  function NK_API (line 941) | NK_API void
  function NK_API (line 949) | NK_API void

FILE: demo/gdi_native_nuklear/main.c
  function drawCallback (line 28) | int drawCallback(struct nk_context* ctx)
  function INT (line 90) | INT WINAPI wWinMain(HINSTANCE _In_ hInstance, HINSTANCE _In_opt_ hPrevIn...

FILE: demo/gdi_native_nuklear/nuklear_gdi.h
  type GdiFont (line 25) | typedef struct GdiFont GdiFont;
  type _nk_gdi_ctx (line 26) | struct _nk_gdi_ctx
  type _nk_gdi_ctx (line 27) | struct _nk_gdi_ctx
  type nk_color (line 31) | struct nk_color
  type GdiFont (line 57) | struct GdiFont {
  type _nk_gdi_ctx (line 64) | struct _nk_gdi_ctx {
  function nk_create_image (line 73) | static void
  function nk_delete_image (line 119) | static void
  function nk_gdi_draw_image (line 130) | static void
  function COLORREF (line 148) | static COLORREF
  function nk_gdi_scissor (line 154) | static void
  function nk_gdi_stroke_line (line 161) | static void
  function nk_gdi_stroke_rect (line 185) | static void
  function nk_gdi_fill_rect (line 216) | static void
  function nk_gdi_set_vertexColor (line 234) | static void
  function nk_gdi_rect_multi_color (line 243) | static void
  function BOOL (line 287) | static BOOL
  function nk_gdi_fill_triangle (line 297) | static void
  function nk_gdi_stroke_triangle (line 313) | static void
  function nk_gdi_fill_polygon (line 342) | static void
  function nk_gdi_stroke_polygon (line 359) | static void
  function nk_gdi_stroke_polyline (line 387) | static void
  function nk_gdi_fill_circle (line 414) | static void
  function nk_gdi_stroke_circle (line 424) | static void
  function nk_gdi_stroke_curve (line 447) | static void
  function nk_gdi_draw_text (line 478) | static void
  function nk_gdi_clear (line 498) | static void
  function nk_gdi_blit (line 509) | static void
  function GdiFont (line 516) | GdiFont*
  function nk_gdifont_get_text_width (line 531) | static float
  function nk_gdifont_del (line 549) | void
  function nk_gdi_clipboard_paste (line 558) | static void
  function nk_gdi_clipboard_copy (line 592) | static void
  function nk_context (line 618) | nk_context*
  function NK_API (line 641) | NK_API void
  function NK_API (line 651) | NK_API int
  function NK_API (line 905) | NK_API void
  function NK_API (line 913) | NK_API void

FILE: demo/gdi_native_nuklear/window.h
  type nk_context (line 10) | struct nk_context
  type nkgdi_window (line 13) | struct nkgdi_window
  type nkgdi_window (line 63) | struct nkgdi_window
  type nkgdi_window (line 65) | struct nkgdi_window
  type nkgdi_window (line 67) | struct nkgdi_window
  function nkgdi_window_init (line 77) | void nkgdi_window_init(void)
  function nkgdi_window_shutdown (line 98) | void nkgdi_window_shutdown(void)
  function nkgdi_window_create (line 104) | void nkgdi_window_create(struct nkgdi_window* wnd, unsigned int width, u...
  function nkgdi_window_destroy (line 153) | void nkgdi_window_destroy(struct nkgdi_window* wnd)
  function nkgdi_window_update (line 175) | int nkgdi_window_update(struct nkgdi_window* wnd)
  function LRESULT (line 235) | LRESULT CALLBACK nkgdi_window_proc_setup(HWND wnd, UINT msg, WPARAM wPar...
  function LRESULT (line 256) | LRESULT CALLBACK nkgdi_window_proc_run(HWND wnd, UINT msg, WPARAM wParam...

FILE: demo/gdip/main.c
  function LRESULT (line 69) | static LRESULT CALLBACK
  function main (line 82) | int main(void)

FILE: demo/gdip/nuklear_gdip.h
  type GdipFont (line 21) | typedef struct GdipFont GdipFont;
  type nk_anti_aliasing (line 30) | enum nk_anti_aliasing
  type nk_color (line 30) | struct nk_color
  type nk_image (line 36) | struct nk_image
  type GpGraphics (line 58) | typedef struct GpGraphics GpGraphics;
  type GpImage (line 59) | typedef struct GpImage GpImage;
  type GpPen (line 60) | typedef struct GpPen GpPen;
  type GpBrush (line 61) | typedef struct GpBrush GpBrush;
  type GpStringFormat (line 62) | typedef struct GpStringFormat GpStringFormat;
  type GpFont (line 63) | typedef struct GpFont GpFont;
  type GpFontFamily (line 64) | typedef struct GpFontFamily GpFontFamily;
  type GpFontCollection (line 65) | typedef struct GpFontCollection GpFontCollection;
  type GpImage (line 67) | typedef GpImage GpBitmap;
  type GpBrush (line 68) | typedef GpBrush GpSolidFill;
  type Status (line 70) | typedef int Status;
  type Status (line 71) | typedef Status GpStatus;
  type REAL (line 73) | typedef float REAL;
  type DWORD (line 74) | typedef DWORD ARGB;
  type POINT (line 75) | typedef POINT GpPoint;
  type TextRenderingHint (line 77) | typedef enum {
  type StringFormatFlags (line 86) | typedef enum {
  type QualityMode (line 98) | typedef enum
  type SmoothingMode (line 106) | typedef enum
  type FontStyle (line 118) | typedef enum
  type FillMode (line 128) | typedef enum {
  type CombineMode (line 133) | typedef enum {
  type Unit (line 142) | typedef enum {
  type RectF (line 152) | typedef struct {
  type DebugEventLevel (line 159) | typedef enum {
  type GdiplusStartupInput (line 166) | typedef struct {
  type GdiplusStartupOutput (line 176) | typedef struct {
  type GdipFont (line 399) | struct GdipFont
  type nk_context (line 417) | struct nk_context
  function ARGB (line 420) | static ARGB convert_color(struct nk_color c)
  function nk_gdip_scissor (line 425) | static void
  function nk_gdip_stroke_line (line 431) | static void
  function nk_gdip_stroke_rect (line 440) | static void
  function nk_gdip_fill_rect (line 461) | static void
  function BOOL (line 480) | static BOOL
  function nk_gdip_fill_triangle (line 490) | static void
  function nk_gdip_stroke_triangle (line 504) | static void
  function nk_gdip_fill_polygon (line 520) | static void
  function nk_gdip_stroke_polygon (line 535) | static void
  function nk_gdip_stroke_polyline (line 549) | static void
  function nk_gdip_fill_circle (line 562) | static void
  function nk_gdip_stroke_circle (line 570) | static void
  function nk_gdip_stroke_curve (line 579) | static void
  function nk_gdip_fill_arc (line 589) | static void
  function nk_gdip_stroke_arc (line 596) | static void
  function nk_gdip_draw_text (line 604) | static void
  function nk_gdip_draw_image (line 627) | static void
  function nk_gdip_clear (line 635) | static void
  function nk_gdip_blit (line 641) | static void
  function nk_gdip_image_to_nk (line 647) | static struct nk_image
  function nk_gdip_load_image_from_file (line 659) | struct nk_image
  function nk_gdip_load_image_from_memory (line 668) | struct nk_image
  function nk_gdip_image_free (line 686) | void
  function GdipFont (line 694) | GdipFont*
  function GpFontCollection (line 712) | GpFontCollection*
  function GdipFont (line 717) | GdipFont*
  function GdipFont (line 733) | GdipFont*
  function GdipFont (line 742) | GdipFont*
  function nk_gdipfont_get_text_width (line 751) | static float
  function nk_gdipfont_del (line 771) | void
  function nk_gdip_clipboard_paste (line 779) | static void
  function nk_gdip_clipboard_copy (line 813) | static void
  function nk_context (line 839) | nk_context*
  function NK_API (line 865) | NK_API void
  function NK_API (line 875) | NK_API int
  function NK_API (line 1132) | NK_API void
  function NK_API (line 1149) | NK_API void
  function NK_API (line 1242) | NK_API void
  function NK_API (line 1250) | NK_API void

FILE: demo/glfw_opengl2/main.c
  function error_callback (line 85) | static void error_callback(int e, const char *d)
  function main (line 88) | int main(void)

FILE: demo/glfw_opengl2/nuklear_glfw_gl2.h
  type nk_glfw_init_state (line 18) | enum nk_glfw_init_state{
  type nk_glfw_init_state (line 22) | enum nk_glfw_init_state
  type nk_font_atlas (line 23) | struct nk_font_atlas
  type nk_anti_aliasing (line 27) | enum nk_anti_aliasing
  type nk_glfw_device (line 58) | struct nk_glfw_device {
  type nk_glfw_vertex (line 64) | struct nk_glfw_vertex {
  type nk_glfw (line 70) | struct nk_glfw {
  function NK_INTERN (line 88) | NK_INTERN void
  function NK_API (line 100) | NK_API void
  function NK_API (line 207) | NK_API void
  function NK_API (line 215) | NK_API void
  function NK_API (line 283) | NK_API void
  function NK_API (line 291) | NK_API void
  function NK_INTERN (line 308) | NK_INTERN void
  function NK_INTERN (line 316) | NK_INTERN void
  function nk_context (line 330) | nk_context*
  function NK_API (line 354) | NK_API void
  function NK_API (line 362) | NK_API void
  function NK_API (line 373) | NK_API void
  function NK_API (line 468) | NK_API

FILE: demo/glfw_opengl3/main.c
  function error_callback (line 81) | static void error_callback(int e, const char *d)
  function main (line 84) | int main(void)

FILE: demo/glfw_opengl3/nuklear_glfw_gl3.h
  type nk_glfw_init_state (line 18) | enum nk_glfw_init_state{
  type nk_glfw_device (line 27) | struct nk_glfw_device {
  type nk_glfw (line 42) | struct nk_glfw {
  type nk_glfw (line 60) | struct nk_glfw
  type nk_glfw_init_state (line 60) | enum nk_glfw_init_state
  type nk_glfw (line 61) | struct nk_glfw
  type nk_glfw (line 62) | struct nk_glfw
  type nk_font_atlas (line 62) | struct nk_font_atlas
  type nk_glfw (line 63) | struct nk_glfw
  type nk_glfw (line 64) | struct nk_glfw
  type nk_glfw (line 65) | struct nk_glfw
  type nk_anti_aliasing (line 65) | enum nk_anti_aliasing
  type nk_glfw (line 67) | struct nk_glfw
  type nk_glfw (line 68) | struct nk_glfw
  type nk_glfw_vertex (line 95) | struct nk_glfw_vertex {
  function NK_API (line 107) | NK_API void
  function NK_INTERN (line 190) | NK_INTERN void
  function NK_API (line 202) | NK_API void
  function NK_API (line 217) | NK_API void
  function NK_API (line 317) | NK_API void
  function NK_API (line 325) | NK_API void
  function NK_API (line 386) | NK_API void
  function NK_API (line 395) | NK_API void
  function NK_INTERN (line 413) | NK_INTERN void
  function NK_INTERN (line 422) | NK_INTERN void
  function nk_context (line 436) | nk_context*
  function NK_API (line 462) | NK_API void
  function NK_API (line 470) | NK_API void
  function NK_API (line 481) | NK_API void
  function NK_API (line 580) | NK_API

FILE: demo/glfw_opengl4/main.c
  function error_callback (line 81) | static void error_callback(int e, const char *d)
  function main (line 84) | int main(void)

FILE: demo/glfw_opengl4/nuklear_glfw_gl4.h
  type nk_glfw_init_state (line 19) | enum nk_glfw_init_state{
  type nk_glfw_init_state (line 24) | enum nk_glfw_init_state
  type nk_font_atlas (line 26) | struct nk_font_atlas
  type nk_anti_aliasing (line 29) | enum nk_anti_aliasing
  type nk_glfw_vertex (line 66) | struct nk_glfw_vertex {
  type nk_glfw_device (line 72) | struct nk_glfw_device {
  type nk_glfw (line 92) | struct nk_glfw {
  function NK_API (line 113) | NK_API void
  function nk_glfw3_create_texture (line 228) | NK_API unsigned int
  function NK_API (line 251) | NK_API void
  function NK_INTERN (line 258) | NK_INTERN void
  function NK_API (line 265) | NK_API void
  function NK_INTERN (line 284) | NK_INTERN void
  function NK_INTERN (line 298) | NK_INTERN void
  function NK_API (line 306) | NK_API void
  function NK_API (line 407) | NK_API void
  function NK_API (line 415) | NK_API void
  function NK_API (line 483) | NK_API void
  function NK_API (line 491) | NK_API void
  function NK_INTERN (line 508) | NK_INTERN void
  function NK_INTERN (line 516) | NK_INTERN void
  function nk_context (line 530) | nk_context*
  function NK_API (line 560) | NK_API void
  function NK_API (line 568) | NK_API void
  function NK_API (line 579) | NK_API void
  function NK_API (line 678) | NK_API

FILE: demo/glfw_vulkan/main.c
  type queue_family_indices (line 81) | struct queue_family_indices {
  type swap_chain_support_details (line 86) | struct swap_chain_support_details {
  function swap_chain_support_details_free (line 94) | void swap_chain_support_details_free(
  type vulkan_demo (line 106) | struct vulkan_demo {
  function glfw_framebuffer_resize_callback (line 151) | static void glfw_framebuffer_resize_callback(GLFWwindow* window, int wid...
  function glfw_error_callback (line 160) | static void glfw_error_callback(int e, const char *d) {
  function VKAPI_CALL (line 164) | VKAPI_CALL
  function check_validation_layer_support (line 177) | bool check_validation_layer_support() {
  function VkResult (line 212) | VkResult create_debug_utils_messenger_ext(
  function create_debug_callback (line 226) | bool create_debug_callback(struct vulkan_demo *demo) {
  function create_instance (line 249) | bool create_instance(struct vulkan_demo *demo) {
  function create_surface (line 375) | bool create_surface(struct vulkan_demo *demo) {
  function find_queue_families (line 386) | bool find_queue_families(VkPhysicalDevice physical_device, VkSurfaceKHR ...
  function query_swap_chain_support (line 432) | bool query_swap_chain_support(
  function is_suitable_physical_device (line 497) | bool is_suitable_physical_device(VkPhysicalDevice physical_device,
  function create_physical_device (line 580) | bool create_physical_device(struct vulkan_demo *demo) {
  function create_logical_device (line 627) | bool create_logical_device(struct vulkan_demo *demo) {
  function create_sampler (line 676) | bool create_sampler(struct vulkan_demo *demo) {
  function VkSurfaceFormatKHR (line 705) | VkSurfaceFormatKHR
  function VkPresentModeKHR (line 727) | VkPresentModeKHR
  function VkExtent2D (line 745) | VkExtent2D choose_swap_extent(struct vulkan_demo *demo,
  function create_swap_chain (line 769) | bool create_swap_chain(struct vulkan_demo *demo) {
  function create_swap_chain_image_views (line 872) | bool create_swap_chain_image_views(struct vulkan_demo *demo) {
  function create_overlay_images (line 909) | bool create_overlay_images(struct vulkan_demo *demo) {
  function create_render_pass (line 1029) | bool create_render_pass(struct vulkan_demo *demo) {
  function create_framebuffers (line 1083) | bool create_framebuffers(struct vulkan_demo *demo) {
  function create_descriptor_set_layout (line 1115) | bool create_descriptor_set_layout(struct vulkan_demo *demo) {
  function create_descriptor_pool (line 1145) | bool create_descriptor_pool(struct vulkan_demo *demo) {
  function update_descriptor_sets (line 1169) | void update_descriptor_sets(struct vulkan_demo *demo) {
  function create_descriptor_sets (line 1195) | bool create_descriptor_sets(struct vulkan_demo *demo) {
  function create_shader_module (line 1232) | bool create_shader_module(VkDevice device, char *shader_buffer,
  function create_graphics_pipeline (line 1252) | bool create_graphics_pipeline(struct vulkan_demo *demo) {
  function create_command_pool (line 1462) | bool create_command_pool(struct vulkan_demo *demo) {
  function create_command_buffers (line 1480) | bool create_command_buffers(struct vulkan_demo *demo) {
  function create_semaphores (line 1503) | bool create_semaphores(struct vulkan_demo *demo) {
  function create_fence (line 1532) | bool create_fence(struct vulkan_demo *demo) {
  function create_swap_chain_related_resources (line 1554) | bool create_swap_chain_related_resources(struct vulkan_demo *demo) {
  function destroy_swap_chain_related_resources (line 1576) | bool destroy_swap_chain_related_resources(struct vulkan_demo *demo) {
  function create_demo_texture (line 1600) | bool create_demo_texture(struct vulkan_demo *demo) {
  function create_vulkan_demo (line 1868) | bool create_vulkan_demo(struct vulkan_demo *demo) {
  function recreate_swap_chain (line 1917) | bool recreate_swap_chain(struct vulkan_demo *demo) {
  function render (line 1934) | bool render(struct vulkan_demo *demo, struct nk_colorf *bg,
  function VkResult (line 2027) | VkResult
  function cleanup (line 2042) | bool cleanup(struct vulkan_demo *demo) {
  function main (line 2125) | int main(void) {

FILE: demo/glfw_vulkan/nuklear_glfw_vulkan.h
  type nk_glfw_init_state (line 256) | enum nk_glfw_init_state { NK_GLFW3_DEFAULT = 0, NK_GLFW3_INSTALL_CALLBAC...
  type nk_glfw_init_state (line 263) | enum nk_glfw_init_state
  type nk_font_atlas (line 266) | struct nk_font_atlas
  type nk_anti_aliasing (line 272) | enum nk_anti_aliasing
  type nk_glfw_vertex (line 318) | struct nk_glfw_vertex {
  type nk_vulkan_texture_descriptor_set (line 324) | struct nk_vulkan_texture_descriptor_set {
  type nk_glfw_device (line 329) | struct nk_glfw_device {
  type nk_glfw (line 369) | struct nk_glfw {
  type Mat4f (line 387) | struct Mat4f {
  function NK_INTERN (line 391) | NK_INTERN uint32_t nk_glfw3_find_memory_index(
  function NK_INTERN (line 410) | NK_INTERN void nk_glfw3_create_sampler(struct nk_glfw_device *dev) {
  function NK_INTERN (line 436) | NK_INTERN void
  function NK_INTERN (line 451) | NK_INTERN void nk_glfw3_create_command_buffers(struct nk_glfw_device *de...
  function NK_INTERN (line 470) | NK_INTERN void nk_glfw3_create_semaphore(struct nk_glfw_device *dev) {
  function NK_INTERN (line 481) | NK_INTERN void nk_glfw3_create_buffer_and_memory(struct nk_glfw_device *...
  function NK_INTERN (line 516) | NK_INTERN void nk_glfw3_create_render_pass(struct nk_glfw_device *dev) {
  function NK_INTERN (line 568) | NK_INTERN void nk_glfw3_create_framebuffers(struct nk_glfw_device *dev,
  function NK_INTERN (line 596) | NK_INTERN void nk_glfw3_create_descriptor_pool(struct nk_glfw_device *de...
  function NK_INTERN (line 618) | NK_INTERN void
  function NK_INTERN (line 643) | NK_INTERN void
  function NK_INTERN (line 677) | NK_INTERN void
  function NK_INTERN (line 702) | NK_INTERN void
  function NK_INTERN (line 743) | NK_INTERN void nk_glfw3_create_pipeline_layout(struct nk_glfw_device *de...
  function NK_INTERN (line 761) | NK_INTERN VkPipelineShaderStageCreateInfo
  function NK_INTERN (line 785) | NK_INTERN void nk_glfw3_create_pipeline(struct nk_glfw_device *dev) {
  function NK_INTERN (line 909) | NK_INTERN void nk_glfw3_create_render_resources(struct nk_glfw_device *dev,
  function NK_API (line 923) | NK_API void nk_glfw3_device_create(
  function NK_INTERN (line 967) | NK_INTERN void nk_glfw3_device_upload_atlas(VkQueue graphics_queue,
  function NK_INTERN (line 1159) | NK_INTERN void nk_glfw3_destroy_render_resources(struct nk_glfw_device *...
  function NK_API (line 1179) | NK_API void nk_glfw3_resize(uint32_t framebuffer_width,
  function NK_API (line 1190) | NK_API void nk_glfw3_device_destroy(void) {
  function NK_API (line 1224) | NK_API
  function NK_API (line 1232) | NK_API void nk_glfw3_font_stash_begin(struct nk_font_atlas **atlas) {
  function NK_API (line 1238) | NK_API void nk_glfw3_font_stash_end(VkQueue graphics_queue) {
  function NK_API (line 1252) | NK_API void nk_glfw3_new_frame(void) {
  function NK_INTERN (line 1357) | NK_INTERN void update_texture_descriptor_set(
  function NK_API (line 1384) | NK_API
  function NK_API (line 1561) | NK_API void nk_glfw3_char_callback(GLFWwindow *win, unsigned int codepoi...
  function NK_API (line 1567) | NK_API void
  function NK_API (line 1635) | NK_API void nk_gflw3_scroll_callback(GLFWwindow *win, double xoff,
  function NK_API (line 1643) | NK_API void nk_glfw3_mouse_button_callback(GLFWwindow *window, int button,
  function NK_INTERN (line 1661) | NK_INTERN void nk_glfw3_clipboard_paste(nk_handle usr,
  function NK_INTERN (line 1669) | NK_INTERN void nk_glfw3_clipboard_copy(nk_handle usr, const char *text,
  function nk_context (line 1684) | nk_context *

FILE: demo/glfw_vulkan/src/nuklear_glfw_vulkan.in.h
  type nk_glfw_init_state (line 33) | enum nk_glfw_init_state { NK_GLFW3_DEFAULT = 0, NK_GLFW3_INSTALL_CALLBAC...
  type nk_glfw_init_state (line 40) | enum nk_glfw_init_state
  type nk_font_atlas (line 43) | struct nk_font_atlas
  type nk_anti_aliasing (line 49) | enum nk_anti_aliasing
  type nk_glfw_vertex (line 94) | struct nk_glfw_vertex {
  type nk_vulkan_texture_descriptor_set (line 100) | struct nk_vulkan_texture_descriptor_set {
  type nk_glfw_device (line 105) | struct nk_glfw_device {
  type nk_glfw (line 145) | struct nk_glfw {
  type Mat4f (line 161) | struct Mat4f {
  function NK_INTERN (line 165) | NK_INTERN uint32_t nk_glfw3_find_memory_index(
  function NK_INTERN (line 184) | NK_INTERN void nk_glfw3_create_sampler(struct nk_glfw_device *dev) {
  function NK_INTERN (line 210) | NK_INTERN void
  function NK_INTERN (line 225) | NK_INTERN void nk_glfw3_create_command_buffers(struct nk_glfw_device *de...
  function NK_INTERN (line 244) | NK_INTERN void nk_glfw3_create_semaphore(struct nk_glfw_device *dev) {
  function NK_INTERN (line 255) | NK_INTERN void nk_glfw3_create_buffer_and_memory(struct nk_glfw_device *...
  function NK_INTERN (line 290) | NK_INTERN void nk_glfw3_create_render_pass(struct nk_glfw_device *dev) {
  function NK_INTERN (line 342) | NK_INTERN void nk_glfw3_create_framebuffers(struct nk_glfw_device *dev,
  function NK_INTERN (line 370) | NK_INTERN void nk_glfw3_create_descriptor_pool(struct nk_glfw_device *de...
  function NK_INTERN (line 392) | NK_INTERN void
  function NK_INTERN (line 417) | NK_INTERN void
  function NK_INTERN (line 451) | NK_INTERN void
  function NK_INTERN (line 476) | NK_INTERN void
  function NK_INTERN (line 517) | NK_INTERN void nk_glfw3_create_pipeline_layout(struct nk_glfw_device *de...
  function NK_INTERN (line 535) | NK_INTERN VkPipelineShaderStageCreateInfo
  function NK_INTERN (line 559) | NK_INTERN void nk_glfw3_create_pipeline(struct nk_glfw_device *dev) {
  function NK_INTERN (line 683) | NK_INTERN void nk_glfw3_create_render_resources(struct nk_glfw_device *dev,
  function NK_API (line 697) | NK_API void nk_glfw3_device_create(
  function NK_INTERN (line 741) | NK_INTERN void nk_glfw3_device_upload_atlas(VkQueue graphics_queue,
  function NK_INTERN (line 933) | NK_INTERN void nk_glfw3_destroy_render_resources(struct nk_glfw_device *...
  function NK_API (line 953) | NK_API void nk_glfw3_resize(uint32_t framebuffer_width,
  function NK_API (line 964) | NK_API void nk_glfw3_device_destroy(void) {
  function NK_API (line 998) | NK_API
  function NK_API (line 1006) | NK_API void nk_glfw3_font_stash_begin(struct nk_font_atlas **atlas) {
  function NK_API (line 1012) | NK_API void nk_glfw3_font_stash_end(VkQueue graphics_queue) {
  function NK_API (line 1026) | NK_API void nk_glfw3_new_frame(void) {
  function NK_INTERN (line 1134) | NK_INTERN void update_texture_descriptor_set(
  function NK_API (line 1161) | NK_API
  function NK_API (line 1338) | NK_API void nk_glfw3_char_callback(GLFWwindow *win, unsigned int codepoi...
  function NK_API (line 1344) | NK_API void nk_gflw3_scroll_callback(GLFWwindow *win, double xoff,
  function NK_API (line 1352) | NK_API void nk_glfw3_mouse_button_callback(GLFWwindow *window, int button,
  function NK_INTERN (line 1370) | NK_INTERN void nk_glfw3_clipboard_paste(nk_handle usr,
  function NK_INTERN (line 1378) | NK_INTERN void nk_glfw3_clipboard_copy(nk_handle usr, const char *text,
  function nk_context (line 1393) | nk_context *

FILE: demo/rawfb/nuklear_rawfb.h
  type rawfb_context (line 35) | struct rawfb_context
  type rawfb_pl (line 37) | struct rawfb_pl {
  type rawfb_pl (line 44) | struct rawfb_pl
  type rawfb_context (line 45) | struct rawfb_context
  type nk_color (line 45) | struct nk_color
  type rawfb_context (line 46) | struct rawfb_context
  type rawfb_context (line 47) | struct rawfb_context
  type rawfb_pl (line 47) | struct rawfb_pl
  type rawfb_image (line 62) | struct rawfb_image {
  type rawfb_context (line 67) | struct rawfb_context {
  type rawfb_color (line 74) | typedef unsigned int rawfb_color;
  function rawfb_color (line 83) | static rawfb_color
  function nk_rawfb_int2color (line 96) | static struct nk_color
  function nk_rawfb_ctx_setpixel (line 109) | static void
  function nk_rawfb_line_horizontal (line 130) | static void
  function nk_rawfb_img_setpixel (line 163) | static void
  function nk_rawfb_img_getpixel (line 183) | static struct nk_color
  function nk_rawfb_img_blendpixel (line 205) | static void
  function nk_rawfb_scissor (line 222) | static void
  function nk_rawfb_stroke_line (line 235) | static void
  function nk_rawfb_fill_polygon (line 305) | static void
  function nk_rawfb_stroke_arc (line 368) | static void
  function nk_rawfb_fill_arc (line 422) | static void
  function nk_rawfb_stroke_rect (line 486) | static void
  function nk_rawfb_fill_rect (line 518) | static void
  function NK_API (line 575) | NK_API void
  function nk_rawfb_fill_triangle (line 650) | static void
  function nk_rawfb_stroke_triangle (line 665) | static void
  function nk_rawfb_stroke_polygon (line 676) | static void
  function nk_rawfb_stroke_polyline (line 689) | static void
  function nk_rawfb_fill_circle (line 700) | static void
  function nk_rawfb_stroke_circle (line 736) | static void
  function nk_rawfb_stroke_curve (line 779) | static void
  function nk_rawfb_clear (line 807) | static void
  function rawfb_context (line 813) | rawfb_context*
  function nk_rawfb_stretch_image (line 867) | static void
  function nk_rawfb_font_query_font_glyph (line 904) | static void
  function NK_API (line 931) | NK_API void
  function NK_API (line 985) | NK_API void
  function NK_API (line 1005) | NK_API void
  function NK_API (line 1015) | NK_API void
  function NK_API (line 1030) | NK_API void

FILE: demo/rawfb/sdl/main.c
  function translate_sdl_key (line 68) | static int translate_sdl_key(struct SDL_Keysym const *k)
  function sdl_button_to_nk (line 77) | static int sdl_button_to_nk(int button)
  function grid_demo (line 103) | static void
  function main (line 140) | int main(int argc, char **argv)

FILE: demo/rawfb/wayland/main.c
  type nk_wayland (line 28) | struct nk_wayland {
  function nk_wayland_output_cb_geometry (line 99) | static void nk_wayland_output_cb_geometry(void *data, struct wl_output *...
  function nk_wayland_output_cb_mode (line 111) | static void nk_wayland_output_cb_mode(void *data, struct wl_output *wl_o...
  function nk_wayland_output_cb_done (line 121) | static void nk_wayland_output_cb_done(void *data, struct wl_output *output)
  function nk_wayland_output_cb_scale (line 127) | static void nk_wayland_output_cb_scale(void *data, struct wl_output *out...
  type wl_output_listener (line 134) | struct wl_output_listener
  function nk_wayland_pointer_enter (line 144) | static void nk_wayland_pointer_enter (void *data, struct wl_pointer *poi...
  function nk_wayland_pointer_leave (line 154) | static void nk_wayland_pointer_leave (void *data, struct wl_pointer *poi...
  function nk_wayland_pointer_motion (line 162) | static void nk_wayland_pointer_motion (void *data, struct wl_pointer *po...
  function nk_wayland_pointer_button (line 175) | static void nk_wayland_pointer_button (void *data, struct wl_pointer *po...
  function nk_wayland_pointer_axis (line 222) | static void nk_wayland_pointer_axis (void *data, struct wl_pointer *poin...
  type wl_pointer_listener (line 231) | struct wl_pointer_listener
  function nk_wayland_keyboard_keymap (line 246) | static void nk_wayland_keyboard_keymap (void *data, struct wl_keyboard *...
  function nk_wayland_keyboard_enter (line 255) | static void nk_wayland_keyboard_enter (void *data, struct wl_keyboard *k...
  function nk_wayland_keyboard_leave (line 264) | static void nk_wayland_keyboard_leave (void *data, struct wl_keyboard *k...
  function nk_wayland_keyboard_key (line 272) | static void nk_wayland_keyboard_key (void *data, struct wl_keyboard *key...
  function nk_wayland_keyboard_modifiers (line 282) | static void nk_wayland_keyboard_modifiers (void *data, struct wl_keyboar...
  type wl_keyboard_listener (line 293) | struct wl_keyboard_listener
  function seat_capabilities (line 305) | static void seat_capabilities (void *data, struct wl_seat *seat, uint32_...
  type wl_seat_listener (line 319) | struct wl_seat_listener
  function nk_wayland_xdg_wm_base_ping (line 327) | static void nk_wayland_xdg_wm_base_ping (void *data, struct xdg_wm_base ...
  type xdg_wm_base_listener (line 333) | struct xdg_wm_base_listener
  function nk_wayland_xdg_surface_configure (line 338) | static void nk_wayland_xdg_surface_configure (void *data, struct xdg_sur...
  type xdg_surface_listener (line 344) | struct xdg_surface_listener
  function nk_wayland_xdg_toplevel_configure (line 349) | static void nk_wayland_xdg_toplevel_configure (void *data, struct xdg_to...
  function nk_wayland_xdg_toplevel_close (line 358) | static void nk_wayland_xdg_toplevel_close (void *data, struct xdg_toplev...
  type xdg_toplevel_listener (line 364) | struct xdg_toplevel_listener
  function nk_wayland_registry_add_object (line 373) | static void nk_wayland_registry_add_object (void *data, struct wl_regist...
  function nk_wayland_registry_remove_object (line 399) | static void nk_wayland_registry_remove_object (void *data, struct wl_reg...
  type wl_registry_listener (line 406) | struct wl_registry_listener
  function nk_wayland_deinit (line 413) | static void nk_wayland_deinit(struct nk_wayland *win)
  function timestamp (line 421) | static long timestamp(void)
  function sleep_for (line 428) | static void sleep_for(long t)
  function nk_wayland_surf_clear (line 438) | static void nk_wayland_surf_clear(struct nk_wayland* win)
  type wl_callback_listener (line 452) | struct wl_callback_listener
  function redraw (line 454) | static void redraw(void *data, struct wl_callback *callback, uint32_t time)
  type wl_callback_listener (line 475) | struct wl_callback_listener
  function main (line 479) | int main ()

FILE: demo/rawfb/x11/main.c
  type XWindow (line 62) | typedef struct XWindow XWindow;
  type XWindow (line 63) | struct XWindow {
  function die (line 76) | static void
  function timestamp (line 87) | static long
  function sleep_for (line 95) | static void
  function main (line 154) | int

FILE: demo/rawfb/x11/nuklear_xlib.h
  type rawfb_pl (line 38) | struct rawfb_pl
  type rawfb_context (line 39) | struct rawfb_context
  type nk_context (line 64) | struct nk_context
  type XSurface (line 65) | struct XSurface
  function NK_API (line 75) | NK_API int
  function NK_API (line 154) | NK_API int
  function NK_API (line 278) | NK_API void
  function NK_API (line 293) | NK_API void

FILE: demo/sdl3_renderer/main.c
  type nk_sdl_app (line 170) | struct nk_sdl_app {
  function SDL_AppResult (line 178) | static SDL_AppResult
  function SDL_AppResult (line 185) | SDL_AppResult
  function SDL_AppResult (line 295) | SDL_AppResult
  function SDL_AppResult (line 321) | SDL_AppResult
  function SDL_AppQuit (line 404) | void

FILE: demo/sdl3_renderer/nuklear_sdl3_renderer.h
  type nk_allocator (line 30) | struct nk_allocator
  type nk_context (line 32) | struct nk_context
  type nk_context (line 33) | struct nk_context
  type nk_context (line 35) | struct nk_context
  type nk_context (line 36) | struct nk_context
  type nk_anti_aliasing (line 36) | enum nk_anti_aliasing
  type nk_context (line 37) | struct nk_context
  type nk_context (line 38) | struct nk_context
  type nk_context (line 39) | struct nk_context
  type nk_context (line 40) | struct nk_context
  type nk_context (line 41) | struct nk_context
  type nk_sdl_device (line 64) | struct nk_sdl_device {
  type nk_sdl_vertex (line 70) | struct nk_sdl_vertex {
  type nk_sdl (line 76) | struct nk_sdl {
  function NK_API (line 93) | NK_API nk_handle
  function NK_API (line 102) | NK_API void
  function NK_INTERN (line 111) | NK_INTERN void *
  function NK_INTERN (line 127) | NK_INTERN void
  function nk_allocator (line 134) | nk_allocator
  function NK_INTERN (line 144) | NK_INTERN void
  function NK_API (line 168) | NK_API void
  function NK_API (line 216) | NK_API void
  function NK_INTERN (line 316) | NK_INTERN void
  function NK_INTERN (line 341) | NK_INTERN void
  function nk_context (line 372) | nk_context*
  function nk_font_atlas (line 401) | nk_font_atlas*
  function NK_API (line 415) | NK_API void
  function NK_API (line 433) | NK_API int
  function NK_API (line 560) | NK_API
  function NK_INTERN (line 590) | NK_INTERN float
  function NK_INTERN (line 598) | NK_INTERN void
  function NK_API (line 630) | NK_API void

FILE: demo/sdl_opengl2/main.c
  function main (line 78) | int

FILE: demo/sdl_opengl2/nuklear_sdl_gl2.h
  type nk_font_atlas (line 18) | struct nk_font_atlas
  type nk_anti_aliasing (line 21) | enum nk_anti_aliasing
  type nk_sdl_device (line 37) | struct nk_sdl_device {
  type nk_sdl_vertex (line 43) | struct nk_sdl_vertex {
  type nk_sdl (line 49) | struct nk_sdl {
  function NK_INTERN (line 57) | NK_INTERN void
  function NK_API (line 69) | NK_API void
  function nk_sdl_clipboard_paste (line 189) | static void
  function nk_sdl_clipboard_copy (line 200) | static void
  function nk_context (line 214) | nk_context*
  function NK_API (line 227) | NK_API void
  function NK_API (line 235) | NK_API void
  function NK_API (line 246) | NK_API void
  function NK_API (line 262) | NK_API int
  function NK_API (line 370) | NK_API

FILE: demo/sdl_opengl3/main.c
  function main (line 82) | int main(int argc, char *argv[])

FILE: demo/sdl_opengl3/nuklear_sdl_gl3.h
  type nk_font_atlas (line 20) | struct nk_font_atlas
  type nk_anti_aliasing (line 23) | enum nk_anti_aliasing
  type nk_sdl_device (line 44) | struct nk_sdl_device {
  type nk_sdl_vertex (line 59) | struct nk_sdl_vertex {
  type nk_sdl (line 65) | struct nk_sdl {
  function NK_API (line 78) | NK_API void
  function NK_INTERN (line 161) | NK_INTERN void
  function NK_API (line 173) | NK_API void
  function NK_API (line 188) | NK_API void
  function nk_sdl_clipboard_paste (line 298) | static void
  function nk_sdl_clipboard_copy (line 309) | static void
  function nk_context (line 323) | nk_context*
  function NK_API (line 336) | NK_API void
  function NK_API (line 344) | NK_API void
  function NK_API (line 356) | NK_API void
  function NK_API (line 372) | NK_API int
  function NK_API (line 482) | NK_API

FILE: demo/sdl_opengles2/main.c
  function MainLoop (line 89) | static void
  function main (line 184) | int main(int argc, char* argv[])

FILE: demo/sdl_opengles2/nuklear_sdl_gles2.h
  type nk_font_atlas (line 23) | struct nk_font_atlas
  type nk_anti_aliasing (line 26) | enum nk_anti_aliasing
  type nk_sdl_device (line 46) | struct nk_sdl_device {
  type nk_sdl_vertex (line 63) | struct nk_sdl_vertex {
  type nk_sdl (line 69) | struct nk_sdl {
  function NK_API (line 81) | NK_API void
  function NK_INTERN (line 149) | NK_INTERN void
  function NK_API (line 161) | NK_API void
  function NK_API (line 176) | NK_API void
  function nk_sdl_clipboard_paste (line 298) | static void
  function nk_sdl_clipboard_copy (line 309) | static void
  function nk_context (line 323) | nk_context*
  function NK_API (line 336) | NK_API void
  function NK_API (line 344) | NK_API void
  function NK_API (line 356) | NK_API void
  function NK_API (line 372) | NK_API int
  function NK_API (line 480) | NK_API

FILE: demo/sdl_renderer/main.c
  function main (line 77) | int

FILE: demo/sdl_renderer/nuklear_sdl_renderer.h
  type nk_font_atlas (line 19) | struct nk_font_atlas
  type nk_anti_aliasing (line 22) | enum nk_anti_aliasing
  type nk_sdl_device (line 49) | struct nk_sdl_device {
  type nk_sdl_vertex (line 55) | struct nk_sdl_vertex {
  type nk_sdl (line 61) | struct nk_sdl {
  function NK_INTERN (line 70) | NK_INTERN void
  function NK_API (line 85) | NK_API void
  function nk_sdl_clipboard_paste (line 202) | static void
  function nk_sdl_clipboard_copy (line 213) | static void
  function nk_context (line 227) | nk_context*
  function NK_API (line 260) | NK_API void
  function NK_API (line 268) | NK_API void
  function NK_API (line 279) | NK_API void
  function NK_API (line 295) | NK_API int
  function NK_API (line 403) | NK_API

FILE: demo/sdl_vulkan/main.c
  type queue_family_indices (line 83) | struct queue_family_indices {
  type swap_chain_support_details (line 88) | struct swap_chain_support_details {
  function swap_chain_support_details_free (line 96) | void swap_chain_support_details_free(
  type vulkan_demo (line 108) | struct vulkan_demo {
  function VKAPI_CALL (line 151) | VKAPI_CALL
  function check_validation_layer_support (line 164) | bool check_validation_layer_support() {
  function VkResult (line 199) | VkResult create_debug_utils_messenger_ext(
  function create_debug_callback (line 213) | bool create_debug_callback(struct vulkan_demo *demo) {
  function create_instance (line 236) | bool create_instance(struct vulkan_demo *demo) {
  function create_surface (line 368) | bool create_surface(struct vulkan_demo *demo) {
  function find_queue_families (line 379) | bool find_queue_families(VkPhysicalDevice physical_device, VkSurfaceKHR ...
  function query_swap_chain_support (line 425) | bool query_swap_chain_support(
  function is_suitable_physical_device (line 490) | bool is_suitable_physical_device(VkPhysicalDevice physical_device,
  function create_physical_device (line 573) | bool create_physical_device(struct vulkan_demo *demo) {
  function create_logical_device (line 620) | bool create_logical_device(struct vulkan_demo *demo) {
  function create_sampler (line 669) | bool create_sampler(struct vulkan_demo *demo) {
  function VkSurfaceFormatKHR (line 698) | VkSurfaceFormatKHR
  function VkPresentModeKHR (line 720) | VkPresentModeKHR
  function VkExtent2D (line 738) | VkExtent2D choose_swap_extent(struct vulkan_demo *demo,
  function create_swap_chain (line 762) | bool create_swap_chain(struct vulkan_demo *demo) {
  function create_swap_chain_image_views (line 865) | bool create_swap_chain_image_views(struct vulkan_demo *demo) {
  function create_overlay_images (line 902) | bool create_overlay_images(struct vulkan_demo *demo) {
  function create_render_pass (line 1022) | bool create_render_pass(struct vulkan_demo *demo) {
  function create_framebuffers (line 1076) | bool create_framebuffers(struct vulkan_demo *demo) {
  function create_descriptor_set_layout (line 1108) | bool create_descriptor_set_layout(struct vulkan_demo *demo) {
  function create_descriptor_pool (line 1138) | bool create_descriptor_pool(struct vulkan_demo *demo) {
  function update_descriptor_sets (line 1162) | void update_descriptor_sets(struct vulkan_demo *demo) {
  function create_descriptor_sets (line 1188) | bool create_descriptor_sets(struct vulkan_demo *demo) {
  function create_shader_module (line 1225) | bool create_shader_module(VkDevice device, char *shader_buffer,
  function create_graphics_pipeline (line 1245) | bool create_graphics_pipeline(struct vulkan_demo *demo) {
  function create_command_pool (line 1455) | bool create_command_pool(struct vulkan_demo *demo) {
  function create_command_buffers (line 1473) | bool create_command_buffers(struct vulkan_demo *demo) {
  function create_semaphores (line 1496) | bool create_semaphores(struct vulkan_demo *demo) {
  function create_fence (line 1524) | bool create_fence(struct vulkan_demo *demo) {
  function create_swap_chain_related_resources (line 1546) | bool create_swap_chain_related_resources(struct vulkan_demo *demo) {
  function destroy_swap_chain_related_resources (line 1568) | bool destroy_swap_chain_related_resources(struct vulkan_demo *demo) {
  function create_demo_texture (line 1592) | bool create_demo_texture(struct vulkan_demo *demo) {
  function create_vulkan_demo (line 1860) | bool create_vulkan_demo(struct vulkan_demo *demo) {
  function recreate_swap_chain (line 1907) | bool recreate_swap_chain(struct vulkan_demo *demo) {
  function render (line 1924) | bool render(struct vulkan_demo *demo, struct nk_colorf *bg,
  function VkResult (line 2017) | VkResult
  function cleanup (line 2032) | bool cleanup(struct vulkan_demo *demo) {
  function main (line 2117) | int main(void) {

FILE: demo/sdl_vulkan/nuklear_sdl_vulkan.h
  type nk_sdl_init_state (line 255) | enum nk_sdl_init_state { NK_SDL_DEFAULT = 0 }
  type nk_sdl_init_state (line 262) | enum nk_sdl_init_state
  type nk_font_atlas (line 265) | struct nk_font_atlas
  type nk_anti_aliasing (line 270) | enum nk_anti_aliasing
  type nk_sdl_vertex (line 309) | struct nk_sdl_vertex {
  type nk_vulkan_texture_descriptor_set (line 315) | struct nk_vulkan_texture_descriptor_set {
  type nk_sdl_device (line 320) | struct nk_sdl_device {
  type nk_sdl (line 360) | struct nk_sdl {
  type Mat4f (line 373) | struct Mat4f {
  function NK_INTERN (line 377) | NK_INTERN uint32_t nk_sdl_find_memory_index(VkPhysicalDevice physical_de...
  function NK_INTERN (line 396) | NK_INTERN void nk_sdl_create_sampler(struct nk_sdl_device *dev) {
  function NK_INTERN (line 422) | NK_INTERN void
  function NK_INTERN (line 437) | NK_INTERN void nk_sdl_create_command_buffers(struct nk_sdl_device *dev) {
  function NK_INTERN (line 456) | NK_INTERN void nk_sdl_create_semaphore(struct nk_sdl_device *dev) {
  function NK_INTERN (line 467) | NK_INTERN void nk_sdl_create_buffer_and_memory(struct nk_sdl_device *dev,
  function NK_INTERN (line 502) | NK_INTERN void nk_sdl_create_render_pass(struct nk_sdl_device *dev) {
  function NK_INTERN (line 554) | NK_INTERN void nk_sdl_create_framebuffers(struct nk_sdl_device *dev,
  function NK_INTERN (line 582) | NK_INTERN void nk_sdl_create_descriptor_pool(struct nk_sdl_device *dev) {
  function NK_INTERN (line 604) | NK_INTERN void
  function NK_INTERN (line 629) | NK_INTERN void
  function NK_INTERN (line 663) | NK_INTERN void
  function NK_INTERN (line 688) | NK_INTERN void
  function NK_INTERN (line 729) | NK_INTERN void nk_sdl_create_pipeline_layout(struct nk_sdl_device *dev) {
  function NK_INTERN (line 747) | NK_INTERN VkPipelineShaderStageCreateInfo
  function NK_INTERN (line 771) | NK_INTERN void nk_sdl_create_pipeline(struct nk_sdl_device *dev) {
  function NK_INTERN (line 895) | NK_INTERN void nk_sdl_create_render_resources(struct nk_sdl_device *dev,
  function NK_API (line 909) | NK_API void
  function NK_INTERN (line 953) | NK_INTERN void nk_sdl_device_upload_atlas(VkQueue graphics_queue,
  function NK_INTERN (line 1145) | NK_INTERN void nk_sdl_destroy_render_resources(struct nk_sdl_device *dev) {
  function NK_API (line 1165) | NK_API void nk_sdl_resize(uint32_t framebuffer_width,
  function NK_API (line 1177) | NK_API void nk_sdl_device_destroy(void) {
  function NK_API (line 1211) | NK_API
  function NK_API (line 1219) | NK_API void nk_sdl_font_stash_begin(struct nk_font_atlas **atlas) {
  function NK_API (line 1225) | NK_API void nk_sdl_font_stash_end(VkQueue graphics_queue) {
  function NK_API (line 1239) | NK_API void nk_sdl_handle_grab(void) {
  function NK_API (line 1255) | NK_API int nk_sdl_handle_event(SDL_Event *evt) {
  function NK_INTERN (line 1405) | NK_INTERN void update_texture_descriptor_set(
  function NK_API (line 1432) | NK_API
  function NK_INTERN (line 1616) | NK_INTERN void nk_sdl_clipboard_paste(nk_handle usr,
  function NK_INTERN (line 1626) | NK_INTERN void nk_sdl_clipboard_copy(nk_handle usr, const char *text, in...
  function nk_context (line 1640) | nk_context *

FILE: demo/sdl_vulkan/src/nuklear_sdl_vulkan.in.h
  type nk_sdl_init_state (line 32) | enum nk_sdl_init_state { NK_SDL_DEFAULT = 0 }
  type nk_sdl_init_state (line 39) | enum nk_sdl_init_state
  type nk_font_atlas (line 42) | struct nk_font_atlas
  type nk_anti_aliasing (line 47) | enum nk_anti_aliasing
  type nk_sdl_vertex (line 86) | struct nk_sdl_vertex {
  type nk_vulkan_texture_descriptor_set (line 92) | struct nk_vulkan_texture_descriptor_set {
  type nk_sdl_device (line 97) | struct nk_sdl_device {
  type nk_sdl (line 137) | struct nk_sdl {
  type Mat4f (line 150) | struct Mat4f {
  function NK_INTERN (line 154) | NK_INTERN uint32_t nk_sdl_find_memory_index(VkPhysicalDevice physical_de...
  function NK_INTERN (line 173) | NK_INTERN void nk_sdl_create_sampler(struct nk_sdl_device *dev) {
  function NK_INTERN (line 199) | NK_INTERN void
  function NK_INTERN (line 214) | NK_INTERN void nk_sdl_create_command_buffers(struct nk_sdl_device *dev) {
  function NK_INTERN (line 233) | NK_INTERN void nk_sdl_create_semaphore(struct nk_sdl_device *dev) {
  function NK_INTERN (line 244) | NK_INTERN void nk_sdl_create_buffer_and_memory(struct nk_sdl_device *dev,
  function NK_INTERN (line 279) | NK_INTERN void nk_sdl_create_render_pass(struct nk_sdl_device *dev) {
  function NK_INTERN (line 331) | NK_INTERN void nk_sdl_create_framebuffers(struct nk_sdl_device *dev,
  function NK_INTERN (line 359) | NK_INTERN void nk_sdl_create_descriptor_pool(struct nk_sdl_device *dev) {
  function NK_INTERN (line 381) | NK_INTERN void
  function NK_INTERN (line 406) | NK_INTERN void
  function NK_INTERN (line 440) | NK_INTERN void
  function NK_INTERN (line 465) | NK_INTERN void
  function NK_INTERN (line 506) | NK_INTERN void nk_sdl_create_pipeline_layout(struct nk_sdl_device *dev) {
  function NK_INTERN (line 524) | NK_INTERN VkPipelineShaderStageCreateInfo
  function NK_INTERN (line 548) | NK_INTERN void nk_sdl_create_pipeline(struct nk_sdl_device *dev) {
  function NK_INTERN (line 672) | NK_INTERN void nk_sdl_create_render_resources(struct nk_sdl_device *dev,
  function NK_API (line 686) | NK_API void
  function NK_INTERN (line 730) | NK_INTERN void nk_sdl_device_upload_atlas(VkQueue graphics_queue,
  function NK_INTERN (line 922) | NK_INTERN void nk_sdl_destroy_render_resources(struct nk_sdl_device *dev) {
  function NK_API (line 942) | NK_API void nk_sdl_resize(uint32_t framebuffer_width,
  function NK_API (line 954) | NK_API void nk_sdl_device_destroy(void) {
  function NK_API (line 988) | NK_API
  function NK_API (line 996) | NK_API void nk_sdl_font_stash_begin(struct nk_font_atlas **atlas) {
  function NK_API (line 1002) | NK_API void nk_sdl_font_stash_end(VkQueue graphics_queue) {
  function NK_API (line 1016) | NK_API void nk_sdl_handle_grab(void) {
  function NK_API (line 1032) | NK_API int nk_sdl_handle_event(SDL_Event *evt) {
  function NK_INTERN (line 1163) | NK_INTERN void update_texture_descriptor_set(
  function NK_API (line 1190) | NK_API
  function NK_INTERN (line 1374) | NK_INTERN void nk_sdl_clipboard_paste(nk_handle usr,
  function NK_INTERN (line 1384) | NK_INTERN void nk_sdl_clipboard_copy(nk_handle usr, const char *text, in...
  function nk_context (line 1398) | nk_context *

FILE: demo/sfml_opengl2/main.cpp
  function main (line 78) | int main(void)

FILE: demo/sfml_opengl2/nuklear_sfml_gl2.h
  type nk_font_atlas (line 20) | struct nk_font_atlas
  type nk_anti_aliasing (line 23) | enum nk_anti_aliasing
  type nk_sfml_device (line 38) | struct nk_sfml_device {
  type nk_sfml_vertex (line 44) | struct nk_sfml_vertex {
  type nk_sfml (line 50) | struct nk_sfml {
  function NK_INTERN (line 58) | NK_INTERN void
  function NK_API (line 70) | NK_API void
  function nk_sfml_clipboard_paste (line 188) | static void
  function nk_sfml_clipboard_copy (line 205) | static void
  function NK_API (line 241) | NK_API void
  function NK_API (line 249) | NK_API void
  function NK_API (line 261) | NK_API int
  function NK_API (line 368) | NK_API

FILE: demo/sfml_opengl3/main.cpp
  function main (line 80) | int main(void)

FILE: demo/sfml_opengl3/nuklear_sfml_gl3.h
  type nk_font_atlas (line 23) | struct nk_font_atlas
  type nk_anti_aliasing (line 26) | enum nk_anti_aliasing
  type nk_sfml_device (line 45) | struct nk_sfml_device {
  type nk_sfml_vertex (line 59) | struct nk_sfml_vertex {
  type nk_sfml (line 64) | struct nk_sfml {
  function NK_API (line 78) | NK_API void
  function NK_API (line 165) | NK_API void
  function NK_INTERN (line 181) | NK_INTERN void
  function NK_API (line 193) | NK_API void
  function nk_sfml_clipboard_paste (line 298) | static void
  function nk_sfml_clipboard_copy (line 312) | static void
  function NK_API (line 348) | NK_API void
  function NK_API (line 356) | NK_API void
  function NK_API (line 368) | NK_API int
  function NK_API (line 476) | NK_API

FILE: demo/x11/main.c
  type XWindow (line 26) | typedef struct XWindow XWindow;
  type XWindow (line 27) | struct XWindow {
  function die (line 42) | static void
  function timestamp (line 53) | static long
  function sleep_for (line 61) | static void
  function main (line 120) | int

FILE: demo/x11/nuklear_xlib.h
  type XFont (line 18) | typedef struct XFont XFont;
  type nk_color (line 25) | struct nk_color
  type nk_text_edit (line 29) | struct nk_text_edit
  type XSurface (line 85) | typedef struct XSurface XSurface;
  type XImageWithAlpha (line 86) | typedef struct XImageWithAlpha XImageWithAlpha;
  type XFont (line 87) | struct XFont {
  type XSurface (line 99) | struct XSurface {
  type XImageWithAlpha (line 110) | struct XImageWithAlpha {
  type nk_text_edit (line 118) | struct nk_text_edit
  type nk_context (line 125) | struct nk_context
  type XSurface (line 126) | struct XSurface
  function NK_INTERN (line 138) | NK_INTERN double
  function nk_color_from_byte (line 146) | NK_INTERN unsigned long
  function NK_INTERN (line 156) | NK_INTERN XSurface*
  function NK_INTERN (line 176) | NK_INTERN void
  function NK_INTERN (line 190) | NK_INTERN void
  function NK_INTERN (line 205) | NK_INTERN void
  function NK_INTERN (line 216) | NK_INTERN void
  function NK_INTERN (line 246) | NK_INTERN void
  function NK_INTERN (line 299) | NK_INTERN void
  function NK_INTERN (line 315) | NK_INTERN void
  function NK_INTERN (line 328) | NK_INTERN void
  function NK_INTERN (line 345) | NK_INTERN void
  function NK_INTERN (line 359) | NK_INTERN void
  function NK_INTERN (line 372) | NK_INTERN void
  function NK_INTERN (line 382) | NK_INTERN void
  function NK_INTERN (line 394) | NK_INTERN void
  function NK_INTERN (line 406) | NK_INTERN void
  function NK_INTERN (line 417) | NK_INTERN void
  function NK_INTERN (line 444) | NK_INTERN void
  function nk_image (line 478) | nk_image
  function nk_image (line 545) | nk_image
  function nk_image (line 554) | nk_image
  function NK_INTERN (line 564) | NK_INTERN void
  function nk_xsurf_image_free (line 582) | void
  function NK_INTERN (line 595) | NK_INTERN void
  function NK_INTERN (line 602) | NK_INTERN void
  function NK_INTERN (line 608) | NK_INTERN void
  function NK_API (line 619) | NK_API XFont*
  function NK_INTERN (line 666) | NK_INTERN float
  function NK_API (line 699) | NK_API void
  function nk_context (line 714) | nk_context*
  function NK_API (line 754) | NK_API void
  function NK_API (line 764) | NK_API void
  function NK_API (line 774) | NK_API void
  function NK_API (line 785) | NK_API void
  function NK_API (line 800) | NK_API int
  function NK_API (line 988) | NK_API void
  function NK_API (line 997) | NK_API void

FILE: demo/x11_opengl2/main.c
  type XWindow (line 81) | struct XWindow {
  function gl_error_handler (line 93) | static int gl_error_handler(Display *dpy, XErrorEvent *ev)
  function die (line 96) | static void
  function has_extension (line 107) | static int
  function main (line 128) | int main(void)

FILE: demo/x11_opengl2/nuklear_xlib_gl2.h
  type nk_font_atlas (line 18) | struct nk_font_atlas
  type nk_anti_aliasing (line 21) | enum nk_anti_aliasing
  type nk_x11_vertex (line 55) | struct nk_x11_vertex {
  type nk_x11_device (line 61) | struct nk_x11_device {
  type nk_x11 (line 67) | struct nk_x11 {
  function NK_INTERN (line 78) | NK_INTERN double
  function NK_INTERN (line 86) | NK_INTERN void
  function NK_API (line 98) | NK_API void
  function NK_API (line 220) | NK_API void
  function NK_API (line 228) | NK_API void
  function NK_API (line 239) | NK_API int
  function nk_context (line 360) | nk_context*
  function NK_API (line 383) | NK_API void

FILE: demo/x11_opengl3/main.c
  type XWindow (line 79) | struct XWindow {
  function gl_error_handler (line 91) | static int gl_error_handler(Display *dpy, XErrorEvent *ev)
  function die (line 94) | static void
  function has_extension (line 105) | static int
  function main (line 126) | int main(void)

FILE: demo/x11_opengl3/nuklear_xlib_gl3.h
  type nk_font_atlas (line 18) | struct nk_font_atlas
  type nk_anti_aliasing (line 21) | enum nk_anti_aliasing
  type GLboolean (line 68) | typedef GLboolean(*nkglUnmapBuffer)(GLenum);
  type GLuint (line 81) | typedef GLuint(*nkglCreateShader)(GLenum);
  type GLuint (line 87) | typedef GLuint(*nkglCreateProgram)(void);
  type GLint (line 95) | typedef GLint(*nkglGetUniformLocation)(GLuint, const GLchar*);
  type GLint (line 96) | typedef GLint(*nkglGetAttribLocation)(GLuint, const GLchar*);
  type graphics_card_vendors (line 137) | enum graphics_card_vendors {
  type opengl_info (line 144) | struct opengl_info {
  type nk_x11_vertex (line 166) | struct nk_x11_vertex {
  type nk_x11_device (line 172) | struct nk_x11_device {
  type nk_x11 (line 190) | struct nk_x11 {
  function NK_INTERN (line 210) | NK_INTERN double
  function NK_INTERN (line 218) | NK_INTERN int
  function NK_INTERN (line 228) | NK_INTERN int
  function NK_INTERN (line 250) | NK_INTERN __GLXextFuncPtr
  function NK_INTERN (line 262) | NK_INTERN int
  function NK_API (line 362) | NK_API int
  function NK_INTERN (line 450) | NK_INTERN void
  function NK_API (line 462) | NK_API void
  function NK_API (line 477) | NK_API void
  function NK_API (line 587) | NK_API void
  function NK_API (line 595) | NK_API void
  function NK_API (line 606) | NK_API int
  function nk_context (line 727) | nk_context*
  function NK_API (line 750) | NK_API void

FILE: demo/xcb_cairo/main.c
  function die (line 23) | static void die(const char *fmt, ...)
  function main (line 82) | int

FILE: demo/xcb_cairo/nuklear_xcb.h
  type nk_xcb_context (line 38) | struct nk_xcb_context
  type nk_cairo_context (line 39) | struct nk_cairo_context
  type nk_xcb_event_type (line 44) | enum nk_xcb_event_type {
  type nk_xcb_context (line 53) | struct nk_xcb_context
  type nk_xcb_context (line 55) | struct nk_xcb_context
  type nk_context (line 55) | struct nk_context
  type nk_xcb_context (line 56) | struct nk_xcb_context
  type nk_xcb_context (line 57) | struct nk_xcb_context
  type nk_color (line 62) | struct nk_color
  type nk_cairo_context (line 63) | struct nk_cairo_context
  type nk_cairo_context (line 65) | struct nk_cairo_context
  type nk_cairo_context (line 66) | struct nk_cairo_context
  type nk_cairo_context (line 67) | struct nk_cairo_context
  type nk_context (line 67) | struct nk_context
  type nk_xcb_context (line 70) | struct nk_xcb_context
  type nk_xcb_context (line 71) | struct nk_xcb_context
  type xkb_context (line 118) | typedef struct xkb_context xkb_context;
  type xkb_keymap (line 119) | typedef struct xkb_keymap xkb_keymap;
  type xkb_state (line 120) | typedef struct xkb_state xkb_state;
  type xkbcommon_context (line 121) | typedef struct xkbcommon_context xkbcommon_context;
  type nk_xcb_context (line 122) | typedef struct nk_xcb_context nk_xcb_context;
  type xkbcommon_context (line 124) | struct xkbcommon_context
  type nk_cairo_context (line 135) | struct nk_cairo_context {
  type nk_xcb_context (line 147) | struct nk_xcb_context {
  function nk_xcb_context (line 162) | nk_xcb_context *nk_xcb_init(const char *title, int pos_x, int pos_y, int...
  function NK_API (line 232) | NK_API void nk_xcb_free(struct nk_xcb_context *xcb_ctx)
  function NK_API (line 241) | NK_API int nk_xcb_handle_event(struct nk_xcb_context *xcb_ctx, struct nk...
  function NK_API (line 456) | NK_API void nk_xcb_render(struct nk_xcb_context *xcb_ctx)
  function NK_API (line 475) | NK_API void nk_xcb_size(struct nk_xcb_context *xcb_ctx, int *width, int ...
  function NK_API (line 481) | NK_API void *nk_xcb_create_cairo_surface(struct nk_xcb_context *xcb_ctx)
  function NK_API (line 491) | NK_API void nk_xcb_resize_cairo_surface(struct nk_xcb_context *xcb_ctx, ...
  function NK_INTERN (line 501) | NK_INTERN float nk_cairo_text_width(nk_handle handle, float height __att...
  function nk_cairo_context (line 515) | nk_cairo_context *nk_cairo_init(struct nk_color *bg, const char *font_fi...
  function NK_API (line 560) | NK_API cairo_surface_t *nk_cairo_surface(struct nk_cairo_context *cairo_...
  function nk_user_font (line 565) | nk_user_font *nk_cairo_default_font(struct nk_cairo_context *cairo_ctx)
  function NK_API (line 570) | NK_API void nk_cairo_free(struct nk_cairo_context *cairo_ctx)
  function NK_API (line 579) | NK_API void nk_cairo_damage(struct nk_cairo_context *cairo_ctx)
  function NK_API (line 584) | NK_API int nk_cairo_render(struct nk_cairo_context *cairo_ctx, struct nk...
  function NK_INTERN (line 895) | NK_INTERN xkbcommon_context *xkbcommon_init(xcb_connection_t *conn)
  function NK_INTERN (line 947) | NK_INTERN void xkbcommon_free(xkbcommon_context *kbdctx)
  function NK_INTERN (line 963) | NK_INTERN xkb_keysym_t keycode_to_keysym(nk_xcb_context *ctx, xkb_keycod...

FILE: example/canvas.c
  type nk_glfw_vertex (line 47) | struct nk_glfw_vertex {
  type device (line 53) | struct device {
  function device_init (line 102) | static void
  function device_upload_atlas (line 184) | static void
  function device_shutdown (line 195) | static void
  function device_draw (line 209) | static void
  function error_callback (line 309) | static void error_callback(int e, const char *d){printf("Error %d: %s\n"...
  function text_input (line 310) | static void text_input(GLFWwindow *win, unsigned int codepoint)
  function scroll_input (line 312) | static void scroll_input(GLFWwindow *win, double _, double yoff)
  function pump_input (line 315) | static void
  type nk_canvas (line 353) | struct nk_canvas {
  function canvas_begin (line 360) | static void
  function canvas_end (line 387) | static void
  function main (line 396) | int main(int argc, char *argv[])

FILE: example/extended.c
  type media (line 45) | struct media {
  function ui_piemenu (line 76) | static int
  function grid_demo (line 180) | static void
  function ui_header (line 223) | static void
  function ui_widget (line 231) | static void
  function ui_widget_centered (line 240) | static void
  function button_demo (line 249) | static void
  function basic_demo (line 359) | static void
  type nk_glfw_vertex (line 473) | struct nk_glfw_vertex {
  type device (line 479) | struct device {
  function die (line 494) | static void
  function icon_load (line 505) | static struct nk_image
  function device_init (line 525) | static void
  function device_upload_atlas (line 607) | static void
  function device_shutdown (line 618) | static void
  function device_draw (line 632) | static void
  function error_callback (line 732) | static void error_callback(int e, const char *d){printf("Error %d: %s\n"...
  function text_input (line 733) | static void text_input(GLFWwindow *win, unsigned int codepoint)
  function scroll_input (line 735) | static void scroll_input(GLFWwindow *win, double _, double yoff)
  function main (line 738) | int main(int argc, char *argv[])

FILE: example/file_browser.c
  type icons (line 52) | struct icons {
  type file_groups (line 66) | enum file_groups {
  type file_types (line 76) | enum file_types {
  type file_group (line 96) | struct file_group {
  type file (line 102) | struct file {
  type media (line 108) | struct media {
  type file_browser (line 117) | struct file_browser {
  function die (line 141) | static void
  function dir_free_list (line 182) | static void
  type dirent (line 216) | struct dirent
  function FILE_GROUP (line 253) | static struct file_group
  function FILE_DEF (line 263) | static struct file
  type nk_image (line 273) | struct nk_image
  type media (line 274) | struct media
  type file (line 298) | struct file
  function media_init (line 314) | static void
  function file_browser_reload_directory_content (line 345) | static void
  function file_browser_init (line 357) | static void
  function file_browser_free (line 389) | static void
  function file_browser_run (line 401) | static int
  type nk_glfw_vertex (line 523) | struct nk_glfw_vertex {
  type device (line 529) | struct device {
  function icon_load (line 543) | static struct nk_image
  function device_init (line 563) | static void
  function device_upload_atlas (line 645) | static void
  function device_shutdown (line 656) | static void
  function device_draw (line 670) | static void
  function error_callback (line 770) | static void error_callback(int e, const char *d){printf("Error %d: %s\n"...
  function text_input (line 771) | static void text_input(GLFWwindow *win, unsigned int codepoint)
  function scroll_input (line 773) | static void scroll_input(GLFWwindow *win, double _, double yoff)
  function main (line 776) | int main(int argc, char *argv[])

FILE: example/skinning.c
  type media (line 45) | struct media {
  type nk_glfw_vertex (line 74) | struct nk_glfw_vertex {
  type device (line 80) | struct device {
  function die (line 95) | static void
  function GLuint (line 106) | static GLuint
  function device_init (line 126) | static void
  function device_upload_atlas (line 208) | static void
  function device_shutdown (line 219) | static void
  function device_draw (line 233) | static void
  function error_callback (line 333) | static void error_callback(int e, const char *d){printf("Error %d: %s\n"...
  function text_input (line 334) | static void text_input(GLFWwindow *win, unsigned int codepoint)
  function scroll_input (line 336) | static void scroll_input(GLFWwindow *win, double _, double yoff)
  function main (line 339) | int main(int argc, char *argv[])

FILE: example/stb_image.h
  type stbi_uc (line 414) | typedef unsigned char stbi_uc;
  type stbi_io_callbacks (line 435) | typedef struct
  type stbi__uint16 (line 602) | typedef unsigned short stbi__uint16;
  type stbi__int16 (line 603) | typedef   signed short stbi__int16;
  type stbi__uint32 (line 604) | typedef unsigned int   stbi__uint32;
  type stbi__int32 (line 605) | typedef   signed int   stbi__int32;
  type stbi__uint16 (line 608) | typedef uint16_t stbi__uint16;
  type stbi__int16 (line 609) | typedef int16_t  stbi__int16;
  type stbi__uint32 (line 610) | typedef uint32_t stbi__uint32;
  type stbi__int32 (line 611) | typedef int32_t  stbi__int32;
  function stbi__cpuid3 (line 686) | static int stbi__cpuid3(void)
  function stbi__sse2_available (line 707) | static int stbi__sse2_available()
  function stbi__sse2_available (line 715) | static int stbi__sse2_available()
  type stbi__context (line 750) | typedef struct
  function stbi__start_mem (line 770) | static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int...
  function stbi__start_callbacks (line 779) | static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c...
  function stbi__stdio_read (line 792) | static int stbi__stdio_read(void *user, char *data, int size)
  function stbi__stdio_skip (line 797) | static void stbi__stdio_skip(void *user, int n)
  function stbi__stdio_eof (line 802) | static int stbi__stdio_eof(void *user)
  function stbi__start_file (line 814) | static void stbi__start_file(stbi__context *s, FILE *f)
  function stbi__rewind (line 823) | static void stbi__rewind(stbi__context *s)
  function STBIDEF (line 889) | STBIDEF const char *stbi_failure_reason(void)
  function stbi__err (line 894) | static int stbi__err(const char *str)
  function STBIDEF (line 920) | STBIDEF void stbi_image_free(void *retval_from_stbi_load)
  function STBIDEF (line 935) | STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip)
  function stbi__float_postprocess (line 1006) | static void stbi__float_postprocess(float *result, int *x, int *y, int *...
  function FILE (line 1030) | static FILE *stbi__fopen(char const *filename, char const *mode)
  function STBIDEF (line 1043) | STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *co...
  function STBIDEF (line 1053) | STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp,...
  function STBIDEF (line 1067) | STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, i...
  function STBIDEF (line 1074) | STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk,...
  function STBIDEF (line 1099) | STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, in...
  function STBIDEF (line 1106) | STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, ...
  function STBIDEF (line 1114) | STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *com...
  function STBIDEF (line 1124) | STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, ...
  function STBIDEF (line 1138) | STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len)
  function STBIDEF (line 1152) | STBIDEF int      stbi_is_hdr          (char const *filename)
  function STBIDEF (line 1163) | STBIDEF int      stbi_is_hdr_from_file(FILE *f)
  function STBIDEF (line 1176) | STBIDEF int      stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clb...
  function STBIDEF (line 1193) | STBIDEF void   stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = ga...
  function STBIDEF (line 1194) | STBIDEF void   stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = sc...
  function STBIDEF (line 1197) | STBIDEF void   stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = ...
  function STBIDEF (line 1198) | STBIDEF void   stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = ...
  function stbi__refill_buffer (line 1213) | static void stbi__refill_buffer(stbi__context *s)
  function stbi_inline (line 1229) | stbi_inline static stbi_uc stbi__get8(stbi__context *s)
  function stbi_inline (line 1240) | stbi_inline static int stbi__at_eof(stbi__context *s)
  function stbi__skip (line 1252) | static void stbi__skip(stbi__context *s, int n)
  function stbi__getn (line 1269) | static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n)
  function stbi__get16be (line 1293) | static int stbi__get16be(stbi__context *s)
  function stbi__uint32 (line 1299) | static stbi__uint32 stbi__get32be(stbi__context *s)
  function stbi__get16le (line 1308) | static int stbi__get16le(stbi__context *s)
  function stbi__uint32 (line 1316) | static stbi__uint32 stbi__get32le(stbi__context *s)
  function stbi_uc (line 1337) | static stbi_uc stbi__compute_y(int r, int g, int b)
  function stbi_uc (line 1407) | static stbi_uc *stbi__hdr_to_ldr(float   *data, int x, int y, int comp)
  type stbi__huffman (line 1459) | typedef struct
  type stbi__jpeg (line 1470) | typedef struct
  function stbi__build_huffman (line 1521) | static int stbi__build_huffman(stbi__huffman *h, int *count)
  function stbi__build_fast_ac (line 1564) | static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h)
  function stbi__grow_buffer_unsafe (line 1589) | static void stbi__grow_buffer_unsafe(stbi__jpeg *j)
  function stbi_inline (line 1610) | stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffm...
  function stbi_inline (line 1664) | stbi_inline static int stbi__extend_receive(stbi__jpeg *j, int n)
  function stbi_inline (line 1680) | stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n)
  function stbi_inline (line 1691) | stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j)
  function stbi__jpeg_decode_block (line 1719) | static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__...
  function stbi__jpeg_decode_block_prog_dc (line 1771) | static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64]...
  function stbi__jpeg_decode_block_prog_ac (line 1798) | static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64]...
  function stbi_inline (line 1918) | stbi_inline static stbi_uc stbi__clamp(int x)
  function stbi__idct_block (line 1969) | static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64])
  function stbi__idct_simd (line 2032) | static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])
  function stbi__idct_simd (line 2213) | static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64])
  function stbi_uc (line 2421) | static stbi_uc stbi__get_marker(stbi__jpeg *j)
  function stbi__jpeg_reset (line 2438) | static void stbi__jpeg_reset(stbi__jpeg *j)
  function stbi__parse_entropy_coded_data (line 2451) | static int stbi__parse_entropy_coded_data(stbi__jpeg *z)
  function stbi__jpeg_dequantize (line 2575) | static void stbi__jpeg_dequantize(short *data, stbi_uc *dequant)
  function stbi__jpeg_finish (line 2582) | static void stbi__jpeg_finish(stbi__jpeg *z)
  function stbi__process_marker (line 2601) | static int stbi__process_marker(stbi__jpeg *z, int m)
  function stbi__process_scan_header (line 2665) | static int stbi__process_scan_header(stbi__jpeg *z)
  function stbi__process_frame_header (line 2704) | static int stbi__process_frame_header(stbi__jpeg *z, int scan)
  function stbi__decode_jpeg_header (line 2795) | static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan)
  function stbi__decode_jpeg_image (line 2818) | static int stbi__decode_jpeg_image(stbi__jpeg *j)
  type stbi_uc (line 2857) | typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_u...
  function stbi_uc (line 2862) | static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *...
  function stbi_uc (line 2871) | static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, s...
  function stbi_uc (line 2881) | static stbi_uc*  stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, ...
  function stbi_uc (line 2911) | static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, ...
  function stbi_uc (line 2936) | static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_n...
  function stbi_uc (line 3052) | static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_nea...
  function stbi__YCbCr_to_RGB_row (line 3067) | static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const...
  function stbi__YCbCr_to_RGB_row (line 3095) | static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const...
  function stbi__YCbCr_to_RGB_simd (line 3122) | static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi...
  function stbi__setup_jpeg (line 3257) | static void stbi__setup_jpeg(stbi__jpeg *j)
  function stbi__cleanup_jpeg (line 3283) | static void stbi__cleanup_jpeg(stbi__jpeg *j)
  type stbi__resample (line 3304) | typedef struct
  function stbi_uc (line 3314) | static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, i...
  function stbi__jpeg_test (line 3419) | static int stbi__jpeg_test(stbi__context *s)
  function stbi__jpeg_info_raw (line 3430) | static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp)
  function stbi__jpeg_info (line 3442) | static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp)
  type stbi__zhuffman (line 3465) | typedef struct
  function stbi_inline (line 3475) | stbi_inline static int stbi__bitreverse16(int n)
  function stbi_inline (line 3484) | stbi_inline static int stbi__bit_reverse(int v, int bits)
  function stbi__zbuild_huffman (line 3492) | static int stbi__zbuild_huffman(stbi__zhuffman *z, stbi_uc *sizelist, in...
  type stbi__zbuf (line 3545) | typedef struct
  function stbi_inline (line 3559) | stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z)
  function stbi__fill_bits (line 3565) | static void stbi__fill_bits(stbi__zbuf *z)
  function stbi__zreceive (line 3574) | int stbi__zreceive(stbi__zbuf *z, int n)
  function stbi__zhuffman_decode_slowpath (line 3584) | static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z)
  function stbi_inline (line 3602) | stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffm...
  function stbi__zexpand (line 3616) | static int stbi__zexpand(stbi__zbuf *z, char *zout, int n)  // need to m...
  function stbi__parse_huffman_block (line 3648) | static int stbi__parse_huffman_block(stbi__zbuf *a)
  function stbi__compute_huffman_codes (line 3690) | static int stbi__compute_huffman_codes(stbi__zbuf *a)
  function stbi__parse_uncomperssed_block (line 3736) | static int stbi__parse_uncomperssed_block(stbi__zbuf *a)
  function stbi__parse_zlib_header (line 3765) | static int stbi__parse_zlib_header(stbi__zbuf *a)
  function stbi__init_zdefaults (line 3780) | static void stbi__init_zdefaults(void)
  function stbi__parse_zlib (line 3791) | static int stbi__parse_zlib(stbi__zbuf *a, int parse_header)
  function stbi__do_zlib (line 3820) | static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, i...
  function STBIDEF (line 3830) | STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int ...
  function STBIDEF (line 3846) | STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *...
  function STBIDEF (line 3851) | STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *b...
  function STBIDEF (line 3867) | STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const ...
  function STBIDEF (line 3878) | STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int l...
  function STBIDEF (line 3894) | STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, co...
  type stbi__pngchunk (line 3917) | typedef struct
  function stbi__pngchunk (line 3923) | static stbi__pngchunk stbi__get_chunk_header(stbi__context *s)
  function stbi__check_png_header (line 3931) | static int stbi__check_png_header(stbi__context *s)
  type stbi__png (line 3940) | typedef struct
  function stbi__paeth (line 3967) | static int stbi__paeth(int a, int b, int c)
  function stbi__create_png_image_raw (line 3981) | static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__...
  function stbi__create_png_image (line 4159) | static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stb...
  function stbi__compute_transparency (line 4201) | static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int o...
  function stbi__expand_png_palette (line 4226) | static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int ...
  function STBIDEF (line 4266) | STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpr...
  function STBIDEF (line 4271) | STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_conv...
  function stbi__de_iphone (line 4276) | static void stbi__de_iphone(stbi__png *z)
  function stbi__parse_png_file (line 4320) | static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp)
  function stbi__png_test (line 4507) | static int stbi__png_test(stbi__context *s)
  function stbi__png_info_raw (line 4515) | static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp)
  function stbi__png_info (line 4527) | static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__bmp_test_raw (line 4538) | static int stbi__bmp_test_raw(stbi__context *s)
  function stbi__bmp_test (line 4553) | static int stbi__bmp_test(stbi__context *s)
  function stbi__high_bit (line 4562) | static int stbi__high_bit(unsigned int z)
  function stbi__bitcount (line 4574) | static int stbi__bitcount(unsigned int a)
  function stbi__shiftsigned (line 4584) | static int stbi__shiftsigned(int v, int shift, int bits)
  function stbi_uc (line 4601) | static stbi_uc *stbi__bmp_load(stbi__context *s, int *x, int *y, int *co...
  function stbi__tga_info (line 4814) | static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__tga_test (line 4851) | static int stbi__tga_test(stbi__context *s)
  function stbi_uc (line 4876) | static stbi_uc *stbi__tga_load(stbi__context *s, int *x, int *y, int *co...
  function stbi__psd_test (line 5075) | static int stbi__psd_test(stbi__context *s)
  function stbi_uc (line 5082) | static stbi_uc *stbi__psd_load(stbi__context *s, int *x, int *y, int *co...
  function stbi__pic_is4 (line 5259) | static int stbi__pic_is4(stbi__context *s,const char *str)
  function stbi__pic_test_core (line 5269) | static int stbi__pic_test_core(stbi__context *s)
  type stbi__pic_packet (line 5285) | typedef struct
  function stbi_uc (line 5290) | static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest)
  function stbi__copyval (line 5304) | static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src)
  function stbi_uc (line 5313) | static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int heigh...
  function stbi_uc (line 5423) | static stbi_uc *stbi__pic_load(stbi__context *s,int *px,int *py,int *com...
  function stbi__pic_test (line 5456) | static int stbi__pic_test(stbi__context *s)
  type stbi__gif_lzw (line 5468) | typedef struct
  type stbi__gif (line 5475) | typedef struct
  function stbi__gif_test_raw (line 5492) | static int stbi__gif_test_raw(stbi__context *s)
  function stbi__gif_test (line 5502) | static int stbi__gif_test(stbi__context *s)
  function stbi__gif_parse_colortable (line 5509) | static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256...
  function stbi__gif_header (line 5520) | static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, i...
  function stbi__gif_info_raw (line 5548) | static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp)
  function stbi__out_gif_code (line 5560) | static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code)
  function stbi_uc (line 5594) | static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g)
  function stbi__fill_gif_background (line 5674) | static void stbi__fill_gif_background(stbi__gif *g, int x0, int y0, int ...
  function stbi_uc (line 5690) | static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int ...
  function stbi_uc (line 5806) | static stbi_uc *stbi__gif_load(stbi__context *s, int *x, int *y, int *co...
  function stbi__gif_info (line 5826) | static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__hdr_test_core (line 5836) | static int stbi__hdr_test_core(stbi__context *s)
  function stbi__hdr_test (line 5846) | static int stbi__hdr_test(stbi__context* s)
  function stbi__hdr_convert (line 5876) | static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp)
  function stbi__hdr_info (line 6014) | static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__bmp_info (line 6055) | static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__psd_info (line 6085) | static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__pic_info (line 6118) | static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__pnm_test (line 6186) | static int      stbi__pnm_test(stbi__context *s)
  function stbi_uc (line 6198) | static stbi_uc *stbi__pnm_load(stbi__context *s, int *x, int *y, int *co...
  function stbi__pnm_isspace (line 6218) | static int      stbi__pnm_isspace(char c)
  function stbi__pnm_skip_whitespace (line 6223) | static void     stbi__pnm_skip_whitespace(stbi__context *s, char *c)
  function stbi__pnm_isdigit (line 6229) | static int      stbi__pnm_isdigit(char c)
  function stbi__pnm_getinteger (line 6234) | static int      stbi__pnm_getinteger(stbi__context *s, char *c)
  function stbi__pnm_info (line 6246) | static int      stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp)
  function stbi__info_main (line 6281) | static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp)
  function STBIDEF (line 6324) | STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp)
  function STBIDEF (line 6334) | STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp)
  function STBIDEF (line 6346) | STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x...
  function STBIDEF (line 6353) | STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *u...

FILE: nuklear.h
  type NK_INT8 (line 428) | typedef NK_INT8 nk_char;
  type NK_UINT8 (line 429) | typedef NK_UINT8 nk_uchar;
  type NK_UINT8 (line 430) | typedef NK_UINT8 nk_byte;
  type NK_INT16 (line 431) | typedef NK_INT16 nk_short;
  type NK_UINT16 (line 432) | typedef NK_UINT16 nk_ushort;
  type NK_INT32 (line 433) | typedef NK_INT32 nk_int;
  type NK_UINT32 (line 434) | typedef NK_UINT32 nk_uint;
  type NK_SIZE_TYPE (line 435) | typedef NK_SIZE_TYPE nk_size;
  type NK_POINTER_TYPE (line 436) | typedef NK_POINTER_TYPE nk_ptr;
  type NK_BOOL (line 437) | typedef NK_BOOL nk_bool;
  type nk_uint (line 439) | typedef nk_uint nk_hash;
  type nk_uint (line 440) | typedef nk_uint nk_flags;
  type nk_uint (line 441) | typedef nk_uint nk_rune;
  type nk_buffer (line 462) | struct nk_buffer
  type nk_allocator (line 463) | struct nk_allocator
  type nk_command_buffer (line 464) | struct nk_command_buffer
  type nk_draw_command (line 465) | struct nk_draw_command
  type nk_convert_config (line 466) | struct nk_convert_config
  type nk_style_item (line 467) | struct nk_style_item
  type nk_text_edit (line 468) | struct nk_text_edit
  type nk_draw_list (line 469) | struct nk_draw_list
  type nk_user_font (line 470) | struct nk_user_font
  type nk_panel (line 471) | struct nk_panel
  type nk_context (line 472) | struct nk_context
  type nk_draw_vertex_layout_element (line 473) | struct nk_draw_vertex_layout_element
  type nk_style_button (line 474) | struct nk_style_button
  type nk_style_toggle (line 475) | struct nk_style_toggle
  type nk_style_selectable (line 476) | struct nk_style_selectable
  type nk_style_slide (line 477) | struct nk_style_slide
  type nk_style_progress (line 478) | struct nk_style_progress
  type nk_style_scrollbar (line 479) | struct nk_style_scrollbar
  type nk_style_edit (line 480) | struct nk_style_edit
  type nk_style_property (line 481) | struct nk_style_property
  type nk_style_chart (line 482) | struct nk_style_chart
  type nk_style_combo (line 483) | struct nk_style_combo
  type nk_style_tab (line 484) | struct nk_style_tab
  type nk_style_window_header (line 485) | struct nk_style_window_header
  type nk_style_window (line 486) | struct nk_style_window
  type nk_color (line 489) | struct nk_color {nk_byte r,g,b,a;}
  type nk_colorf (line 490) | struct nk_colorf {float r,g,b,a;}
  type nk_vec2 (line 491) | struct nk_vec2 {float x,y;}
  type nk_vec2i (line 492) | struct nk_vec2i {short x, y;}
  type nk_rect (line 493) | struct nk_rect {float x,y,w,h;}
  type nk_recti (line 494) | struct nk_recti {short x,y,w,h;}
  type nk_handle (line 496) | typedef union {void *ptr; int id;} nk_handle;
  type nk_image (line 497) | struct nk_image {nk_handle handle; nk_ushort w, h; nk_ushort region[4];}
  type nk_nine_slice (line 498) | struct nk_nine_slice {struct nk_image img; nk_ushort l, t, r, b;}
  type nk_cursor (line 499) | struct nk_cursor {struct nk_image img; struct nk_vec2 size, offset;}
  type nk_scroll (line 500) | struct nk_scroll {nk_uint x, y;}
  type nk_heading (line 506) | enum nk_heading         {NK_UP, NK_RIGHT, NK_DOWN, NK_LEFT}
  type nk_button_behavior (line 507) | enum nk_button_behavior {NK_BUTTON_DEFAULT, NK_BUTTON_REPEATER}
  type nk_modify (line 508) | enum nk_modify          {NK_FIXED = nk_false, NK_MODIFIABLE = nk_true}
  type nk_orientation (line 509) | enum nk_orientation     {NK_VERTICAL, NK_HORIZONTAL}
  type nk_collapse_states (line 510) | enum nk_collapse_states {NK_MINIMIZED = nk_false, NK_MAXIMIZED = nk_true}
  type nk_show_states (line 511) | enum nk_show_states     {NK_HIDDEN = nk_false, NK_SHOWN = nk_true}
  type nk_chart_type (line 512) | enum nk_chart_type      {NK_CHART_LINES, NK_CHART_COLUMN, NK_CHART_MAX}
  type nk_chart_event (line 513) | enum nk_chart_event     {NK_CHART_HOVERING = 0x01, NK_CHART_CLICKED = 0x02}
  type nk_color_format (line 514) | enum nk_color_format    {NK_RGB, NK_RGBA}
  type nk_popup_type (line 515) | enum nk_popup_type      {NK_POPUP_STATIC, NK_POPUP_DYNAMIC}
  type nk_layout_format (line 516) | enum nk_layout_format   {NK_DYNAMIC, NK_STATIC}
  type nk_tree_type (line 517) | enum nk_tree_type       {NK_TREE_NODE, NK_TREE_TAB}
  type nk_tooltip_pos (line 519) | enum nk_tooltip_pos {
  type nk_bool (line 535) | typedef nk_bool(*nk_plugin_filter)(const struct nk_text_edit*, nk_rune u...
  type nk_text_edit (line 536) | struct nk_text_edit
  type nk_allocator (line 539) | struct nk_allocator {
  type nk_symbol_type (line 544) | enum nk_symbol_type {
  type nk_context (line 622) | struct nk_context
  type nk_user_font (line 622) | struct nk_user_font
  type nk_context (line 648) | struct nk_context
  type nk_user_font (line 648) | struct nk_user_font
  type nk_context (line 668) | struct nk_context
  type nk_allocator (line 668) | struct nk_allocator
  type nk_user_font (line 668) | struct nk_user_font
  type nk_context (line 688) | struct nk_context
  type nk_buffer (line 688) | struct nk_buffer
  type nk_buffer (line 688) | struct nk_buffer
  type nk_user_font (line 688) | struct nk_user_font
  type nk_context (line 703) | struct nk_context
  type nk_context (line 715) | struct nk_context
  type nk_context (line 729) | struct nk_context
  type nk_keys (line 800) | enum nk_keys {
  type nk_buttons (line 835) | enum nk_buttons {
  type nk_context (line 856) | struct nk_context
  type nk_context (line 870) | struct nk_context
  type nk_context (line 884) | struct nk_context
  type nk_keys (line 884) | enum nk_keys
  type nk_context (line 900) | struct nk_context
  type nk_buttons (line 900) | enum nk_buttons
  type nk_context (line 916) | struct nk_context
  type nk_vec2 (line 916) | struct nk_vec2
  type nk_context (line 935) | struct nk_context
  type nk_context (line 951) | struct nk_context
  type nk_context (line 968) | struct nk_context
  type nk_context (line 981) | struct nk_context
  type nk_anti_aliasing (line 1214) | enum nk_anti_aliasing {NK_ANTI_ALIASING_OFF, NK_ANTI_ALIASING_ON}
  type nk_convert_result (line 1215) | enum nk_convert_result {
  type nk_draw_null_texture (line 1222) | struct nk_draw_null_texture {
  type nk_convert_config (line 1226) | struct nk_convert_config {
  type nk_context (line 1252) | struct nk_context
  type nk_context (line 1267) | struct nk_context
  type nk_command (line 1267) | struct nk_command
  type nk_context (line 1312) | struct nk_context
  type nk_buffer (line 1312) | struct nk_buffer
  type nk_buffer (line 1312) | struct nk_buffer
  type nk_buffer (line 1312) | struct nk_buffer
  type nk_convert_config (line 1312) | struct nk_convert_config
  type nk_context (line 1327) | struct nk_context
  type nk_buffer (line 1327) | struct nk_buffer
  type nk_context (line 1346) | struct nk_context
  type nk_buffer (line 1346) | struct nk_buffer
  type nk_draw_command (line 1365) | struct nk_draw_command
  type nk_buffer (line 1365) | struct nk_buffer
  type nk_context (line 1365) | struct nk_context
  type nk_panel_flags (line 1538) | enum nk_panel_flags {
  type nk_context (line 1572) | struct nk_context
  type nk_rect (line 1572) | struct nk_rect
  type nk_context (line 1595) | struct nk_context
  type nk_rect (line 1595) | struct nk_rect
  type nk_context (line 1611) | struct nk_context
  type nk_context (line 1629) | struct nk_context
  type nk_context (line 1648) | struct nk_context
  type nk_context (line 1667) | struct nk_context
  type nk_context (line 1686) | struct nk_context
  type nk_context (line 1704) | struct nk_context
  type nk_context (line 1723) | struct nk_context
  type nk_context (line 1744) | struct nk_context
  type nk_context (line 1766) | struct nk_context
  type nk_context (line 1788) | struct nk_context
  type nk_context (line 1810) | struct nk_context
  type nk_context (line 1831) | struct nk_context
  type nk_context (line 1852) | struct nk_context
  type nk_context (line 1871) | struct nk_context
  type nk_context (line 1889) | struct nk_context
  type nk_context (line 1907) | struct nk_context
  type nk_context (line 1925) | struct nk_context
  type nk_context (line 1942) | struct nk_context
  type nk_context (line 1959) | struct nk_context
  type nk_context (line 1975) | struct nk_context
  type nk_context (line 1990) | struct nk_context
  type nk_context (line 2008) | struct nk_context
  type nk_context (line 2024) | struct nk_context
  type nk_rect (line 2024) | struct nk_rect
  type nk_context (line 2040) | struct nk_context
  type nk_vec2 (line 2040) | struct nk_vec2
  type nk_context (line 2056) | struct nk_context
  type nk_vec2 (line 2056) | struct nk_vec2
  type nk_context (line 2071) | struct nk_context
  type nk_context (line 2090) | struct nk_context
  type nk_context (line 2105) | struct nk_context
  type nk_context (line 2121) | struct nk_context
  type nk_collapse_states (line 2121) | enum nk_collapse_states
  type nk_context (line 2138) | struct nk_context
  type nk_collapse_states (line 2138) | enum nk_collapse_states
  type nk_context (line 2153) | struct nk_context
  type nk_show_states (line 2153) | enum nk_show_states
  type nk_context (line 2170) | struct nk_context
  type nk_show_states (line 2170) | enum nk_show_states
  type nk_context (line 2185) | struct nk_context
  type nk_color (line 2185) | struct nk_color
  type nk_widget_align (line 2459) | enum nk_widget_align {
  type nk_widget_alignment (line 2467) | enum nk_widget_alignment {
  type nk_context (line 2486) | struct nk_context
  type nk_context (line 2496) | struct nk_context
  type nk_context (line 2510) | struct nk_context
  type nk_context (line 2525) | struct nk_context
  type nk_context (line 2541) | struct nk_context
  type nk_context (line 2558) | struct nk_context
  type nk_context (line 2573) | struct nk_context
  type nk_layout_format (line 2573) | enum nk_layout_format
  type nk_context (line 2586) | struct nk_context
  type nk_context (line 2598) | struct nk_context
  type nk_context (line 2613) | struct nk_context
  type nk_layout_format (line 2613) | enum nk_layout_format
  type nk_context (line 2627) | struct nk_context
  type nk_context (line 2641) | struct nk_context
  type nk_context (line 2655) | struct nk_context
  type nk_context (line 2669) | struct nk_context
  type nk_context (line 2682) | struct nk_context
  type nk_context (line 2698) | struct nk_context
  type nk_layout_format (line 2698) | enum nk_layout_format
  type nk_context (line 2712) | struct nk_context
  type nk_rect (line 2712) | struct nk_rect
  type nk_context (line 2725) | struct nk_context
  type nk_context (line 2740) | struct nk_context
  type nk_context (line 2756) | struct nk_context
  type nk_vec2 (line 2756) | struct nk_vec2
  type nk_context (line 2772) | struct nk_context
  type nk_vec2 (line 2772) | struct nk_vec2
  type nk_context (line 2788) | struct nk_context
  type nk_rect (line 2788) | struct nk_rect
  type nk_context (line 2804) | struct nk_context
  type nk_rect (line 2804) | struct nk_rect
  type nk_context (line 2818) | struct nk_context
  type nk_context (line 2925) | struct nk_context
  type nk_context (line 2940) | struct nk_context
  type nk_context (line 2953) | struct nk_context
  type nk_context (line 2973) | struct nk_context
  type nk_context (line 2992) | struct nk_context
  type nk_scroll (line 2992) | struct nk_scroll
  type nk_context (line 3005) | struct nk_context
  type nk_context (line 3021) | struct nk_context
  type nk_context (line 3037) | struct nk_context
  type nk_context (line 3173) | struct nk_context
  type nk_tree_type (line 3173) | enum nk_tree_type
  type nk_collapse_states (line 3173) | enum nk_collapse_states
  type nk_context (line 3242) | struct nk_context
  type nk_tree_type (line 3242) | enum nk_tree_type
  type nk_image (line 3242) | struct nk_image
  type nk_collapse_states (line 3242) | enum nk_collapse_states
  type nk_context (line 3255) | struct nk_context
  type nk_context (line 3273) | struct nk_context
  type nk_tree_type (line 3273) | enum nk_tree_type
  type nk_collapse_states (line 3273) | enum nk_collapse_states
  type nk_context (line 3292) | struct nk_context
  type nk_tree_type (line 3292) | enum nk_tree_type
  type nk_image (line 3292) | struct nk_image
  type nk_collapse_states (line 3292) | enum nk_collapse_states
  type nk_context (line 3305) | struct nk_context
  type nk_context (line 3309) | struct nk_context
  type nk_tree_type (line 3309) | enum nk_tree_type
  type nk_collapse_states (line 3309) | enum nk_collapse_states
  type nk_context (line 3310) | struct nk_context
  type nk_tree_type (line 3310) | enum nk_tree_type
  type nk_image (line 3310) | struct nk_image
  type nk_collapse_states (line 3310) | enum nk_collapse_states
  type nk_context (line 3311) | struct nk_context
  type nk_list_view (line 3318) | struct nk_list_view {
  type nk_context (line 3327) | struct nk_context
  type nk_list_view (line 3327) | struct nk_list_view
  type nk_list_view (line 3328) | struct nk_list_view
  type nk_widget_layout_states (line 3334) | enum nk_widget_layout_states {
  type nk_widget_states (line 3340) | enum nk_widget_states {
  type nk_rect (line 3350) | struct nk_rect
  type nk_context (line 3350) | struct nk_context
  type nk_rect (line 3351) | struct nk_rect
  type nk_context (line 3351) | struct nk_context
  type nk_vec2 (line 3351) | struct nk_vec2
  type nk_context (line 3352) | struct nk_context
  type nk_context (line 3353) | struct nk_context
  type nk_context (line 3354) | struct nk_context
  type nk_context (line 3355) | struct nk_context
  type nk_context (line 3356) | struct nk_context
  type nk_context (line 3357) | struct nk_context
  type nk_context (line 3358) | struct nk_context
  type nk_buttons (line 3358) | enum nk_buttons
  type nk_context (line 3359) | struct nk_context
  type nk_buttons (line 3359) | enum nk_buttons
  type nk_context (line 3360) | struct nk_context
  type nk_context (line 3361) | struct nk_context
  type nk_context (line 3362) | struct nk_context
  type nk_text_align (line 3368) | enum nk_text_align {
  type nk_text_alignment (line 3376) | enum nk_text_alignment {
  type nk_context (line 3381) | struct nk_context
  type nk_context (line 3382) | struct nk_context
  type nk_color (line 3382) | struct nk_color
  type nk_context (line 3383) | struct nk_context
  type nk_context (line 3384) | struct nk_context
  type nk_color (line 3384) | struct nk_color
  type nk_context (line 3385) | struct nk_context
  type nk_context (line 3386) | struct nk_context
  type nk_color (line 3386) | struct nk_color
  type nk_context (line 3387) | struct nk_context
  type nk_context (line 3388) | struct nk_context
  type nk_color (line 3388) | struct nk_color
  type nk_context (line 3389) | struct nk_context
  type nk_image (line 3389) | struct nk_image
  type nk_context (line 3390) | struct nk_context
  type nk_image (line 3390) | struct nk_image
  type nk_color (line 3390) | struct nk_color
  type nk_context (line 3392) | struct nk_context
  type nk_context (line 3393) | struct nk_context
  type nk_color (line 3393) | struct nk_color
  type nk_context (line 3394) | struct nk_context
  type nk_context (line 3395) | struct nk_context
  type nk_color (line 3395) | struct nk_color
  type nk_context (line 3396) | struct nk_context
  type nk_context (line 3397) | struct nk_context
  type nk_color (line 3397) | struct nk_color
  type nk_context (line 3398) | struct nk_context
  type nk_context (line 3399) | struct nk_context
  type nk_color (line 3399) | struct nk_color
  type nk_context (line 3400) | struct nk_context
  type nk_context (line 3401) | struct nk_context
  type nk_context (line 3402) | struct nk_context
  type nk_context (line 3403) | struct nk_context
  type nk_context (line 3404) | struct nk_context
  type nk_color (line 3404) | struct nk_color
  type nk_context (line 3405) | struct nk_context
  type nk_color (line 3405) | struct nk_color
  type nk_context (line 3406) | struct nk_context
  type nk_color (line 3406) | struct nk_color
  type nk_context (line 3413) | struct nk_context
  type nk_context (line 3414) | struct nk_context
  type nk_context (line 3415) | struct nk_context
  type nk_color (line 3415) | struct nk_color
  type nk_context (line 3416) | struct nk_context
  type nk_symbol_type (line 3416) | enum nk_symbol_type
  type nk_context (line 3417) | struct nk_context
  type nk_image (line 3417) | struct nk_image
  type nk_context (line 3418) | struct nk_context
  type nk_symbol_type (line 3418) | enum nk_symbol_type
  type nk_context (line 3419) | struct nk_context
  type nk_symbol_type (line 3419) | enum nk_symbol_type
  type nk_context (line 3420) | struct nk_context
  type nk_image (line 3420) | struct nk_image
  type nk_context (line 3421) | struct nk_context
  type nk_image (line 3421) | struct nk_image
  type nk_context (line 3422) | struct nk_context
  type nk_style_button (line 3422) | struct nk_style_button
  type nk_context (line 3423) | struct nk_context
  type nk_style_button (line 3423) | struct nk_style_button
  type nk_context (line 3424) | struct nk_context
  type nk_style_button (line 3424) | struct nk_style_button
  type nk_symbol_type (line 3424) | enum nk_symbol_type
  type nk_context (line 3425) | struct nk_context
  type nk_style_button (line 3425) | struct nk_style_button
  type nk_image (line 3425) | struct nk_image
  type nk_context (line 3426) | struct nk_context
  type nk_style_button (line 3426) | struct nk_style_button
  type nk_symbol_type (line 3426) | enum nk_symbol_type
  type nk_context (line 3427) | struct nk_context
  type nk_style_button (line 3427) | struct nk_style_button
  type nk_symbol_type (line 3427) | enum nk_symbol_type
  type nk_context (line 3428) | struct nk_context
  type nk_style_button (line 3428) | struct nk_style_button
  type nk_image (line 3428) | struct nk_image
  type nk_context (line 3429) | struct nk_context
  type nk_style_button (line 3429) | struct nk_style_button
  type nk_image (line 3429) | struct nk_image
  type nk_context (line 3430) | struct nk_context
  type nk_button_behavior (line 3430) | enum nk_button_behavior
  type nk_context (line 3431) | struct nk_context
  type nk_button_behavior (line 3431) | enum nk_button_behavior
  type nk_context (line 3432) | struct nk_context
  type nk_context (line 3438) | struct nk_context
  type nk_context (line 3439) | struct nk_context
  type nk_context (line 3440) | struct nk_context
  type nk_context (line 3441) | struct nk_context
  type nk_context (line 3442) | struct nk_context
  type nk_context (line 3443) | struct nk_context
  type nk_context (line 3444) | struct nk_context
  type nk_context (line 3445) | struct nk_context
  type nk_context (line 3446) | struct nk_context
  type nk_context (line 3447) | struct nk_context
  type nk_context (line 3448) | struct nk_context
  type nk_context (line 3454) | struct nk_context
  type nk_context (line 3455) | struct nk_context
  type nk_context (line 3456) | struct nk_context
  type nk_context (line 3457) | struct nk_context
  type nk_context (line 3458) | struct nk_context
  type nk_context (line 3459) | struct nk_context
  type nk_context (line 3460) | struct nk_context
  type nk_context (line 3461) | struct nk_context
  type nk_context (line 3467) | struct nk_context
  type nk_context (line 3468) | struct nk_context
  type nk_context (line 3469) | struct nk_context
  type nk_image (line 3469) | struct nk_image
  type nk_context (line 3470) | struct nk_context
  type nk_image (line 3470) | struct nk_image
  type nk_context (line 3471) | struct nk_context
  type nk_symbol_type (line 3471) | enum nk_symbol_type
  type nk_context (line 3472) | struct nk_context
  type nk_symbol_type (line 3472) | enum nk_symbol_type
  type nk_context (line 3474) | struct nk_context
  type nk_context (line 3475) | struct nk_context
  type nk_context (line 3476) | struct nk_context
  type nk_image (line 3476) | struct nk_image
  type nk_context (line 3477) | struct nk_context
  type nk_image (line 3477) | struct nk_image
  type nk_context (line 3478) | struct nk_context
  type nk_symbol_type (line 3478) | enum nk_symbol_type
  type nk_context (line 3479) | struct nk_context
  type nk_symbol_type (line 3479) | enum nk_symbol_type
  type nk_context (line 3486) | struct nk_context
  type nk_context (line 3487) | struct nk_context
  type nk_context (line 3488) | struct nk_context
  type nk_context (line 3489) | struct nk_context
  type nk_context (line 3496) | struct nk_context
  type nk_heading (line 3496) | enum nk_heading
  type nk_context (line 3497) | struct nk_context
  type nk_heading (line 3497) | enum nk_heading
  type nk_context (line 3504) | struct nk_context
  type nk_context (line 3505) | struct nk_context
  type nk_context (line 3512) | struct nk_context
  type nk_colorf (line 3512) | struct nk_colorf
  type nk_color_format (line 3512) | enum nk_color_format
  type nk_context (line 3513) | struct nk_context
  type nk_colorf (line 3513) | struct nk_colorf
  type nk_color_format (line 3513) | enum nk_color_format
  type nk_context (line 3613) | struct nk_context
  type nk_context (line 3638) | struct nk_context
  type nk_context (line 3663) | struct nk_context
  type nk_context (line 3686) | struct nk_context
  type nk_context (line 3709) | struct nk_context
  type nk_context (line 3732) | struct nk_context
  type nk_edit_flags (line 3739) | enum nk_edit_flags {
  type nk_edit_types (line 3754) | enum nk_edit_types {
  type nk_edit_events (line 3760) | enum nk_edit_events {
  type nk_context (line 3767) | struct nk_context
  type nk_context (line 3768) | struct nk_context
  type nk_context (line 3769) | struct nk_context
  type nk_text_edit (line 3769) | struct nk_text_edit
  type nk_context (line 3770) | struct nk_context
  type nk_context (line 3771) | struct nk_context
  type nk_context (line 3777) | struct nk_context
  type nk_chart_type (line 3777) | enum nk_chart_type
  type nk_context (line 3778) | struct nk_context
  type nk_chart_type (line 3778) | enum nk_chart_type
  type nk_color (line 3778) | struct nk_color
  type nk_color (line 3778) | struct nk_color
  type nk_context (line 3779) | struct nk_context
  type nk_chart_type (line 3779) | enum nk_chart_type
  type nk_context (line 3780) | struct nk_context
  type nk_chart_type (line 3780) | enum nk_chart_type
  type nk_color (line 3780) | struct nk_color
  type nk_color (line 3780) | struct nk_color
  type nk_context (line 3781) | struct nk_context
  type nk_context (line 3782) | struct nk_context
  type nk_context (line 3783) | struct nk_context
  type nk_context (line 3784) | struct nk_context
  type nk_chart_type (line 3784) | enum nk_chart_type
  type nk_context (line 3785) | struct nk_context
  type nk_chart_type (line 3785) | enum nk_chart_type
  type nk_context (line 3791) | struct nk_context
  type nk_popup_type (line 3791) | enum nk_popup_type
  type nk_rect (line 3791) | struct nk_rect
  type nk_context (line 3792) | struct nk_context
  type nk_context (line 3793) | struct nk_context
  type nk_context (line 3794) | struct nk_context
  type nk_context (line 3795) | struct nk_context
  type nk_context (line 3801) | struct nk_context
  type nk_vec2 (line 3801) | struct nk_vec2
  type nk_context (line 3802) | struct nk_context
  type nk_vec2 (line 3802) | struct nk_vec2
  type nk_context (line 3803) | struct nk_context
  type nk_vec2 (line 3803) | struct nk_vec2
  type nk_context (line 3804) | struct nk_context
  type nk_vec2 (line 3804) | struct nk_vec2
  type nk_context (line 3805) | struct nk_context
  type nk_vec2 (line 3805) | struct nk_vec2
  type nk_context (line 3806) | struct nk_context
  type nk_vec2 (line 3806) | struct nk_vec2
  type nk_context (line 3807) | struct nk_context
  type nk_vec2 (line 3807) | struct nk_vec2
  type nk_context (line 3808) | struct nk_context
  type nk_vec2 (line 3808) | struct nk_vec2
  type nk_context (line 3814) | struct nk_context
  type nk_vec2 (line 3814) | struct nk_vec2
  type nk_context (line 3815) | struct nk_context
  type nk_vec2 (line 3815) | struct nk_vec2
  type nk_context (line 3816) | struct nk_context
  type nk_color (line 3816) | struct nk_color
  type nk_vec2 (line 3816) | struct nk_vec2
  type nk_context (line 3817) | struct nk_context
  type nk_symbol_type (line 3817) | enum nk_symbol_type
  type nk_vec2 (line 3817) | struct nk_vec2
  type nk_context (line 3818) | struct nk_context
  type nk_symbol_type (line 3818) | enum nk_symbol_type
  type nk_vec2 (line 3818) | struct nk_vec2
  type nk_context (line 3819) | struct nk_context
  type nk_symbol_type (line 3819) | enum nk_symbol_type
  type nk_vec2 (line 3819) | struct nk_vec2
  type nk_context (line 3820) | struct nk_context
  type nk_image (line 3820) | struct nk_image
  type nk_vec2 (line 3820) | struct nk_vec2
  type nk_context (line 3821) | struct nk_context
  type nk_image (line 3821) | struct nk_image
  type nk_vec2 (line 3821) | struct nk_vec2
  type nk_context (line 3822) | struct nk_context
  type nk_image (line 3822) | struct nk_image
  type nk_vec2 (line 3822) | struct nk_vec2
  type nk_context (line 3823) | struct nk_context
  type nk_context (line 3824) | struct nk_context
  type nk_context (line 3825) | struct nk_context
  type nk_image (line 3825) | struct nk_image
  type nk_context (line 3826) | struct nk_context
  type nk_image (line 3826) | struct nk_image
  type nk_context (line 3827) | struct nk_context
  type nk_symbol_type (line 3827) | enum nk_symbol_type
  type nk_context (line 3828) | struct nk_context
  type nk_symbol_type (line 3828) | enum nk_symbol_type
  type nk_context (line 3829) | struct nk_context
  type nk_context (line 3830) | struct nk_context
  type nk_context (line 3836) | struct nk_context
  type nk_vec2 (line 3836) | struct nk_vec2
  type nk_rect (line 3836) | struct nk_rect
  type nk_context (line 3837) | struct nk_context
  type nk_context (line 3838) | struct nk_context
  type nk_context (line 3839) | struct nk_context
  type nk_image (line 3839) | struct nk_image
  type nk_context (line 3840) | struct nk_context
  type nk_image (line 3840) | struct nk_image
  type nk_context (line 3841) | struct nk_context
  type nk_symbol_type (line 3841) | enum nk_symbol_type
  type nk_context (line 3842) | struct nk_context
  type nk_symbol_type (line 3842) | enum nk_symbol_type
  type nk_context (line 3843) | struct nk_context
  type nk_context (line 3844) | struct nk_context
  type nk_context (line 3850) | struct nk_context
  type nk_context (line 3851) | struct nk_context
  type nk_tooltip_pos (line 3851) | enum nk_tooltip_pos
  type nk_vec2 (line 3851) | struct nk_vec2
  type nk_context (line 3853) | struct nk_context
  type nk_context (line 3854) | struct nk_context
  type nk_context (line 3855) | struct nk_context
  type nk_tooltip_pos (line 3855) | enum nk_tooltip_pos
  type nk_vec2 (line 3855) | struct nk_vec2
  type nk_context (line 3856) | struct nk_context
  type nk_tooltip_pos (line 3856) | enum nk_tooltip_pos
  type nk_vec2 (line 3856) | struct nk_vec2
  type nk_context (line 3858) | struct nk_context
  type nk_context (line 3859) | struct nk_context
  type nk_tooltip_pos (line 3859) | enum nk_tooltip_pos
  type nk_vec2 (line 3859) | struct nk_vec2
  type nk_context (line 3860) | struct nk_context
  type nk_context (line 3866) | struct nk_context
  type nk_context (line 3867) | struct nk_context
  type nk_context (line 3868) | struct nk_context
  type nk_vec2 (line 3868) | struct nk_vec2
  type nk_context (line 3869) | struct nk_context
  type nk_vec2 (line 3869) | struct nk_vec2
  type nk_context (line 3870) | struct nk_context
  type nk_image (line 3870) | struct nk_image
  type nk_vec2 (line 3870) | struct nk_vec2
  type nk_context (line 3871) | struct nk_context
  type nk_image (line 3871) | struct nk_image
  type nk_vec2 (line 3871) | struct nk_vec2
  type nk_context (line 3872) | struct nk_context
  type nk_image (line 3872) | struct nk_image
  type nk_vec2 (line 3872) | struct nk_vec2
  type nk_context (line 3873) | struct nk_context
  type nk_symbol_type (line 3873) | enum nk_symbol_type
  type nk_vec2 (line 3873) | struct nk_vec2
  type nk_context (line 3874) | struct nk_context
  type nk_symbol_type (line 3874) | enum nk_symbol_type
  type nk_vec2 (line 3874) | struct nk_vec2
  type nk_context (line 3875) | struct nk_context
  type nk_symbol_type (line 3875) | enum nk_symbol_type
  type nk_vec2 (line 3875) | struct nk_vec2
  type nk_context (line 3876) | struct nk_context
  type nk_context (line 3877) | struct nk_context
  type nk_context (line 3878) | struct nk_context
  type nk_image (line 3878) | struct nk_image
  type nk_context (line 3879) | struct nk_context
  type nk_image (line 3879) | struct nk_image
  type nk_context (line 3880) | struct nk_context
  type nk_symbol_type (line 3880) | enum nk_symbol_type
  type nk_context (line 3881) | struct nk_context
  type nk_symbol_type (line 3881) | enum nk_symbol_type
  type nk_context (line 3882) | struct nk_context
  type nk_context (line 3883) | struct nk_context
  type nk_style_colors (line 3892) | enum nk_style_colors {
  type nk_style_cursor (line 3927) | enum nk_style_cursor {
  type nk_context (line 3937) | struct nk_context
  type nk_context (line 3938) | struct nk_context
  type nk_color (line 3938) | struct nk_color
  type nk_context (line 3939) | struct nk_context
  type nk_style_cursor (line 3939) | enum nk_style_cursor
  type nk_cursor (line 3939) | struct nk_cursor
  type nk_context (line 3940) | struct nk_context
  type nk_cursor (line 3940) | struct nk_cursor
  type nk_style_colors (line 3941) | enum nk_style_colors
  type nk_context (line 3942) | struct nk_context
  type nk_user_font (line 3942) | struct nk_user_font
  type nk_context (line 3943) | struct nk_context
  type nk_style_cursor (line 3943) | enum nk_style_cursor
  type nk_context (line 3944) | struct nk_context
  type nk_context (line 3945) | struct nk_context
  type nk_context (line 3947) | struct nk_context
  type nk_user_font (line 3947) | struct nk_user_font
  type nk_context (line 3948) | struct nk_context
  type nk_context (line 3949) | struct nk_context
  type nk_vec2 (line 3949) | struct nk_vec2
  type nk_vec2 (line 3949) | struct nk_vec2
  type nk_context (line 3950) | struct nk_context
  type nk_style_item (line 3950) | struct nk_style_item
  type nk_style_item (line 3950) | struct nk_style_item
  type nk_context (line 3951) | struct nk_context
  type nk_context (line 3952) | struct nk_context
  type nk_color (line 3952) | struct nk_color
  type nk_color (line 3952) | struct nk_color
  type nk_context (line 3954) | struct nk_context
  type nk_context (line 3955) | struct nk_context
  type nk_context (line 3956) | struct nk_context
  type nk_context (line 3957) | struct nk_context
  type nk_context (line 3958) | struct nk_context
  type nk_context (line 3959) | struct nk_context
  type nk_colorf (line 3970) | struct nk_colorf
  type nk_color (line 3972) | struct nk_color
  type nk_colorf (line 3980) | struct nk_colorf
  type nk_colorf (line 3985) | struct nk_colorf
  type nk_colorf (line 3986) | struct nk_colorf
  type nk_color (line 4001) | struct nk_color
  type nk_color (line 4002) | struct nk_color
  type nk_color (line 4003) | struct nk_color
  type nk_color (line 4004) | struct nk_color
  type nk_color (line 4005) | struct nk_color
  type nk_color (line 4007) | struct nk_color
  type nk_color (line 4008) | struct nk_color
  type nk_color (line 4009) | struct nk_color
  type nk_color (line 4011) | struct nk_color
  type nk_color (line 4012) | struct nk_color
  type nk_color (line 4013) | struct nk_color
  type nk_color (line 4014) | struct nk_color
  type nk_color (line 4015) | struct nk_color
  type nk_color (line 4016) | struct nk_color
  type nk_color (line 4018) | struct nk_color
  type nk_color (line 4019) | struct nk_color
  type nk_color (line 4020) | struct nk_color
  type nk_color (line 4021) | struct nk_color
  type nk_color (line 4022) | struct nk_color
  type nk_color (line 4023) | struct nk_color
  type nk_image (line 4034) | struct nk_image
  type nk_rect (line 4035) | struct nk_rect
  type nk_rect (line 4036) | struct nk_rect
  type nk_rect (line 4037) | struct nk_rect
  type nk_nine_slice (line 4046) | struct nk_nine_slice
  type nk_rect (line 4047) | struct nk_rect
  type nk_rect (line 4048) | struct nk_rect
  type nk_rect (line 4049) | struct nk_rect
  type nk_vec2 (line 4056) | struct nk_vec2
  type nk_rect (line 4056) | struct nk_rect
  type nk_heading (line 4056) | enum nk_heading
  type nk_vec2 (line 4066) | struct nk_vec2
  type nk_vec2 (line 4066) | struct nk_vec2
  type nk_rect (line 4069) | struct nk_rect
  type nk_rect (line 4070) | struct nk_rect
  type nk_user_font_glyph (line 4255) | struct nk_user_font_glyph
  type nk_user_font_glyph (line 4258) | struct nk_user_font_glyph
  type nk_user_font_glyph (line 4262) | struct nk_user_font_glyph {
  type nk_user_font (line 4270) | struct nk_user_font {
  type nk_font_coord_type (line 4281) | enum nk_font_coord_type {
  type nk_font (line 4286) | struct nk_font
  type nk_baked_font (line 4287) | struct nk_baked_font {
  type nk_font_config (line 4296) | struct nk_font_config {
  type nk_font_glyph (line 4317) | struct nk_font_glyph {
  type nk_font (line 4324) | struct nk_font {
  type nk_font_atlas_format (line 4336) | enum nk_font_atlas_format {
  type nk_font_atlas (line 4341) | struct nk_font_atlas {
  type nk_font_atlas (line 4367) | struct nk_font_atlas
  type nk_font_atlas (line 4369) | struct nk_font_atlas
  type nk_allocator (line 4369) | struct nk_allocator
  type nk_font_atlas (line 4370) | struct nk_font_atlas
  type nk_allocator (line 4370) | struct nk_allocator
  type nk_allocator (line 4370) | struct nk_allocator
  type nk_font_atlas (line 4371) | struct nk_font_atlas
  type nk_font_atlas (line 4373) | struct nk_font_atlas
  type nk_font_config (line 4373) | struct nk_font_config
  type nk_font_atlas (line 4375) | struct nk_font_atlas
  type nk_font_config (line 4375) | struct nk_font_config
  type nk_font_atlas (line 4377) | struct nk_font_atlas
  type nk_font_config (line 4377) | struct nk_font_config
  type nk_font_atlas (line 4379) | struct nk_font_atlas
  type nk_font_config (line 4379) | struct nk_font_config
  type nk_font_atlas (line 4381) | struct nk_font_atlas
  type nk_font_config (line 4381) | struct nk_font_config
  type nk_font_atlas (line 4382) | struct nk_font_atlas
  type nk_font_config (line 4382) | struct nk_font_config
  type nk_font_atlas (line 4383) | struct nk_font_atlas
  type nk_font_atlas_format (line 4383) | enum nk_font_atlas_format
  type nk_font_atlas (line 4384) | struct nk_font_atlas
  type nk_draw_null_texture (line 4384) | struct nk_draw_null_texture
  type nk_font (line 4385) | struct nk_font
  type nk_font_atlas (line 4386) | struct nk_font_atlas
  type nk_font_atlas (line 4387) | struct nk_font_atlas
  type nk_memory_status (line 4427) | struct nk_memory_status {
  type nk_allocation_type (line 4436) | enum nk_allocation_type {
  type nk_buffer_allocation_type (line 4441) | enum nk_buffer_allocation_type {
  type nk_buffer_marker (line 4447) | struct nk_buffer_marker {
  type nk_memory (line 4452) | struct nk_memory {void *ptr;nk_size size;}
  type nk_buffer (line 4453) | struct nk_buffer {
  type nk_buffer (line 4466) | struct nk_buffer
  type nk_buffer (line 4468) | struct nk_buffer
  type nk_allocator (line 4468) | struct nk_allocator
  type nk_buffer (line 4469) | struct nk_buffer
  type nk_memory_status (line 4470) | struct nk_memory_status
  type nk_buffer (line 4470) | struct nk_buffer
  type nk_buffer (line 4471) | struct nk_buffer
  type nk_buffer_allocation_type (line 4471) | enum nk_buffer_allocation_type
  type nk_buffer (line 4472) | struct nk_buffer
  type nk_buffer_allocation_type (line 4472) | enum nk_buffer_allocation_type
  type nk_buffer (line 4473) | struct nk_buffer
  type nk_buffer_allocation_type (line 4473) | enum nk_buffer_allocation_type
  type nk_buffer (line 4474) | struct nk_buffer
  type nk_buffer (line 4475) | struct nk_buffer
  type nk_buffer (line 4476) | struct nk_buffer
  type nk_buffer (line 4477) | struct nk_buffer
  type nk_buffer (line 4478) | struct nk_buffer
  type nk_str (line 4490) | struct nk_str {
  type nk_str (line 4496) | struct nk_str
  type nk_str (line 4498) | struct nk_str
  type nk_allocator (line 4498) | struct nk_allocator
  type nk_str (line 4499) | struct nk_str
  type nk_str (line 4500) | struct nk_str
  type nk_str (line 4501) | struct nk_str
  type nk_str (line 4503) | struct nk_str
  type nk_str (line 4504) | struct nk_str
  type nk_str (line 4505) | struct nk_str
  type nk_str (line 4506) | struct nk_str
  type nk_str (line 4507) | struct nk_str
  type nk_str (line 4508) | struct nk_str
  type nk_str (line 4510) | struct nk_str
  type nk_str (line 4511) | struct nk_str
  type nk_str (line 4513) | struct nk_str
  type nk_str (line 4514) | struct nk_str
  type nk_str (line 4515) | struct nk_str
  type nk_str (line 4516) | struct nk_str
  type nk_str (line 4517) | struct nk_str
  type nk_str (line 4518) | struct nk_str
  type nk_str (line 4520) | struct nk_str
  type nk_str (line 4521) | struct nk_str
  type nk_str (line 4522) | struct nk_str
  type nk_str (line 4523) | struct nk_str
  type nk_str (line 4525) | struct nk_str
  type nk_str (line 4526) | struct nk_str
  type nk_str (line 4527) | struct nk_str
  type nk_str (line 4528) | struct nk_str
  type nk_str (line 4529) | struct nk_str
  type nk_str (line 4531) | struct nk_str
  type nk_str (line 4532) | struct nk_str
  type nk_str (line 4533) | struct nk_str
  type nk_str (line 4534) | struct nk_str
  type nk_text_edit (line 4575) | struct nk_text_edit
  type nk_clipboard (line 4576) | struct nk_clipboard {
  type nk_text_undo_record (line 4582) | struct nk_text_undo_record {
  type nk_text_undo_state (line 4589) | struct nk_text_undo_state {
  type nk_text_edit_type (line 4598) | enum nk_text_edit_type {
  type nk_text_edit_mode (line 4603) | enum nk_text_edit_mode {
  type nk_text_edit (line 4609) | struct nk_text_edit {
  type nk_text_edit (line 4630) | struct nk_text_edit
  type nk_text_edit (line 4631) | struct nk_text_edit
  type nk_text_edit (line 4632) | struct nk_text_edit
  type nk_text_edit (line 4633) | struct nk_text_edit
  type nk_text_edit (line 4634) | struct nk_text_edit
  type nk_text_edit (line 4635) | struct nk_text_edit
  type nk_text_edit (line 4636) | struct nk_text_edit
  type nk_text_edit (line 4640) | struct nk_text_edit
  type nk_text_edit (line 4642) | struct nk_text_edit
  type nk_allocator (line 4642) | struct nk_allocator
  type nk_text_edit (line 4643) | struct nk_text_edit
  type nk_text_edit (line 4644) | struct nk_text_edit
  type nk_text_edit (line 4645) | struct nk_text_edit
  type nk_text_edit (line 4646) | struct nk_text_edit
  type nk_text_edit (line 4647) | struct nk_text_edit
  type nk_text_edit (line 4648) | struct nk_text_edit
  type nk_text_edit (line 4649) | struct nk_text_edit
  type nk_text_edit (line 4650) | struct nk_text_edit
  type nk_text_edit (line 4651) | struct nk_text_edit
  type nk_text_edit (line 4652) | struct nk_text_edit
  type nk_command_type (line 4708) | enum nk_command_type {
  type nk_command (line 4731) | struct nk_command {
  type nk_command_scissor (line 4739) | struct nk_command_scissor {
  type nk_command_line (line 4745) | struct nk_command_line {
  type nk_command_curve (line 4753) | struct nk_command_curve {
  type nk_command_rect (line 4762) | struct nk_command_rect {
  type nk_command_rect_filled (line 4771) | struct nk_command_rect_filled {
  type nk_command_rect_multi_color (line 4779) | struct nk_command_rect_multi_color {
  type nk_command_triangle (line 4789) | struct nk_command_triangle {
  type nk_command_triangle_filled (line 4798) | struct nk_command_triangle_filled {
  type nk_command_circle (line 4806) | struct nk_command_circle {
  type nk_command_circle_filled (line 4814) | struct nk_command_circle_filled {
  type nk_command_arc (line 4821) | struct nk_command_arc {
  type nk_command_arc_filled (line 4830) | struct nk_command_arc_filled {
  type nk_command_polygon (line 4838) | struct nk_command_polygon {
  type nk_command_polygon_filled (line 4846) | struct nk_command_polygon_filled {
  type nk_command_polyline (line 4853) | struct nk_command_polyline {
  type nk_command_image (line 4861) | struct nk_command_image {
  type nk_command_custom (line 4871) | struct nk_command_custom {
  type nk_command_text (line 4879) | struct nk_command_text {
  type nk_command_clipping (line 4891) | enum nk_command_clipping {
  type nk_command_buffer (line 4896) | struct nk_command_buffer {
  type nk_command_buffer (line 4905) | struct nk_command_buffer
  type nk_color (line 4905) | struct nk_color
  type nk_command_buffer (line 4906) | struct nk_command_buffer
  type nk_color (line 4906) | struct nk_color
  type nk_command_buffer (line 4907) | struct nk_command_buffer
  type nk_rect (line 4907) | struct nk_rect
  type nk_color (line 4907) | struct nk_color
  type nk_command_buffer (line 4908) | struct nk_command_buffer
  type nk_rect (line 4908) | struct nk_rect
  type nk_color (line 4908) | struct nk_color
  type nk_command_buffer (line 4909) | struct nk_command_buffer
  type nk_color (line 4909) | struct nk_color
  type nk_command_buffer (line 4910) | struct nk_command_buffer
  type nk_color (line 4910) | struct nk_color
  type nk_command_buffer (line 4911) | struct nk_command_buffer
  type nk_color (line 4911) | struct nk_color
  type nk_command_buffer (line 4912) | struct nk_command_buffer
  type nk_color (line 4912) | struct nk_color
  type nk_command_buffer (line 4915) | struct nk_command_buffer
  type nk_rect (line 4915) | struct nk_rect
  type nk_color (line 4915) | struct nk_color
  type nk_command_buffer (line 4916) | struct nk_command_buffer
  type nk_rect (line 4916) | struct nk_rect
  type nk_color (line 4916) | struct nk_color
  type nk_color (line 4916) | struct nk_color
  type nk_color (line 4916) | struct nk_color
  type nk_color (line 4916) | struct nk_color
  type nk_command_buffer (line 4917) | struct nk_command_buffer
  type nk_rect (line 4917) | struct nk_rect
  type nk_color (line 4917) | struct nk_color
  type nk_command_buffer (line 4918) | struct nk_command_buffer
  type nk_color (line 4918) | struct nk_color
  type nk_command_buffer (line 4919) | struct nk_command_buffer
  type nk_color (line 4919) | struct nk_color
  type nk_command_buffer (line 4920) | struct nk_command_buffer
  type nk_color (line 4920) | struct nk_color
  type nk_command_buffer (line 4923) | struct nk_command_buffer
  type nk_rect (line 4923) | struct nk_rect
  type nk_image (line 4923) | struct nk_image
  type nk_color (line 4923) | struct nk_color
  type nk_command_buffer (line 4924) | struct nk_command_buffer
  type nk_rect (line 4924) | struct nk_rect
  type nk_nine_slice (line 4924) | struct nk_nine_slice
  type nk_color (line 4924) | struct nk_color
  type nk_command_buffer (line 4925) | struct nk_command_buffer
  type nk_rect (line 4925) | struct nk_rect
  type nk_user_font (line 4925) | struct nk_user_font
  type nk_color (line 4925) | struct nk_color
  type nk_color (line 4925) | struct nk_color
  type nk_command_buffer (line 4926) | struct nk_command_buffer
  type nk_rect (line 4926) | struct nk_rect
  type nk_command_buffer (line 4927) | struct nk_command_buffer
  type nk_rect (line 4927) | struct nk_rect
  type nk_mouse_button (line 4934) | struct nk_mouse_button {
  type nk_mouse (line 4939) | struct nk_mouse {
  type nk_key (line 4953) | struct nk_key {
  type nk_keyboard (line 4957) | struct nk_keyboard {
  type nk_input (line 4963) | struct nk_input {
  type nk_input (line 4968) | struct nk_input
  type nk_buttons (line 4968) | enum nk_buttons
  type nk_input (line 4969) | struct nk_input
  type nk_buttons (line 4969) | enum nk_buttons
  type nk_rect (line 4969) | struct nk_rect
  type nk_input (line 4970) | struct nk_input
  type nk_buttons (line 4970) | enum nk_buttons
  type nk_rect (line 4970) | struct nk_rect
  type nk_input (line 4971) | struct nk_input
  type nk_buttons (line 4971) | enum nk_buttons
  type nk_rect (line 4971) | struct nk_rect
  type nk_input (line 4972) | struct nk_input
  type nk_buttons (line 4972) | enum nk_buttons
  type nk_rect (line 4972) | struct nk_rect
  type nk_input (line 4973) | struct nk_input
  type nk_buttons (line 4973) | enum nk_buttons
  type nk_rect (line 4973) | struct nk_rect
  type nk_input (line 4974) | struct nk_input
  type nk_rect (line 4974) | struct nk_rect
  type nk_input (line 4975) | struct nk_input
  type nk_rect (line 4975) | struct nk_rect
  type nk_input (line 4976) | struct nk_input
  type nk_rect (line 4976) | struct nk_rect
  type nk_input (line 4977) | struct nk_input
  type nk_input (line 4978) | struct nk_input
  type nk_buttons (line 4978) | enum nk_buttons
  type nk_rect (line 4978) | struct nk_rect
  type nk_input (line 4979) | struct nk_input
  type nk_buttons (line 4979) | enum nk_buttons
  type nk_input (line 4980) | struct nk_input
  type nk_buttons (line 4980) | enum nk_buttons
  type nk_input (line 4981) | struct nk_input
  type nk_buttons (line 4981) | enum nk_buttons
  type nk_input (line 4982) | struct nk_input
  type nk_keys (line 4982) | enum nk_keys
  type nk_input (line 4983) | struct nk_input
  type nk_keys (line 4983) | enum nk_keys
  type nk_input (line 4984) | struct nk_input
  type nk_keys (line 4984) | enum nk_keys
  type nk_uint (line 5009) | typedef nk_uint nk_draw_index;
  type nk_ushort (line 5011) | typedef nk_ushort nk_draw_index;
  type nk_draw_list_stroke (line 5013) | enum nk_draw_list_stroke {
  type nk_draw_vertex_layout_attribute (line 5018) | enum nk_draw_vertex_layout_attribute {
  type nk_draw_vertex_layout_format (line 5025) | enum nk_draw_vertex_layout_format {
  type nk_draw_vertex_layout_element (line 5054) | struct nk_draw_vertex_layout_element {
  type nk_draw_command (line 5060) | struct nk_draw_command {
  type nk_draw_list (line 5069) | struct nk_draw_list {
  type nk_draw_list (line 5095) | struct nk_draw_list
  type nk_draw_list (line 5096) | struct nk_draw_list
  type nk_convert_config (line 5096) | struct nk_convert_config
  type nk_buffer (line 5096) | struct nk_buffer
  type nk_buffer (line 5096) | struct nk_buffer
  type nk_buffer (line 5096) | struct nk_buffer
  type nk_anti_aliasing (line 5096) | enum nk_anti_aliasing
  type nk_anti_aliasing (line 5096) | enum nk_anti_aliasing
  type nk_draw_list (line 5100) | struct nk_draw_list
  type nk_buffer (line 5100) | struct nk_buffer
  type nk_draw_command (line 5101) | struct nk_draw_command
  type nk_buffer (line 5101) | struct nk_buffer
  type nk_draw_list (line 5101) | struct nk_draw_list
  type nk_draw_list (line 5102) | struct nk_draw_list
  type nk_buffer (line 5102) | struct nk_buffer
  type nk_draw_list (line 5105) | struct nk_draw_list
  type nk_draw_list (line 5106) | struct nk_draw_list
  type nk_vec2 (line 5106) | struct nk_vec2
  type nk_draw_list (line 5107) | struct nk_draw_list
  type nk_vec2 (line 5107) | struct nk_vec2
  type nk_draw_list (line 5108) | struct nk_draw_list
  type nk_vec2 (line 5108) | struct nk_vec2
  type nk_draw_list (line 5109) | struct nk_draw_list
  type nk_vec2 (line 5109) | struct nk_vec2
  type nk_vec2 (line 5109) | struct nk_vec2
  type nk_draw_list (line 5110) | struct nk_draw_list
  type nk_vec2 (line 5110) | struct nk_vec2
  type nk_vec2 (line 5110) | struct nk_vec2
  type nk_vec2 (line 5110) | struct nk_vec2
  type nk_draw_list (line 5111) | struct nk_draw_list
  type nk_color (line 5111) | struct nk_color
  type nk_draw_list (line 5112) | struct nk_draw_list
  type nk_color (line 5112) | struct nk_color
  type nk_draw_list_stroke (line 5112) | enum nk_draw_list_stroke
  type nk_draw_list (line 5115) | struct nk_draw_list
  type nk_vec2 (line 5115) | struct nk_vec2
  type nk_vec2 (line 5115) | struct nk_vec2
  type nk_color (line 5115) | struct nk_color
  type nk_draw_list (line 5116) | struct nk_draw_list
  type nk_rect (line 5116) | struct nk_rect
  type nk_color (line 5116) | struct nk_color
  type nk_draw_list (line 5117) | struct nk_draw_list
  type nk_vec2 (line 5117) | struct nk_vec2
  type nk_vec2 (line 5117) | struct nk_vec2
  type nk_vec2 (line 5117) | struct nk_vec2
  type nk_color (line 5117) | struct nk_color
  type nk_draw_list (line 5118) | struct nk_draw_list
  type nk_vec2 (line 5118) | struct nk_vec2
  type nk_color (line 5118) | struct nk_color
  type nk_draw_list (line 5119) | struct nk_draw_list
  type nk_vec2 (line 5119) | struct nk_vec2
  type nk_vec2 (line 5119) | struct nk_vec2
  type nk_vec2 (line 5119) | struct nk_vec2
  type nk_vec2 (line 5119) | struct nk_vec2
  type nk_color (line 5119) | struct nk_color
  type nk_draw_list (line 5120) | struct nk_draw_list
  type nk_vec2 (line 5120) | struct nk_vec2
  type nk_color (line 5120) | struct nk_color
  type nk_draw_list_stroke (line 5120) | enum nk_draw_list_stroke
  type nk_anti_aliasing (line 5120) | enum nk_anti_aliasing
  type nk_draw_list (line 5123) | struct nk_draw_list
  type nk_rect (line 5123) | struct nk_rect
  type nk_color (line 5123) | struct nk_color
  type nk_draw_list (line 5124) | struct nk_draw_list
  type nk_rect (line 5124) | struct nk_rect
  type nk_color (line 5124) | struct nk_color
  type nk_color (line 5124) | struct nk_color
  type nk_color (line 5124) | struct nk_color
  type nk_color (line 5124) | struct nk_color
  type nk_draw_list (line 5125) | struct nk_draw_list
  type nk_vec2 (line 5125) | struct nk_vec2
  type nk_vec2 (line 5125) | struct nk_vec2
  type nk_vec2 (line 5125) | struct nk_vec2
  type nk_color (line 5125) | struct nk_color
  type nk_draw_list (line 5126) | struct nk_draw_list
  type nk_vec2 (line 5126) | struct nk_vec2
  type nk_color (line 5126) | struct nk_color
  type nk_draw_list (line 5127) | struct nk_draw_list
  type nk_vec2 (line 5127) | struct nk_vec2
  type nk_color (line 5127) | struct nk_color
  type nk_anti_aliasing (line 5127) | enum nk_anti_aliasing
  type nk_draw_list (line 5130) | struct nk_draw_list
  type nk_image (line 5130) | struct nk_image
  type nk_rect (line 5130) | struct nk_rect
  type nk_color (line 5130) | struct nk_color
  type nk_draw_list (line 5131) | struct nk_draw_list
  type nk_user_font (line 5131) | struct nk_user_font
  type nk_rect (line 5131) | struct nk_rect
  type nk_color (line 5131) | struct nk_color
  type nk_draw_list (line 5133) | struct nk_draw_list
  type nk_style_item_type (line 5143) | enum nk_style_item_type {
  type nk_color (line 5150) | struct nk_color
  type nk_image (line 5151) | struct nk_image
  type nk_nine_slice (line 5152) | struct nk_nine_slice
  type nk_style_item (line 5155) | struct nk_style_item {
  type nk_style_text (line 5160) | struct nk_style_text {
  type nk_style_button (line 5167) | struct nk_style_button {
  type nk_style_toggle (line 5197) | struct nk_style_toggle {
  type nk_style_selectable (line 5229) | struct nk_style_selectable {
  type nk_style_slider (line 5266) | struct nk_style_slider {
  type nk_style_knob (line 5307) | struct nk_style_knob {
  type nk_style_progress (line 5340) | struct nk_style_progress {
  type nk_style_scrollbar (line 5368) | struct nk_style_scrollbar {
  type nk_style_edit (line 5403) | struct nk_style_edit {
  type nk_style_property (line 5439) | struct nk_style_property {
  type nk_style_chart (line 5472) | struct nk_style_chart {
  type nk_style_combo (line 5488) | struct nk_style_combo {
  type nk_style_tab (line 5521) | struct nk_style_tab {
  type nk_style_header_align (line 5545) | enum nk_style_header_align {
  type nk_style_window_header (line 5549) | struct nk_style_window_header {
  type nk_style_window (line 5574) | struct nk_style_window {
  type nk_style (line 5614) | struct nk_style {
  type nk_color (line 5641) | struct nk_color
  type nk_image (line 5642) | struct nk_image
  type nk_nine_slice (line 5643) | struct nk_nine_slice
  type nk_panel_type (line 5656) | enum nk_panel_type {
  type nk_panel_set (line 5666) | enum nk_panel_set {
  type nk_chart_slot (line 5672) | struct nk_chart_slot {
  type nk_chart (line 5683) | struct nk_chart {
  type nk_panel_row_layout_type (line 5689) | enum nk_panel_row_layout_type {
  type nk_row_layout (line 5701) | struct nk_row_layout {
  type nk_popup_buffer (line 5717) | struct nk_popup_buffer {
  type nk_menu_state (line 5725) | struct nk_menu_state {
  type nk_panel (line 5730) | struct nk_panel {
  type nk_table (line 5756) | struct nk_table
  type nk_window_flags (line 5757) | enum nk_window_flags {
  type nk_popup_state (line 5768) | struct nk_popup_state {
  type nk_edit_state (line 5780) | struct nk_edit_state {
  type nk_property_state (line 5793) | struct nk_property_state {
  type nk_window (line 5810) | struct nk_window {
  type nk (line 5906) | struct nk
  type nk (line 5908) | struct nk
  type nk (line 5910) | struct nk
  type nk (line 5911) | struct nk
  type nk (line 5912) | enum nk
  type nk_configuration_stacks (line 5922) | struct nk_configuration_stacks {
  type nk_table (line 5938) | struct nk_table {
  type nk_table (line 5947) | struct nk_table
  type nk_panel (line 5948) | struct nk_panel
  type nk_window (line 5949) | struct nk_window
  type nk_page_element (line 5952) | struct nk_page_element {
  type nk_page (line 5958) | struct nk_page {
  type nk_pool (line 5964) | struct nk_pool {
  type nk_context (line 5975) | struct nk_context {
  type Big (line 6083) | struct Big {T x; char c;}
  type nk_rect (line 6217) | struct nk_rect
  type nk_rect (line 6218) | struct nk_rect
  type nk_vec2 (line 6218) | struct nk_vec2
  type nk_rect (line 6219) | struct nk_rect
  type nk_rect (line 6219) | struct nk_rect
  type nk_user_font (line 6249) | struct nk_user_font
  type nk_user_font (line 6250) | struct nk_user_font
  type nk_vec2 (line 6250) | struct nk_vec2
  type nk_allocator (line 6255) | struct nk_allocator
  type nk_buffer_allocation_type (line 6270) | enum nk_buffer_allocation_type
  type nk_buffer (line 6271) | struct nk_buffer
  type nk_buffer_allocation_type (line 6271) | enum nk_buffer_allocation_type
  type nk_buffer (line 6272) | struct nk_buffer
  type nk_command_buffer (line 6275) | struct nk_command_buffer
  type nk_buffer (line 6275) | struct nk_buffer
  type nk_command_clipping (line 6275) | enum nk_command_clipping
  type nk_command_buffer (line 6276) | struct nk_command_buffer
  type nk_command_buffer (line 6277) | struct nk_command_buffer
  type nk_command_type (line 6277) | enum nk_command_type
  type nk_command_buffer (line 6278) | struct nk_command_buffer
  type nk_symbol_type (line 6278) | enum nk_symbol_type
  type nk_rect (line 6278) | struct nk_rect
  type nk_color (line 6278) | struct nk_color
  type nk_color (line 6278) | struct nk_color
  type nk_user_font (line 6278) | struct nk_user_font
  type nk_context (line 6281) | struct nk_context
  type nk_command_buffer (line 6281) | struct nk_command_buffer
  type nk_context (line 6282) | struct nk_context
  type nk_window (line 6282) | struct nk_window
  type nk_context (line 6283) | struct nk_context
  type nk_window (line 6283) | struct nk_window
  type nk_context (line 6284) | struct nk_context
  type nk_window (line 6284) | struct nk_window
  type nk_context (line 6285) | struct nk_context
  type nk_command_buffer (line 6285) | struct nk_command_buffer
  type nk_context (line 6286) | struct nk_context
  type nk_window (line 6286) | struct nk_window
  type nk_context (line 6287) | struct nk_context
  type nk_text_edit (line 6290) | struct nk_text_edit
  type nk_text_edit_type (line 6290) | enum nk_text_edit_type
  type nk_text_edit (line 6291) | struct nk_text_edit
  type nk_user_font (line 6291) | struct nk_user_font
  type nk_text_edit (line 6292) | struct nk_text_edit
  type nk_user_font (line 6292) | struct nk_user_font
  type nk_text_edit (line 6293) | struct nk_text_edit
  type nk_keys (line 6293) | enum nk_keys
  type nk_user_font (line 6293) | struct nk_user_font
  type nk_window_insert_location (line 6296) | enum nk_window_insert_location {
  type nk_context (line 6300) | struct nk_context
  type nk_context (line 6301) | struct nk_context
  type nk_window (line 6301) | struct nk_window
  type nk_context (line 6302) | struct nk_context
  type nk_window (line 6302) | struct nk_window
  type nk_context (line 6303) | struct nk_context
  type nk_context (line 6304) | struct nk_context
  type nk_window (line 6304) | struct nk_window
  type nk_window_insert_location (line 6304) | enum nk_window_insert_location
  type nk_pool (line 6307) | struct nk_pool
  type nk_allocator (line 6307) | struct nk_allocator
  type nk_pool (line 6308) | struct nk_pool
  type nk_pool (line 6309) | struct nk_pool
  type nk_pool (line 6310) | struct nk_pool
  type nk_context (line 6313) | struct nk_context
  type nk_context (line 6314) | struct nk_context
  type nk_page_element (line 6314) | struct nk_page_element
  type nk_context (line 6315) | struct nk_context
  type nk_page_element (line 6315) | struct nk_page_element
  type nk_context (line 6318) | struct nk_context
  type nk_window (line 6319) | struct nk_window
  type nk_table (line 6319) | struct nk_table
  type nk_context (line 6320) | struct nk_context
  type nk_table (line 6320) | struct nk_table
  type nk_window (line 6321) | struct nk_window
  type nk_table (line 6321) | struct nk_table
  type nk_context (line 6322) | struct nk_context
  type nk_window (line 6322) | struct nk_window
  type nk_window (line 6323) | struct nk_window
  type nk_context (line 6326) | struct nk_context
  type nk_context (line 6327) | struct nk_context
  type nk_panel (line 6327) | struct nk_panel
  type nk_style (line 6329) | struct nk_style
  type nk_panel_type (line 6329) | enum nk_panel_type
  type nk_style (line 6330) | struct nk_style
  type nk_panel_type (line 6330) | enum nk_panel_type
  type nk_style (line 6331) | struct nk_style
  type nk_panel_type (line 6331) | enum nk_panel_type
  type nk_panel_type (line 6332) | enum nk_panel_type
  type nk_panel_type (line 6333) | enum nk_panel_type
  type nk_context (line 6334) | struct nk_context
  type nk_panel_type (line 6334) | enum nk_panel_type
  type nk_context (line 6335) | struct nk_context
  type nk_style (line 6338) | struct nk_style
  type nk_panel_type (line 6338) | enum nk_panel_type
  type nk_context (line 6339) | struct nk_context
  type nk_window (line 6339) | struct nk_window
  type nk_context (line 6340) | struct nk_context
  type nk_layout_format (line 6340) | enum nk_layout_format
  type nk_context (line 6341) | struct nk_context
  type nk_window (line 6341) | struct nk_window
  type nk_rect (line 6342) | struct nk_rect
  type nk_context (line 6342) | struct nk_context
  type nk_window (line 6342) | struct nk_window
  type nk_rect (line 6343) | struct nk_rect
  type nk_context (line 6343) | struct nk_context
  type nk_rect (line 6344) | struct nk_rect
  type nk_context (line 6344) | struct nk_context
  type nk_context (line 6347) | struct nk_context
  type nk_rect (line 6347) | struct nk_rect
  type nk_rect (line 6347) | struct nk_rect
  type nk_panel_type (line 6347) | enum nk_panel_type
  type nk_text (line 6350) | struct nk_text {
  type nk_command_buffer (line 6355) | struct nk_command_buffer
  type nk_rect (line 6355) | struct nk_rect
  type nk_text (line 6355) | struct nk_text
  type nk_user_font (line 6355) | struct nk_user_font
  type nk_command_buffer (line 6356) | struct nk_command_buffer
  type nk_rect (line 6356) | struct nk_rect
  type nk_text (line 6356) | struct nk_text
  type nk_user_font (line 6356) | struct nk_user_font
  type nk_rect (line 6359) | struct nk_rect
  type nk_input (line 6359) | struct nk_input
  type nk_button_behavior (line 6359) | enum nk_button_behavior
  type nk_command_buffer (line 6360) | struct nk_command_buffer
  type nk_rect (line 6360) | struct nk_rect
  type nk_style_button (line 6360) | struct nk_style_button
  type nk_command_buffer (line 6361) | struct nk_command_buffer
  type nk_rect (line 6361) | struct nk_rect
  type nk_style_button (line 6361) | struct nk_style_button
  type nk_input (line 6361) | struct nk_input
  type nk_button_behavior (line 6361) | enum nk_button_behavior
  type nk_rect (line 6361) | struct nk_rect
  type nk_command_buffer (line 6362) | struct nk_command_buffer
  type nk_rect (line 6362) | struct nk_rect
  type nk_rect (line 6362) | struct nk_rect
  type nk_style_button (line 6362) | struct nk_style_button
  type nk_user_font (line 6362) | struct nk_user_font
  type nk_command_buffer (line 6363) | struct nk_command_buffer
  type nk_rect (line 6363) | struct nk_rect
  type nk_button_behavior (line 6363) | enum nk_button_behavior
  type nk_style_button (line 6363) | struct nk_style_button
  type nk_input (line 6363) | struct nk_input
  type nk_user_font (line 6363) | struct nk_user_font
  type nk_command_buffer (line 6364) | struct nk_command_buffer
  type nk_rect (line 6364) | struct nk_rect
  type nk_rect (line 6364) | struct nk_rect
  type nk_style_button (line 6364) | struct nk_style_button
  type nk_symbol_type (line 6364) | enum nk_symbol_type
  type nk_user_font (line 6364) | struct nk_user_font
  type nk_command_buffer (line 6365) | struct nk_command_buffer
  type nk_rect (line 6365) | struct nk_rect
  type nk_symbol_type (line 6365) | enum nk_symbol_type
  type nk_button_behavior (line 6365) | enum nk_button_behavior
  type nk_style_button (line 6365) | struct nk_style_button
  type nk_input (line 6365) | struct nk_input
  type nk_user_font (line 6365) | struct nk_user_font
  type nk_command_buffer (line 6366) | struct nk_command_buffer
  type nk_rect (line 6366) | struct nk_rect
  type nk_rect (line 6366) | struct nk_rect
  type nk_style_button (line 6366) | struct nk_style_button
  type nk_image (line 6366) | struct nk_image
  type nk_command_buffer (line 6367) | struct nk_command_buffer
  type nk_rect (line 6367) | struct nk_rect
  type nk_image (line 6367) | struct nk_image
  type nk_button_behavior (line 6367) | enum nk_button_behavior
  type nk_style_button (line 6367) | struct nk_style_button
  type nk_input (line 6367) | struct nk_input
  type nk_command_buffer (line 6368) | struct nk_command_buffer
  type nk_rect (line 6368) | struct nk_rect
  type nk_rect (line 6368) | struct nk_rect
  type nk_rect (line 6368) | struct nk_rect
  type nk_style_button (line 6368) | struct nk_style_button
  type nk_symbol_type (line 6368) | enum nk_symbol_type
  type nk_user_font (line 6368) | struct nk_user_font
  type nk_command_buffer (line 6369) | struct nk_command_buffer
  type nk_rect (line 6369) | struct nk_rect
  type nk_symbol_type (line 6369) | enum nk_symbol_type
  type nk_button_behavior (line 6369) | enum nk_button_behavior
  type nk_style_button (line 6369) | struct nk_style_button
  type nk_user_font (line 6369) | struct nk_user_font
  type nk_input (line 6369) | struct nk_input
  type nk_command_buffer (line 6370) | struct nk_command_buffer
  type nk_rect (line 6370) | struct nk_rect
  type nk_rect (line 6370) | struct nk_rect
  type nk_rect (line 6370) | struct nk_rect
  type nk_style_button (line 6370) | struct nk_style_button
  type nk_user_font (line 6370) | struct nk_user_font
  type nk_image (line 6370) | struct nk_image
  type nk_command_buffer (line 6371) | struct nk_command_buffer
  type nk_rect (line 6371) | struct nk_rect
  type nk_image (line 6371) | struct nk_image
  type nk_button_behavior (line 6371) | enum nk_button_behavior
  type nk_style_button (line 6371) | struct nk_style_button
  type nk_user_font (line 6371) | struct nk_user_font
  type nk_input (line 6371) | struct nk_input
  type nk_toggle_type (line 6374) | enum nk_toggle_type {
  type nk_input (line 6378) | struct nk_input
  type nk_rect (line 6378) | struct nk_rect
  type nk_command_buffer (line 6379) | struct nk_command_buffer
  type nk_style_toggle (line 6379) | struct nk_style_toggle
  type nk_rect (line 6379) | struct nk_rect
  type nk_rect (line 6379) | struct nk_rect
  type nk_rect (line 6379) | struct nk_rect
  type nk_user_font (line 6379) | struct nk_user_font
  type nk_command_buffer (line 6380) | struct nk_command_buffer
  type nk_style_toggle (line 6380) | struct nk_style_toggle
  type nk_rect (line 6380) | struct nk_rect
  type nk_rect (line 6380) | struct nk_rect
  type nk_rect (line 6380) | struct nk_rect
  type nk_user_font (line 6380) | struct nk_user_font
  type nk_command_buffer (line 6381) | struct nk_command_buffer
  type nk_rect (line 6381) | struct nk_rect
  type nk_toggle_type (line 6381) | enum nk_toggle_type
  type nk_style_toggle (line 6381) | struct nk_style_toggle
  type nk_input (line 6381) | struct nk_input
  type nk_user_font (line 6381) | struct nk_user_font
  type nk_input (line 6384) | struct nk_input
  type nk_rect (line 6384) | struct nk_rect
  type nk_rect (line 6384) | struct nk_rect
  type nk_command_buffer (line 6385) | struct nk_command_buffer
  type nk_style_progress (line 6385) | struct nk_style_progress
  type nk_rect (line 6385) | struct nk_rect
  type nk_rect (line 6385) | struct nk_rect
  type nk_command_buffer (line 6386) | struct nk_command_buffer
  type nk_rect (line 6386) | struct nk_rect
  type nk_style_progress (line 6386) | struct nk_style_progress
  type nk_input (line 6386) | struct nk_input
  type nk_rect (line 6389) | struct nk_rect
  type nk_rect (line 6389) | struct nk_rect
  type nk_input (line 6389) | struct nk_input
  type nk_rect (line 6389) | struct nk_rect
  type nk_command_buffer (line 6390) | struct nk_command_buffer
  type nk_style_slider (line 6390) | struct nk_style_slider
  type nk_rect (line 6390) | struct nk_rect
  type nk_rect (line 6390) | struct nk_rect
  type nk_command_buffer (line 6391) | struct nk_command_buffer
  type nk_rect (line 6391) | struct nk_rect
  type nk_style_slider (line 6391) | struct nk_style_slider
  type nk_input (line 6391) | struct nk_input
  type nk_user_font (line 6391) | struct nk_user_font
  type nk_input (line 6394) | struct nk_input
  type nk_rect (line 6394) | struct nk_rect
  type nk_rect (line 6394) | struct nk_rect
  type nk_rect (line 6394) | struct nk_rect
  type nk_rect (line 6394) | struct nk_rect
  type nk_orientation (line 6394) | enum nk_orientation
  type nk_command_buffer (line 6395) | struct nk_command_buffer
  type nk_style_scrollbar (line 6395) | struct nk_style_scrollbar
  type nk_rect (line 6395) | struct nk_rect
  type nk_rect (line 6395) | struct nk_rect
  type nk_command_buffer (line 6396) | struct nk_command_buffer
  type nk_rect (line 6396) | struct nk_rect
  type nk_style_scrollbar (line 6396) | struct nk_style_scrollbar
  type nk_input (line 6396) | struct nk_input
  type nk_user_font (line 6396) | struct nk_user_font
  type nk_command_buffer (line 6397) | struct nk_command_buffer
  type nk_rect (line 6397) | struct nk_rect
  type nk_style_scrollbar (line 6397) | struct nk_style_scrollbar
  type nk_input (line 6397) | struct nk_input
  type nk_user_font (line 6397) | struct nk_user_font
  type nk_command_buffer (line 6400) | struct nk_command_buffer
  type nk_style_selectable (line 6400) | struct nk_style_selectable
  type nk_rect (line 6400) | struct nk_rect
  type nk_rect (line 6400) | struct nk_rect
  type nk_image (line 6400) | struct nk_image
  type nk_symbol_type (line 6400) | enum nk_symbol_type
  type nk_user_font (line 6400) | struct nk_user_font
  type nk_command_buffer (line 6401) | struct nk_command_buffer
  type nk_rect (line 6401) | struct nk_rect
  type nk_style_selectable (line 6401) | struct nk_style_selectable
  type nk_input (line 6401) | struct nk_input
  type nk_user_font (line 6401) | struct nk_user_font
  type nk_command_buffer (line 6402) | struct nk_command_buffer
  type nk_rect (line 6402) | struct nk_rect
  type nk_image (line 6402) | struct nk_image
  type nk_style_selectable (line 6402) | struct nk_style_selectable
  type nk_input (line 6402) | struct nk_input
  type nk_user_font (line 6402) | struct nk_user_font
  type nk_command_buffer (line 6405) | struct nk_command_buffer
  type nk_style_edit (line 6405) | struct nk_style_edit
  type nk_user_font (line 6405) | struct nk_user_font
  type nk_color (line 6405) | struct nk_color
  type nk_color (line 6405) | struct nk_color
  type nk_command_buffer (line 6406) | struct nk_command_buffer
  type nk_rect (line 6406) | struct nk_rect
  type nk_text_edit (line 6406) | struct nk_text_edit
  type nk_style_edit (line 6406) | struct nk_style_edit
  type nk_input (line 6406) | struct nk_input
  type nk_user_font (line 6406) | struct nk_user_font
  type nk_rect (line 6409) | struct nk_rect
  type nk_rect (line 6409) | struct nk_rect
  type nk_rect (line 6409) | struct nk_rect
  type nk_rect (line 6409) | struct nk_rect
  type nk_colorf (line 6409) | struct nk_colorf
  type nk_input (line 6409) | struct nk_input
  type nk_command_buffer (line 6410) | struct nk_command_buffer
  type nk_rect (line 6410) | struct nk_rect
  type nk_rect (line 6410) | struct nk_rect
  type nk_rect (line 6410) | struct nk_rect
  type nk_colorf (line 6410) | struct nk_colorf
  type nk_command_buffer (line 6411) | struct nk_command_buffer
  type nk_colorf (line 6411) | struct nk_colorf
  type nk_color_format (line 6411) | enum nk_color_format
  type nk_rect (line 6411) | struct nk_rect
  type nk_vec2 (line 6411) | struct nk_vec2
  type nk_input (line 6411) | struct nk_input
  type nk_user_font (line 6411) | struct nk_user_font
  type nk_property_status (line 6414) | enum nk_property_status {
  type nk_property_filter (line 6419) | enum nk_property_filter {
  type nk_property_kind (line 6423) | enum nk_property_kind {
  type nk_property_variant (line 6433) | struct nk_property_variant {
  type nk_input (line 6444) | struct nk_input
  type nk_rect (line 6444) | struct nk_rect
  type nk_property_variant (line 6444) | struct nk_property_variant
  type nk_input (line 6445) | struct nk_input
  type nk_rect (line 6445) | struct nk_rect
  type nk_rect (line 6445) | struct nk_rect
  type nk_rect (line 6445) | struct nk_rect
  type nk_rect (line 6445) | struct nk_rect
  type nk_property_variant (line 6445) | struct nk_property_variant
  type nk_command_buffer (line 6446) | struct nk_command_buffer
  type nk_style_property (line 6446) | struct nk_style_property
  type nk_rect (line 6446) | struct nk_rect
  type nk_rect (line 6446) | struct nk_rect
  type nk_user_font (line 6446) | struct nk_user_font
  type nk_command_buffer (line 6447) | struct nk_command_buffer
  type nk_rect (line 6447) | struct nk_rect
  type nk_property_variant (line 6447) | struct nk_property_variant
  type nk_style_property (line 6447) | struct nk_style_property
  type nk_property_filter (line 6447) | enum nk_property_filter
  type nk_input (line 6447) | struct nk_input
  type nk_user_font (line 6447) | struct nk_user_font
  type nk_text_edit (line 6447) | struct nk_text_edit
  type nk_button_behavior (line 6447) | enum nk_button_behavior
  type nk_context (line 6448) | struct nk_context
  type nk_property_variant (line 6448) | struct nk_property_variant
  type nk_property_filter (line 6448) | enum nk_property_filter
  type nk_allocator (line 6474) | struct nk_allocator
  type nk_allocator (line 6474) | struct nk_allocator
  function nk_stbtt_free (line 6478) | static void
  function NK_LIB (line 6530) | NK_LIB float
  function NK_LIB (line 6544) | NK_LIB float
  function NK_LIB (line 6559) | NK_LIB float
  function NK_LIB (line 6577) | NK_LIB float
  function NK_LIB (line 6596) | NK_LIB float
  function NK_LIB (line 6620) | NK_LIB nk_uint
  function NK_LIB (line 6633) | NK_LIB double
  function NK_LIB (line 6650) | NK_LIB int
  function NK_LIB (line 6657) | NK_LIB int
  function NK_LIB (line 6663) | NK_LIB int
  function NK_LIB (line 6676) | NK_LIB int
  function NK_LIB (line 6693) | NK_LIB float
  function nk_rect (line 6698) | nk_rect
  function nk_rect (line 6703) | nk_rect
  function nk_rect (line 6711) | nk_rect
  function nk_rect (line 6721) | nk_rect
  function nk_rect (line 6726) | nk_rect
  function nk_rect (line 6731) | nk_rect
  function nk_vec2 (line 6736) | nk_vec2
  function nk_vec2 (line 6743) | nk_vec2
  function nk_rect (line 6750) | nk_rect
  function nk_rect (line 6762) | nk_rect
  function nk_vec2 (line 6772) | nk_vec2
  function nk_vec2 (line 6779) | nk_vec2
  function nk_vec2 (line 6787) | nk_vec2
  function nk_vec2 (line 6792) | nk_vec2
  function NK_LIB (line 6797) | NK_LIB void
  function NK_API (line 6811) | NK_API void
  function NK_LIB (line 6859) | NK_LIB nk_bool nk_is_lower(int c) {return (c >= 'a' && c <= 'z') || (c >...
  function NK_LIB (line 6860) | NK_LIB nk_bool nk_is_upper(int c){return (c >= 'A' && c <= 'Z') || (c >=...
  function NK_LIB (line 6861) | NK_LIB int nk_to_upper(int c) {return (c >= 'a' && c <= 'z') ? (c - ('a'...
  function NK_LIB (line 6862) | NK_LIB int nk_to_lower(int c) {return (c >= 'A' && c <= 'Z') ? (c - ('a'...
  function NK_LIB (line 6865) | NK_LIB void*
  function NK_LIB (line 6923) | NK_LIB void
  function NK_LIB (line 6975) | NK_LIB void
  function NK_API (line 6981) | NK_API int
  function NK_API (line 6989) | NK_API int
  function NK_API (line 7014) | NK_API double
  function NK_API (line 7072) | NK_API float
  function NK_API (line 7081) | NK_API int
  function NK_API (line 7103) | NK_API int
  function NK_INTERN (line 7128) | NK_INTERN int
  function NK_INTERN (line 7141) | NK_INTERN int
  function NK_API (line 7150) | NK_API int
  function NK_API (line 7167) | NK_API int
  function NK_API (line 7288) | NK_API int
  function NK_LIB (line 7293) | NK_LIB int
  function NK_INTERN (line 7313) | NK_INTERN void
  function NK_LIB (line 7326) | NK_LIB char*
  function NK_LIB (line 7351) | NK_LIB char*
  function NK_INTERN (line 7432) | NK_INTERN int
  function NK_LIB (line 7751) | NK_LIB int
  function NK_API (line 7768) | NK_API nk_hash
  function NK_LIB (line 7833) | NK_LIB char*
  function NK_LIB (line 7867) | NK_LIB int
  function nk_vec2 (line 7915) | nk_vec2
  function NK_INTERN (line 7985) | NK_INTERN int
  function nk_color (line 8001) | nk_color
  function nk_color (line 8011) | nk_color
  function nk_color (line 8021) | nk_color
  function nk_color (line 8033) | nk_color
  function NK_API (line 8045) | NK_API void
  function NK_API (line 8060) | NK_API void
  function nk_color (line 8073) | nk_color
  function nk_color (line 8078) | nk_color
  function nk_color (line 8083) | nk_color
  function nk_color (line 8093) | nk_color
  function nk_color (line 8098) | nk_color
  function nk_color (line 8103) | nk_color
  function nk_color (line 8113) | nk_color
  function nk_color (line 8123) | nk_color
  function nk_color (line 8128) | nk_color
  function nk_color (line 8133) | nk_color
  function nk_color (line 8143) | nk_color
  function nk_color (line 8148) | nk_color
  function nk_color (line 8153) | nk_color
  function nk_color (line 8158) | nk_color
  function nk_color (line 8163) | nk_color
  function nk_color (line 8168) | nk_color
  function nk_color (line 8173) | nk_color
  function nk_color (line 8178) | nk_color
  function nk_color (line 8187) | nk_color
  function nk_color (line 8192) | nk_color
  function nk_colorf (line 8197) | nk_colorf
  function nk_colorf (line 8224) | nk_colorf
  function nk_color (line 8229) | nk_color
  function nk_color (line 8235) | nk_color
  function NK_API (line 8240) | NK_API nk_uint
  function NK_API (line 8249) | NK_API void
  function NK_API (line 8258) | NK_API void
  function nk_colorf (line 8263) | nk_colorf
  function NK_API (line 8270) | NK_API void
  function NK_API (line 8279) | NK_API void
  function NK_API (line 8284) | NK_API void
  function NK_API (line 8290) | NK_API void
  function NK_API (line 8296) | NK_API void
  function NK_API (line 8317) | NK_API void
  function NK_API (line 8322) | NK_API void
  function NK_API (line 8330) | NK_API void
  function NK_API (line 8335) | NK_API void
  function NK_API (line 8346) | NK_API void
  function NK_API (line 8351) | NK_API void
  function NK_API (line 8361) | NK_API void
  function NK_API (line 8371) | NK_API void
  function NK_API (line 8377) | NK_API void
  function NK_API (line 8386) | NK_API void
  function NK_API (line 8391) | NK_API void
  function NK_INTERN (line 8414) | NK_INTERN int
  function NK_INTERN (line 8425) | NK_INTERN nk_rune
  function NK_API (line 8436) | NK_API int
  function NK_INTERN (line 8464) | NK_INTERN char
  function NK_API (line 8469) | NK_API int
  function NK_API (line 8484) | NK_API int
  function NK_API (line 8507) | NK_API const char*
  function NK_LIB (line 8555) | NK_LIB void*
  function NK_LIB (line 8562) | NK_LIB void
  function NK_API (line 8568) | NK_API void
  function NK_API (line 8579) | NK_API void
  function NK_API (line 8596) | NK_API void
  function NK_LIB (line 8610) | NK_LIB void*
  function NK_LIB (line 8640) | NK_LIB void*
  function NK_LIB (line 8678) | NK_LIB void*
  function NK_API (line 8730) | NK_API void
  function NK_API (line 8738) | NK_API void
  function NK_API (line 8748) | NK_API void
  function NK_API (line 8769) | NK_API void
  function NK_API (line 8779) | NK_API void
  function NK_API (line 8789) | NK_API void
  function NK_API (line 8801) | NK_API void*
  function NK_API (line 8808) | NK_API const void*
  function NK_API (line 8815) | NK_API nk_size
  function NK_API (line 8832) | NK_API void
  function NK_API (line 8844) | NK_API void
  function NK_API (line 8850) | NK_API void
  function NK_API (line 8856) | NK_API int
  function NK_API (line 8869) | NK_API int
  function NK_API (line 8874) | NK_API int
  function NK_API (line 8886) | NK_API int
  function NK_API (line 8904) | NK_API int
  function NK_API (line 8920) | NK_API int
  function NK_API (line 8935) | NK_API int
  function NK_API (line 8970) | NK_API int
  function NK_API (line 8989) | NK_API int
  function NK_API (line 8994) | NK_API int
  function NK_API (line 8999) | NK_API int
  function NK_API (line 9014) | NK_API int
  function NK_API (line 9032) | NK_API int
  function NK_API (line 9048) | NK_API int
  function NK_API (line 9063) | NK_API void
  function NK_API (line 9073) | NK_API void
  function NK_API (line 9094) | NK_API void
  function NK_API (line 9111) | NK_API void
  function NK_API (line 9135) | NK_API char*
  function NK_API (line 9142) | NK_API char*
  function NK_API (line 9178) | NK_API const char*
  function NK_API (line 9185) | NK_API const char*
  function NK_API (line 9221) | NK_API nk_rune
  function NK_API (line 9229) | NK_API char*
  function NK_API (line 9236) | NK_API const char*
  function NK_API (line 9243) | NK_API int
  function NK_API (line 9250) | NK_API int
  function NK_API (line 9257) | NK_API void
  function NK_API (line 9264) | NK_API void
  function NK_LIB (line 9280) | NK_LIB void
  function NK_LIB (line 9293) | NK_LIB void
  function NK_LIB (line 9306) | NK_LIB void*
  function NK_API (line 9339) | NK_API void
  function NK_API (line 9359) | NK_API void
  function NK_API (line 9376) | NK_API void
  function NK_API (line 9399) | NK_API void
  function NK_API (line 9422) | NK_API void
  function NK_API (line 9445) | NK_API void
  function NK_API (line 9471) | NK_API void
  function NK_API (line 9493) | NK_API void
  function NK_API (line 9514) | NK_API void
  function NK_API (line 9531) | NK_API void
  function NK_API (line 9548) | NK_API void
  function NK_API (line 9575) | NK_API void
  function NK_API (line 9602) | NK_API void
  function NK_API (line 9623) | NK_API void
  function NK_API (line 9644) | NK_API void
  function NK_API (line 9665) | NK_API void
  function NK_API (line 9688) | NK_API void
  function NK_API (line 9765) | NK_API void
  function NK_API (line 9788) | NK_API void
  function NK_API (line 9839) | NK_API void
  function NK_API (line 9852) | NK_API void
  function nk_draw_command (line 9880) | nk_draw_command*
  function nk_draw_command (line 9896) | nk_draw_command*
  function nk_draw_command (line 9916) | nk_draw_command*
  function nk_vec2 (line 9930) | nk_vec2*
  function nk_vec2 (line 9948) | nk_vec2
  function nk_draw_command (line 9959) | nk_draw_command*
  function nk_draw_command (line 9990) | nk_draw_command*
  function NK_INTERN (line 10003) | NK_INTERN void
  function NK_INTERN (line 10017) | NK_INTERN void
  function NK_API (line 10041) | NK_API void
  function NK_INTERN (line 10047) | NK_INTERN void*
  function NK_INTERN (line 10071) | NK_INTERN nk_draw_index*
  function NK_INTERN (line 10089) | NK_INTERN int
  function NK_INTERN (line 10096) | NK_INTERN void
  function NK_INTERN (line 10171) | NK_INTERN void
  function NK_INTERN (line 10225) | NK_INTERN void*
  function NK_API (line 10244) | NK_API void
  function NK_API (line 10484) | NK_API void
  function NK_API (line 10608) | NK_API void
  function NK_API (line 10617) | NK_API void
  function NK_API (line 10635) | NK_API void
  function NK_API (line 10651) | NK_API void
  function NK_API (line 10696) | NK_API void
  function NK_API (line 10719) | NK_API void
  function NK_API (line 10746) | NK_API void
  function NK_API (line 10756) | NK_API void
  function NK_API (line 10768) | NK_API void
  function NK_API (line 10783) | NK_API void
  function NK_API (line 10798) | NK_API void
  function NK_API (line 10812) | NK_API void
  function NK_API (line 10846) | NK_API void
  function NK_API (line 10857) | NK_API void
  function NK_API (line 10868) | NK_API void
  function NK_API (line 10879) | NK_API void
  function NK_API (line 10890) | NK_API void
  function NK_INTERN (line 10901) | NK_INTERN void
  function NK_API (line 10938) | NK_API void
  function NK_API (line 10959) | NK_API void
  function NK_API (line 11009) | NK_API nk_flags
  function nk_draw_command (line 11151) | nk_draw_command*
  function nk_draw_command (line 11157) | nk_draw_command*
  function nk_draw_command (line 11162) | nk_draw_command*
  type stbrp_context (line 11251) | typedef struct stbrp_context stbrp_context;
  type stbrp_node (line 11252) | typedef struct stbrp_node    stbrp_node;
  type stbrp_rect (line 11253) | typedef struct stbrp_rect    stbrp_rect;
  type stbrp_coord (line 11255) | typedef int            stbrp_coord;
  type stbrp_rect (line 11285) | struct stbrp_rect
  type stbrp_node (line 11345) | struct stbrp_node
  type stbrp_context (line 11351) | struct stbrp_context
  function STBRP_DEF (line 11399) | STBRP_DEF void stbrp_setup_heuristic(stbrp_context *context, int heuristic)
  function STBRP_DEF (line 11411) | STBRP_DEF void stbrp_setup_allow_out_of_mem(stbrp_context *context, int ...
  function STBRP_DEF (line 11431) | STBRP_DEF void stbrp_init_target(stbrp_context *context, int width, int ...
  function stbrp__skyline_find_min_y (line 11457) | static int stbrp__skyline_find_min_y(stbrp_context *c, stbrp_node *first...
  type stbrp__findresult (line 11507) | typedef struct
  function stbrp__findresult (line 11513) | static stbrp__findresult stbrp__skyline_find_best_pos(stbrp_context *c, ...
  function stbrp__findresult (line 11615) | static stbrp__findresult stbrp__skyline_pack_rectangle(stbrp_context *co...
  function rect_height_compare (line 11694) | static int STBRP__CDECL rect_height_compare(const void *a, const void *b)
  function rect_original_order (line 11705) | static int STBRP__CDECL rect_original_order(const void *a, const void *b)
  function STBRP_DEF (line 11712) | STBRP_DEF int stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects...
  function my_stbtt_initfont (line 12081) | void my_stbtt_initfont(void)
  function my_stbtt_print (line 12093) | void my_stbtt_print(float x, float y, char *text)
  function main (line 12128) | int main(int argc, char **argv)
  function main (line 12169) | int main(int arg, char **argv)
  type stbtt_uint8 (line 12222) | typedef unsigned char   stbtt_uint8;
  type stbtt_int8 (line 12223) | typedef signed   char   stbtt_int8;
  type stbtt_uint16 (line 12224) | typedef unsigned short  stbtt_uint16;
  type stbtt_int16 (line 12225) | typedef signed   short  stbtt_int16;
  type stbtt_uint32 (line 12226) | typedef unsigned int    stbtt_uint32;
  type stbtt_int32 (line 12227) | typedef signed   int    stbtt_int32;
  type stbtt__buf (line 12307) | typedef struct
  type stbtt_bakedchar (line 12321) | typedef struct
  type stbtt_aligned_quad (line 12337) | typedef struct
  type stbtt_packedchar (line 12369) | typedef struct
  type stbtt_pack_context (line 12376) | typedef struct stbtt_pack_context stbtt_pack_context;
  type stbtt_fontinfo (line 12377) | typedef struct stbtt_fontinfo stbtt_fontinfo;
  type stbrp_rect (line 12379) | typedef struct stbrp_rect stbrp_rect;
  type stbtt_pack_range (line 12413) | typedef struct
  type stbtt_pack_context (line 12472) | struct stbtt_pack_context {
  type stbtt_fontinfo (line 12507) | struct stbtt_fontinfo
  type stbtt_kerningentry (line 12598) | typedef struct stbtt_kerningentry
  type stbtt_vertex (line 12629) | typedef struct
  type stbtt__bitmap (line 12718) | typedef struct
  function stbtt_uint8 (line 12927) | static stbtt_uint8 stbtt__buf_get8(stbtt__buf *b)
  function stbtt_uint8 (line 12934) | static stbtt_uint8 stbtt__buf_peek8(stbtt__buf *b)
  function stbtt__buf_seek (line 12941) | static void stbtt__buf_seek(stbtt__buf *b, int o)
  function stbtt__buf_skip (line 12947) | static void stbtt__buf_skip(stbtt__buf *b, int o)
  function stbtt_uint32 (line 12952) | static stbtt_uint32 stbtt__buf_get(stbtt__buf *b, int n)
  function stbtt__buf (line 12962) | static stbtt__buf stbtt__new_buf(const void *p, size_t size)
  function stbtt__buf (line 12975) | static stbtt__buf stbtt__buf_range(const stbtt__buf *b, int o, int s)
  function stbtt__buf (line 12984) | static stbtt__buf stbtt__cff_get_index(stbtt__buf *b)
  function stbtt_uint32 (line 12998) | static stbtt_uint32 stbtt__cff_int(stbtt__buf *b)
  function stbtt__cff_skip_operand (line 13010) | static void stbtt__cff_skip_operand(stbtt__buf *b) {
  function stbtt__buf (line 13025) | static stbtt__buf stbtt__dict_get(stbtt__buf *b, int key)
  function stbtt__dict_get_ints (line 13040) | static void stbtt__dict_get_ints(stbtt__buf *b, int key, int outcount, s...
  function stbtt__cff_index_count (line 13048) | static int stbtt__cff_index_count(stbtt__buf *b)
  function stbtt__buf (line 13054) | static stbtt__buf stbtt__cff_index_get(stbtt__buf b, int i)
  function stbtt_uint16 (line 13080) | static stbtt_uint16 ttUSHORT(stbtt_uint8 *p) { return p[0]*256 + p[1]; }
  function stbtt_int16 (line 13081) | static stbtt_int16 ttSHORT(stbtt_uint8 *p)   { return p[0]*256 + p[1]; }
  function stbtt_uint32 (line 13082) | static stbtt_uint32 ttULONG(stbtt_uint8 *p)  { return (p[0]<<24) + (p[1]...
  function stbtt_int32 (line 13083) | static stbtt_int32 ttLONG(stbtt_uint8 *p)    { return (p[0]<<24) + (p[1]...
  function stbtt__isfont (line 13088) | static int stbtt__isfont(stbtt_uint8 *font)
  function stbtt_uint32 (line 13100) | static stbtt_uint32 stbtt__find_table(stbtt_uint8 *data, stbtt_uint32 fo...
  function stbtt_GetFontOffsetForIndex_internal (line 13113) | static int stbtt_GetFontOffsetForIndex_internal(unsigned char *font_coll...
  function stbtt_GetNumberOfFonts_internal (line 13132) | static int stbtt_GetNumberOfFonts_internal(unsigned char *font_collection)
  function stbtt__buf (line 13148) | static stbtt__buf stbtt__get_subrs(stbtt__buf cff, stbtt__buf fontdict)
  function stbtt__get_svg (line 13162) | static int stbtt__get_svg(stbtt_fontinfo *info)
  function stbtt_InitFont_internal (line 13177) | static int stbtt_InitFont_internal(stbtt_fontinfo *info, unsigned char *...
  function STBTT_DEF (line 13290) | STBTT_DEF int stbtt_FindGlyphIndex(const stbtt_fontinfo *info, int unico...
  function STBTT_DEF (line 13383) | STBTT_DEF int stbtt_GetCodepointShape(const stbtt_fontinfo *info, int un...
  function s
Condensed preview — 191 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,803K chars).
[
  {
    "path": ".Doxyfile",
    "chars": 121393,
    "preview": "# Doxyfile 1.9.4\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) "
  },
  {
    "path": ".editorconfig",
    "chars": 222,
    "preview": "# EditorConfig: https://EditorConfig.org\n\nroot = true\n\n[*]\nindent_style = space\ncharset = utf-8\nend_of_line = lf\nindent_"
  },
  {
    "path": ".gitattributes",
    "chars": 112,
    "preview": "# Github language settings\n*.h linguist-language=c\n*.c linguist-language=c\n\n*.h text eol=auto\n*.c text eol=auto\n"
  },
  {
    "path": ".github/ci_compile_sources.sh",
    "chars": 1357,
    "preview": "#!/bin/sh\n# This shellscript compiles each Nuklear/src/*.c source separetly\n# in order to check for simple compilation f"
  },
  {
    "path": ".github/workflows/ccpp.yml",
    "chars": 1771,
    "preview": "name: C/C++ CI\n\non: [push, pull_request]\n\njobs:\n  build:\n\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/che"
  },
  {
    "path": ".github/workflows/create-tag.yml",
    "chars": 289,
    "preview": "name: Create Tag\n\non:\n  push:\n    branches:\n      - master\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n    - u"
  },
  {
    "path": ".github/workflows/docs.yml",
    "chars": 610,
    "preview": "name: Documentation on github.io\n\non:\n  push:\n    branches: [ master ]\n\njobs:\n  build-documentation:\n    runs-on: ubuntu"
  },
  {
    "path": ".gitignore",
    "chars": 97,
    "preview": "demo/*/*/demo\ndemo/*/bin/*\nexample/bin/*\n/doc\n*.tmp\n*.swo\n*.swp\n*.o\n*.obj\n*.exe\n*.dSYM\n/private/\n"
  },
  {
    "path": "LICENSE",
    "chars": 2667,
    "preview": "------------------------------------------------------------------------------\nThis software is available under 2 licens"
  },
  {
    "path": "Makefile",
    "chars": 3243,
    "preview": "\n######################################################################################\n##  \t\t\t\t\t\t\t\t SETTINGS           "
  },
  {
    "path": "Readme.md",
    "chars": 7594,
    "preview": "# Nuklear\n\n[![](https://github.com/Immediate-Mode-UI/Nuklear/workflows/C%2FC++%20CI/badge.svg )](https://github.com/Imme"
  },
  {
    "path": "clib.json",
    "chars": 227,
    "preview": "{\n  \"name\": \"nuklear\",\n  \"version\": \"4.13.2\",\n  \"repo\": \"Immediate-Mode-UI/Nuklear\",\n  \"description\": \"A small ANSI C gu"
  },
  {
    "path": "demo/allegro5/KeyboardHandleriOS.h",
    "chars": 207,
    "preview": "#import <UIKit/UIKit.h>\n\n#include <allegro5/allegro.h>\n\n@interface KeyboardHandleriOS : UIView <UIKeyInput>\n-(void)setCu"
  },
  {
    "path": "demo/allegro5/KeyboardHandleriOS.m",
    "chars": 3723,
    "preview": "#ifdef __OBJC__\n#import <UIKit/UIKit.h>\n#endif\n#import \"KeyboardHandleriOS.h\"\n#include <allegro5/allegro.h>\n#include <al"
  },
  {
    "path": "demo/allegro5/Makefile",
    "chars": 463,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -std=c89 -Wall -Wextra -pedantic -Wno-unused-function\n\nSRC = main.c\nOBJ = $(SRC:"
  },
  {
    "path": "demo/allegro5/Readme.md",
    "chars": 3263,
    "preview": "# Allegro v5 nuklear backend\n\nThis backend provides support for [Allegro version 5](https://liballeg.github.io). It work"
  },
  {
    "path": "demo/allegro5/main.c",
    "chars": 6101,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#i"
  },
  {
    "path": "demo/allegro5/nuklear_allegro5.h",
    "chars": 21856,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/common/calculator.c",
    "chars": 2168,
    "preview": "/* nuklear - v1.00 - public domain */\nstatic void\ncalculator(struct nk_context *ctx)\n{\n    if (nk_begin(ctx, \"Calculator"
  },
  {
    "path": "demo/common/canvas.c",
    "chars": 4906,
    "preview": "/* nuklear - v1.05 - public domain */\nstruct nk_canvas {\n    struct nk_command_buffer *painter;\n    struct nk_vec2 item_"
  },
  {
    "path": "demo/common/file_browser.c",
    "chars": 16334,
    "preview": "#include <string.h> // strcpy, strlen\n\n#ifdef __unix__\n#include <dirent.h>\n#include <unistd.h>\n#endif\n\n#ifndef _WIN32\n# "
  },
  {
    "path": "demo/common/filebrowser/stb_image.h",
    "chars": 284733,
    "preview": "/* stb_image - v2.28 - public domain image loader - http://nothings.org/stb\n                                  no warrant"
  },
  {
    "path": "demo/common/node_editor.c",
    "chars": 13927,
    "preview": "/* nuklear - v1.00 - public domain */\n/* This is a simple node editor just to show a simple implementation and that\n * i"
  },
  {
    "path": "demo/common/overview.c",
    "chars": 73328,
    "preview": "#include <limits.h> /* INT_MAX */\n#include <time.h> /* struct tm, localtime */\n\nstatic int\noverview(struct nk_context *c"
  },
  {
    "path": "demo/common/style.c",
    "chars": 22956,
    "preview": "enum theme {\n  THEME_BLACK,\n  THEME_WHITE,\n  THEME_RED,\n  THEME_BLUE,\n  THEME_DARK,\n  THEME_DRACULA,\n  THEME_CATPPUCCIN_"
  },
  {
    "path": "demo/common/style_configurator.c",
    "chars": 28140,
    "preview": "\n/*\n TODO design decisions\n plural or not?  ie style_button or style_buttons?\n use the duplicate array method, or just l"
  },
  {
    "path": "demo/d3d11/build.bat",
    "chars": 620,
    "preview": "@echo off\n\nrem This will use VS2015 for compiler\ncall \"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall."
  },
  {
    "path": "demo/d3d11/main.c",
    "chars": 10995,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#define COBJMACROS\n#define WIN32_LEAN_AND_MEAN\n#include <windows.h>\n#include <d3d"
  },
  {
    "path": "demo/d3d11/nuklear_d3d11.h",
    "chars": 23974,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/d3d11/nuklear_d3d11.hlsl",
    "chars": 631,
    "preview": "//\ncbuffer buffer0 : register(b0)\n{\n  float4x4 ProjectionMatrix;\n};\n\nsampler sampler0 : register(s0);\nTexture2D<float4> "
  },
  {
    "path": "demo/d3d11/nuklear_d3d11_pixel_shader.h",
    "chars": 5556,
    "preview": "#if 0\n//\n// Generated by Microsoft (R) D3D Shader Disassembler\n//\n//\n// Input signature:\n//\n// Name                 Inde"
  },
  {
    "path": "demo/d3d11/nuklear_d3d11_vertex_shader.h",
    "chars": 11267,
    "preview": "#if 0\n//\n// Generated by Microsoft (R) D3D Shader Disassembler\n//\n//\n// Input signature:\n//\n// Name                 Inde"
  },
  {
    "path": "demo/d3d12/build.bat",
    "chars": 715,
    "preview": "@echo off\n\nrem This will use VS2015 for compiler... if you have vs 2015 and it is installed at this / the default path\nc"
  },
  {
    "path": "demo/d3d12/main.c",
    "chars": 16819,
    "preview": "/* nuklear - 1.32.0 - public domain */\n\n/*\n *   === IMPORTATE NOTE FOR D3D12 ===  \n *\n * Due to a bug in the Windows SDK"
  },
  {
    "path": "demo/d3d12/nuklear_d3d12.h",
    "chars": 38891,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/d3d12/nuklear_d3d12.hlsl",
    "chars": 1274,
    "preview": "#define NK_ROOTSIGNATURE \"\"\\\n\"RootFlags(ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT),\"\\\n\"DescriptorTable(\"\\\n  \"CBV(b0, numDescrip"
  },
  {
    "path": "demo/d3d12/nuklear_d3d12_pixel_shader.h",
    "chars": 4936,
    "preview": "#if 0\n//\n// Generated by Microsoft (R) D3D Shader Disassembler\n//\n//\n// Input signature:\n//\n// Name                 Inde"
  },
  {
    "path": "demo/d3d12/nuklear_d3d12_vertex_shader.h",
    "chars": 5652,
    "preview": "#if 0\n//\n// Generated by Microsoft (R) D3D Shader Disassembler\n//\n//\n// Input signature:\n//\n// Name                 Inde"
  },
  {
    "path": "demo/d3d9/build.bat",
    "chars": 251,
    "preview": "@echo off\n\nrem This will use VS2015 for compiler\ncall \"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall."
  },
  {
    "path": "demo/d3d9/main.c",
    "chars": 11971,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#define COBJMACROS\n#define WIN32_LEAN_AND_MEAN\n#include <windows.h>\n#include <d3d"
  },
  {
    "path": "demo/d3d9/nuklear_d3d9.h",
    "chars": 18598,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/gdi/build.bat",
    "chars": 237,
    "preview": "@echo off\n\nrem This will use VS2015 for compiler\ncall \"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall."
  },
  {
    "path": "demo/gdi/main.c",
    "chars": 5519,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#define WIN32_LEAN_AND_MEAN\n#include <windows.h>\n#include <stdio.h>\n#include <str"
  },
  {
    "path": "demo/gdi/nuklear_gdi.h",
    "chars": 30927,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/gdi_native_nuklear/build.bat",
    "chars": 265,
    "preview": "@echo off\n\nrem This will use VS2015 for compiler\ncall \"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall."
  },
  {
    "path": "demo/gdi_native_nuklear/main.c",
    "chars": 4221,
    "preview": "#include <windows.h>\n\n#pragma comment(linker,\"\\\"/manifestdependency:type='win32' \\\nname='Microsoft.Windows.Common-Contro"
  },
  {
    "path": "demo/gdi_native_nuklear/nuklear_gdi.h",
    "chars": 29216,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/gdi_native_nuklear/window.h",
    "chars": 14358,
    "preview": "#ifndef NK_GDI_WINDOW\n#define NK_GDI_WINDOW\n\n#define NK_GDI_WINDOW_CLS L\"WNDCLS_NkGdi\"\n\n#include <windows.h>\n\n/* Functin"
  },
  {
    "path": "demo/gdip/build.bat",
    "chars": 228,
    "preview": "@echo off\n\ncall \"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat\" x86\n\ncl /nologo /W3 /O2 /fp:fast "
  },
  {
    "path": "demo/gdip/main.c",
    "chars": 5510,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#define WIN32_LEAN_AND_MEAN\n#include <windows.h>\n#include <stdio.h>\n#include <str"
  },
  {
    "path": "demo/gdip/nuklear_gdip.h",
    "chars": 38730,
    "preview": "/*\n * Nuklear - 1.40.8 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2017 by Micha"
  },
  {
    "path": "demo/glfw_opengl2/Makefile",
    "chars": 513,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -std=c99 -Wall -Wextra -pedantic\n\nSRC = main.c\nOBJ = $(SRC:.c=.o)\n\nifeq ($(OS),W"
  },
  {
    "path": "demo/glfw_opengl2/main.c",
    "chars": 9057,
    "preview": "/* nuklear - v1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#"
  },
  {
    "path": "demo/glfw_opengl2/nuklear_glfw_gl2.h",
    "chars": 19033,
    "preview": "/*\n * Nuklear - v1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2017 by Mich"
  },
  {
    "path": "demo/glfw_opengl3/Makefile",
    "chars": 578,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -g -std=c89 -Wall -Wextra -pedantic\n\nSRC = main.c\nOBJ = $(SRC:.c=.o)\n\nifeq ($(OS"
  },
  {
    "path": "demo/glfw_opengl3/main.c",
    "chars": 7419,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#i"
  },
  {
    "path": "demo/glfw_opengl3/nuklear_glfw_gl3.h",
    "chars": 23437,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/glfw_opengl4/Makefile",
    "chars": 578,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -g -std=c89 -Wall -Wextra -pedantic\n\nSRC = main.c\nOBJ = $(SRC:.c=.o)\n\nifeq ($(OS"
  },
  {
    "path": "demo/glfw_opengl4/main.c",
    "chars": 8274,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#i"
  },
  {
    "path": "demo/glfw_opengl4/nuklear_glfw_gl4.h",
    "chars": 26198,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/glfw_vulkan/.clang-format",
    "chars": 62,
    "preview": "---\nBasedOnStyle: LLVM\n# same as .editorconfig\nIndentWidth: 4\n"
  },
  {
    "path": "demo/glfw_vulkan/.gitignore",
    "chars": 65,
    "preview": "src/nuklearshaders/*.spv\nsrc/nuklear_glfw_vulkan.h\nshaders/*.spv\n"
  },
  {
    "path": "demo/glfw_vulkan/Makefile",
    "chars": 659,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -std=c89 -Wall -Wextra -pedantic\n\nSRC = main.c\nOBJ = $(SRC:.c=.o)\n\nifeq ($(OS),W"
  },
  {
    "path": "demo/glfw_vulkan/README.md",
    "chars": 2031,
    "preview": "# nuklear glfw vulkan\n\n## Theory of operation\n\nThe nuklear glfw vulkan integration creates an independent graphics pipel"
  },
  {
    "path": "demo/glfw_vulkan/main.c",
    "chars": 84790,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#include <limits.h>\n#include <stdbool.h>\n#include <stddef.h>\n#include <stdint.h>\n"
  },
  {
    "path": "demo/glfw_vulkan/nuklear_glfw_vulkan.h",
    "chars": 79930,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/glfw_vulkan/shaders/demo.frag",
    "chars": 245,
    "preview": "#version 450\n#extension GL_ARB_separate_shader_objects : enable\n\nlayout(binding = 0) uniform sampler2D overlay;\n\nlayout("
  },
  {
    "path": "demo/glfw_vulkan/shaders/demo.vert",
    "chars": 243,
    "preview": "#version 450\n#extension GL_ARB_separate_shader_objects : enable\n\nlayout (location = 0) out vec2 outUV;\n\nvoid main()\n{\n  "
  },
  {
    "path": "demo/glfw_vulkan/src/Makefile",
    "chars": 762,
    "preview": "create_shader_inlined_header: nuklearshaders/nuklear.vert.spv nuklearshaders/nuklear.frag.spv\n\tawk -v st='// NUKLEAR_SHA"
  },
  {
    "path": "demo/glfw_vulkan/src/README.md",
    "chars": 369,
    "preview": "Contrary to OpenGL Vulkan needs precompiled shaders in the SPIR-V format which makes it a bit more difficult to inline t"
  },
  {
    "path": "demo/glfw_vulkan/src/nuklear_glfw_vulkan.in.h",
    "chars": 59043,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/glfw_vulkan/src/nuklearshaders/nuklear.frag",
    "chars": 353,
    "preview": "#version 450\n#extension GL_ARB_separate_shader_objects : enable\n\nlayout(binding = 0, set = 1) uniform sampler2D currentT"
  },
  {
    "path": "demo/glfw_vulkan/src/nuklearshaders/nuklear.vert",
    "chars": 594,
    "preview": "#version 450\n#extension GL_ARB_separate_shader_objects : enable\n\nout gl_PerVertex {\n    vec4 gl_Position;\n};\n\nlayout(bin"
  },
  {
    "path": "demo/rawfb/nuklear_rawfb.h",
    "chars": 38780,
    "preview": "/*\n * MIT License\n *\n * Copyright (c) 2016-2017 Patrick Rudolph <siro@das-labor.org>\n *\n * Permission is hereby granted,"
  },
  {
    "path": "demo/rawfb/sdl/Makefile",
    "chars": 265,
    "preview": "CFLAGS+=`sdl2-config --cflags --libs`   -std=c89 -Wall -Wextra -pedantic -Wno-unused-function -O0 -g -fvisibility=hidden"
  },
  {
    "path": "demo/rawfb/sdl/main.c",
    "chars": 8652,
    "preview": "#include <SDL.h>\n#include <SDL_mouse.h>\n#include <SDL_keyboard.h>\n\n#ifndef MIN\n#define MIN(a,b) ((a) < (b) ? (a) : (b))\n"
  },
  {
    "path": "demo/rawfb/wayland/.gitignore",
    "chars": 24,
    "preview": "xdg-shell.c\nxdg-shell.h\n"
  },
  {
    "path": "demo/rawfb/wayland/Makefile",
    "chars": 591,
    "preview": "WAYLAND=`pkg-config wayland-client --cflags --libs`\nWAYLAND_SCANNER=wayland-scanner\nWAYLAND_PROTOCOLS_DIR=/usr/share/way"
  },
  {
    "path": "demo/rawfb/wayland/main.c",
    "chars": 19513,
    "preview": "#define _GNU_SOURCE // for O_TMPFILE\n#define NK_INCLUDE_FIXED_TYPES\n#define NK_INCLUDE_STANDARD_IO\n#define NK_INCLUDE_ST"
  },
  {
    "path": "demo/rawfb/x11/Makefile",
    "chars": 272,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -std=c89 -Wall -Wextra -pedantic -Wno-unused-function\n\nSRC = main.c\nOBJ = $(SRC:"
  },
  {
    "path": "demo/rawfb/x11/main.c",
    "chars": 8370,
    "preview": "/*\n * MIT License\n *\n * Copyright (c) 2016-2017 Patrick Rudolph <siro@das-labor.org>\n *\n * Permission is hereby granted,"
  },
  {
    "path": "demo/rawfb/x11/nuklear_xlib.h",
    "chars": 12507,
    "preview": "/*\n * MIT License\n *\n * Copyright (c) 2016-2017 Patrick Rudolph <siro@das-labor.org>\n *\n * Permission is hereby granted,"
  },
  {
    "path": "demo/sdl3_renderer/Makefile",
    "chars": 1486,
    "preview": "# this Makefile is specific to GNU Make and GCC'compatible compilers\n\nPKG_CONFIG := $(or\\\n    $(shell pkg-config --versi"
  },
  {
    "path": "demo/sdl3_renderer/main.c",
    "chars": 14659,
    "preview": "/* nuklear - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#include <s"
  },
  {
    "path": "demo/sdl3_renderer/nuklear_sdl3_renderer.h",
    "chars": 25317,
    "preview": "/* nuklear - public domain */\n\n/*\n * ==============================================================\n *\n *               "
  },
  {
    "path": "demo/sdl_opengl2/Makefile",
    "chars": 478,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -std=c89 -Wall -Wextra -pedantic -DSDL_DISABLE_IMMINTRIN_H\n\nSRC = main.c\nOBJ = $"
  },
  {
    "path": "demo/sdl_opengl2/main.c",
    "chars": 7434,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#i"
  },
  {
    "path": "demo/sdl_opengl2/nuklear_sdl_gl2.h",
    "chars": 14280,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2017 by Micha"
  },
  {
    "path": "demo/sdl_opengl3/Makefile",
    "chars": 504,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -g -std=c89 -Wall -Wextra -pedantic -DSDL_DISABLE_IMMINTRIN_H\n\nSRC = main.c\nOBJ "
  },
  {
    "path": "demo/sdl_opengl3/main.c",
    "chars": 8263,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#i"
  },
  {
    "path": "demo/sdl_opengl3/nuklear_sdl_gl3.h",
    "chars": 18170,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/sdl_opengles2/Makefile",
    "chars": 626,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -std=c89 -Wall -Wextra -pedantic -DSDL_DISABLE_IMMINTRIN_H\n\nSRC = main.c\nOBJ = $"
  },
  {
    "path": "demo/sdl_opengles2/Readme.md",
    "chars": 1276,
    "preview": "OpenGL ES\n=========\n\nOpenGL ES (OpenGL for Embedded Systems) it is a subset of OpenGL aimed to be simple and fast. It is"
  },
  {
    "path": "demo/sdl_opengles2/main.c",
    "chars": 7966,
    "preview": "/* nuklear - 1.40.8 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#i"
  },
  {
    "path": "demo/sdl_opengles2/nuklear_sdl_gles2.h",
    "chars": 18168,
    "preview": "/*\n * Nuklear - 1.40.8 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2017 by Micha"
  },
  {
    "path": "demo/sdl_renderer/Makefile",
    "chars": 537,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -std=c89 -Wall -Wextra -pedantic -O2 -DSDL_DISABLE_IMMINTRIN_H\nCFLAGS += `sdl2-c"
  },
  {
    "path": "demo/sdl_renderer/main.c",
    "chars": 8277,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#i"
  },
  {
    "path": "demo/sdl_renderer/nuklear_sdl_renderer.h",
    "chars": 15331,
    "preview": "/*\n * Nuklear - 4.9.4 - public domain\n */\n/*\n * ==============================================================\n *\n *    "
  },
  {
    "path": "demo/sdl_vulkan/.gitignore",
    "chars": 64,
    "preview": "src/nuklearshaders/*.spv\nsrc/nuklear_sdl_vulkan.h\nshaders/*.spv\n"
  },
  {
    "path": "demo/sdl_vulkan/Makefile",
    "chars": 711,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -std=c89 -Wall -Wextra -pedantic -fsanitize=address -O2\nCFLAGS += -DSDL_DISABLE_"
  },
  {
    "path": "demo/sdl_vulkan/README.md",
    "chars": 1997,
    "preview": "# nuklear sdl vulkan\n\n## Theory of operation\n\nThe nuklear SDL vulkan integration creates an independent graphics pipelin"
  },
  {
    "path": "demo/sdl_vulkan/main.c",
    "chars": 84820,
    "preview": "/* nuklear - 1.32.0 - public domain */\n#include <limits.h>\n#include <stdbool.h>\n#include <stddef.h>\n#include <stdint.h>\n"
  },
  {
    "path": "demo/sdl_vulkan/nuklear_sdl_vulkan.h",
    "chars": 74764,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warranty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/sdl_vulkan/shaders/demo.frag",
    "chars": 245,
    "preview": "#version 450\n#extension GL_ARB_separate_shader_objects : enable\n\nlayout(binding = 0) uniform sampler2D overlay;\n\nlayout("
  },
  {
    "path": "demo/sdl_vulkan/shaders/demo.vert",
    "chars": 243,
    "preview": "#version 450\n#extension GL_ARB_separate_shader_objects : enable\n\nlayout (location = 0) out vec2 outUV;\n\nvoid main()\n{\n  "
  },
  {
    "path": "demo/sdl_vulkan/src/Makefile",
    "chars": 759,
    "preview": "create_shader_inlined_header: nuklearshaders/nuklear.vert.spv nuklearshaders/nuklear.frag.spv\n\tawk -v st='// NUKLEAR_SHA"
  },
  {
    "path": "demo/sdl_vulkan/src/README.md",
    "chars": 368,
    "preview": "Contrary to OpenGL Vulkan needs precompiled shaders in the SPIR-V format which makes it a bit more difficult to inline t"
  },
  {
    "path": "demo/sdl_vulkan/src/nuklear_sdl_vulkan.in.h",
    "chars": 57570,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warranty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/sdl_vulkan/src/nuklearshaders/nuklear.frag",
    "chars": 353,
    "preview": "#version 450\n#extension GL_ARB_separate_shader_objects : enable\n\nlayout(binding = 0, set = 1) uniform sampler2D currentT"
  },
  {
    "path": "demo/sdl_vulkan/src/nuklearshaders/nuklear.vert",
    "chars": 594,
    "preview": "#version 450\n#extension GL_ARB_separate_shader_objects : enable\n\nout gl_PerVertex {\n    vec4 gl_Position;\n};\n\nlayout(bin"
  },
  {
    "path": "demo/sfml_opengl2/Makefile",
    "chars": 833,
    "preview": "# Install\nCC = g++\nBIN = demo\n\n# Flags\nCFLAGS += -s -Wall -Wextra -pedantic\n\nSRC = main.cpp\nOBJ = $(SRC:.cpp=.o)\n\nifeq ("
  },
  {
    "path": "demo/sfml_opengl2/Readme.md",
    "chars": 472,
    "preview": "# SFML 2.4 nuklear backend\n\nThis backend provides support for [SFML 2.4](http://www.sfml-dev.org). It will work on all p"
  },
  {
    "path": "demo/sfml_opengl2/main.cpp",
    "chars": 6766,
    "preview": "/* nuklear - v1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#"
  },
  {
    "path": "demo/sfml_opengl2/nuklear_sfml_gl2.h",
    "chars": 13872,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/sfml_opengl3/Makefile",
    "chars": 1033,
    "preview": "# Install\nCC = g++\nBIN = demo\n\n# Flags\nCFLAGS += -s -Wall -Wextra -pedantic\n\nSRC = main.cpp\nOBJ = $(SRC:.cpp=.o)\n\nifeq ("
  },
  {
    "path": "demo/sfml_opengl3/Readme.md",
    "chars": 27719,
    "preview": "# SFML 2.4 nuklear backend\n\nThis backend provides support for [SFML 2.4](http://www.sfml-dev.org). It will work on all p"
  },
  {
    "path": "demo/sfml_opengl3/main.cpp",
    "chars": 6988,
    "preview": "/* nuklear - v1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#"
  },
  {
    "path": "demo/sfml_opengl3/nuklear_sfml_gl3.h",
    "chars": 17787,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/x11/Makefile",
    "chars": 681,
    "preview": "# Install\nBIN = demo\n\n# Flags\nCFLAGS += -g -std=c89 -Wall -Wextra -pedantic -Wno-unused-function -D_POSIX_C_SOURCE=20080"
  },
  {
    "path": "demo/x11/main.c",
    "chars": 6901,
    "preview": "/* nuklear - v1.32.0 - public domain */\n#include <assert.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdarg.h>\n#"
  },
  {
    "path": "demo/x11/nuklear_xlib.h",
    "chars": 39300,
    "preview": "/*\n * Nuklear - v1.40.8 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2017 by Mich"
  },
  {
    "path": "demo/x11_opengl2/Makefile",
    "chars": 349,
    "preview": "# Install\nBIN = demo\n\n# Compiler\nCC ?= clang\nDCC = gcc\n\n# Flags\nCFLAGS += -std=c89 -Wall -Wextra -pedantic\n\nSRC = main.c"
  },
  {
    "path": "demo/x11_opengl2/main.c",
    "chars": 13277,
    "preview": "/* nuklear - v1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#"
  },
  {
    "path": "demo/x11_opengl2/nuklear_xlib_gl2.h",
    "chars": 14564,
    "preview": "/*\n * Nuklear - 1.32.0 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha"
  },
  {
    "path": "demo/x11_opengl3/Makefile",
    "chars": 349,
    "preview": "# Install\nBIN = demo\n\n# Compiler\nCC ?= clang\nDCC = gcc\n\n# Flags\nCFLAGS += -std=c89 -Wall -Wextra -pedantic\n\nSRC = main.c"
  },
  {
    "path": "demo/x11_opengl3/main.c",
    "chars": 13193,
    "preview": "/* nuklear - v1.32.0 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#"
  },
  {
    "path": "demo/x11_opengl3/nuklear_xlib_gl3.h",
    "chars": 28465,
    "preview": "/*\n * Nuklear - v1.17 - public domain\n * no warrenty implied; use at your own risk.\n * authored from 2015-2016 by Micha "
  },
  {
    "path": "demo/xcb_cairo/Makefile",
    "chars": 627,
    "preview": "# Target\nBIN = demo\nCFLAGS += -std=c89 -pedantic\nLDFLAGS += -lm\nSRC = ${wildcard *.c}\nOBJ = $(SRC:.c=.o)\n\n# Freetype\nCFL"
  },
  {
    "path": "demo/xcb_cairo/main.c",
    "chars": 5106,
    "preview": "/* nuklear - v1.32.0 - public domain */\n#include <assert.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdarg.h>\n#"
  },
  {
    "path": "demo/xcb_cairo/nuklear_xcb.h",
    "chars": 38098,
    "preview": "/*****************************************************************************\n *\n * Nuklear XCB/Cairo Render Backend - "
  },
  {
    "path": "example/Makefile",
    "chars": 1049,
    "preview": "# Flags\nCFLAGS += -std=c99 -Wall -Wextra -pedantic -Wno-misleading-indentation -Wno-shift-negative-value\nLIBS :=\n\nifeq ("
  },
  {
    "path": "example/canvas.c",
    "chars": 18643,
    "preview": "/* nuklear - v1.05 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#in"
  },
  {
    "path": "example/extended.c",
    "chars": 34801,
    "preview": "/* nuklear - v1.05 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#in"
  },
  {
    "path": "example/file_browser.c",
    "chars": 31303,
    "preview": "/* nuklear - v1.05 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#in"
  },
  {
    "path": "example/skinning.c",
    "chars": 38105,
    "preview": "/* nuklear - v1.05 - public domain */\n#include <stdio.h>\n#include <stdlib.h>\n#include <stdint.h>\n#include <stdarg.h>\n#in"
  },
  {
    "path": "example/stb_image.h",
    "chars": 222899,
    "preview": "/* stb_image - v2.08 - public domain image loader - http://nothings.org/stb_image.h\n                                    "
  },
  {
    "path": "nuklear.h",
    "chars": 1195213,
    "preview": "/*\n# Nuklear\n![](https://cloud.githubusercontent.com/assets/8057201/11761525/ae06f0ca-a0c6-11e5-819d-5610b25f6ef4.gif)\n\n"
  },
  {
    "path": "src/CHANGELOG",
    "chars": 28764,
    "preview": "/// ## Changelog\n/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~none\n/// [date] ([x.y.z]) - [description]\n/// - [date]: date on wh"
  },
  {
    "path": "src/CREDITS",
    "chars": 2403,
    "preview": "/// ## Gallery\n/// ![Figure [blue]: Feature overview with blue color styling](https://cloud.githubusercontent.com/assets"
  },
  {
    "path": "src/HEADER.md",
    "chars": 12147,
    "preview": "# Nuklear\n![](https://cloud.githubusercontent.com/assets/8057201/11761525/ae06f0ca-a0c6-11e5-819d-5610b25f6ef4.gif)\n\n## "
  },
  {
    "path": "src/LICENSE",
    "chars": 3042,
    "preview": "/// ## License\n/// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~none\n///    --------------------------------------------------------"
  },
  {
    "path": "src/Readme.md",
    "chars": 104,
    "preview": "File Packer:\n------------\n- On Linux/Mac just run ./paq.sh > ../nuklear.h\n- On Windows just run paq.bat\n"
  },
  {
    "path": "src/build.py",
    "chars": 4606,
    "preview": "\nimport fnmatch\nimport os.path\nimport sys\nimport re\n\ndef print_help():\n    print(\n\"\"\"usage: python single_header_packer."
  },
  {
    "path": "src/nuklear.h",
    "chars": 247106,
    "preview": "/** \\file nuklear.h\n * \\brief main API and documentation file\n *\n * \\details\n */\n#ifndef NK_NUKLEAR_H_\n#define NK_NUKLEA"
  },
  {
    "path": "src/nuklear_9slice.c",
    "chars": 3083,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_buffer.c",
    "chars": 7886,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ==============================================================\n *"
  },
  {
    "path": "src/nuklear_button.c",
    "chars": 25093,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ==============================================================\n *"
  },
  {
    "path": "src/nuklear_chart.c",
    "chars": 11614,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ==============================================================\n *"
  },
  {
    "path": "src/nuklear_color.c",
    "chars": 10857,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ==============================================================\n *"
  },
  {
    "path": "src/nuklear_color_picker.c",
    "chars": 6881,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ==============================================================\n *"
  },
  {
    "path": "src/nuklear_combo.c",
    "chars": 33831,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ==============================================================\n *"
  },
  {
    "path": "src/nuklear_context.c",
    "chars": 10220,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ==============================================================\n *"
  },
  {
    "path": "src/nuklear_contextual.c",
    "chars": 7444,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ==============================================================\n *"
  },
  {
    "path": "src/nuklear_draw.c",
    "chars": 18296,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ==============================================================\n *"
  },
  {
    "path": "src/nuklear_edit.c",
    "chars": 31993,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_font.c",
    "chars": 59566,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n#ifdef NK_INCLUDE_FONT_BAKING\n/* -----------------------------------"
  },
  {
    "path": "src/nuklear_group.c",
    "chars": 7879,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_image.c",
    "chars": 3224,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_input.c",
    "chars": 8309,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_internal.h",
    "chars": 23698,
    "preview": "#ifndef NK_INTERNAL_H\n#define NK_INTERNAL_H\n\n#ifndef NK_POOL_DEFAULT_CAPACITY\n#define NK_POOL_DEFAULT_CAPACITY 16\n#endif"
  },
  {
    "path": "src/nuklear_knob.c",
    "chars": 9301,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_layout.c",
    "chars": 24029,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_list_view.c",
    "chars": 2633,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_math.c",
    "chars": 9154,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_menu.c",
    "chars": 10035,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_page_element.c",
    "chars": 2026,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_panel.c",
    "chars": 26063,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_pool.c",
    "chars": 2140,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_popup.c",
    "chars": 7777,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_progress.c",
    "chars": 5961,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_property.c",
    "chars": 20155,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_scrollbar.c",
    "chars": 12030,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_selectable.c",
    "chars": 12035,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_slider.c",
    "chars": 9480,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_string.c",
    "chars": 12139,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_style.c",
    "chars": 36754,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_table.c",
    "chars": 2436,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_text.c",
    "chars": 9053,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_text_editor.c",
    "chars": 35461,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_toggle.c",
    "chars": 15919,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_tooltip.c",
    "chars": 4957,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_tree.c",
    "chars": 13138,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_utf8.c",
    "chars": 3640,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_util.c",
    "chars": 33147,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_vertex.c",
    "chars": 53575,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_widget.c",
    "chars": 14136,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/nuklear_window.c",
    "chars": 22012,
    "preview": "#include \"nuklear.h\"\n#include \"nuklear_internal.h\"\n\n/* ===============================================================\n "
  },
  {
    "path": "src/paq.bat",
    "chars": 897,
    "preview": "build.py --macro NK --intro HEADER.md --pub nuklear.h --priv1 nuklear_internal.h,nuklear_math.c,nuklear_util.c,nuklear_c"
  },
  {
    "path": "src/paq.sh",
    "chars": 915,
    "preview": "#!/bin/sh\npython3 build.py --macro NK --intro HEADER.md --pub nuklear.h --priv1 nuklear_internal.h,nuklear_math.c,nuklea"
  },
  {
    "path": "src/stb_rect_pack.h",
    "chars": 20201,
    "preview": "// stb_rect_pack.h - v1.01 - public domain - rectangle packing\n// Sean Barrett 2014\n//\n// Useful for e.g. packing rectan"
  },
  {
    "path": "src/stb_truetype.h",
    "chars": 199054,
    "preview": "// stb_truetype.h - v1.26 - public domain\n// authored from 2009-2021 by Sean Barrett / RAD Game Tools\n//\n// ============"
  }
]

About this extraction

This page contains the full source code of the Immediate-Mode-UI/Nuklear GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 191 files (4.4 MB), approximately 1.2M tokens, and a symbol index with 6116 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!