From 790b3aac7676a49f59a434ea136eb64191a98a2f Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Wed, 30 Aug 2017 23:16:19 +0000 Subject: libgd 2.2.5 git-svn-id: svn://tug.org/texlive/trunk@45180 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/libs/README | 2 +- Build/source/libs/gd/ChangeLog | 5 + Build/source/libs/gd/README | 4 +- Build/source/libs/gd/TLpatches/ChangeLog | 7 + Build/source/libs/gd/TLpatches/TL-Changes | 2 +- Build/source/libs/gd/TLpatches/patch-01-win32 | 6 +- Build/source/libs/gd/TLpatches/patch-02-no-stdcall | 6 +- Build/source/libs/gd/configure | 20 +- Build/source/libs/gd/libgd-src/CHANGELOG.md | 72 + Build/source/libs/gd/libgd-src/CMakeLists.txt | 6 +- Build/source/libs/gd/libgd-src/Makefile.am | 2 +- .../docs/naturaldocs/html/files/gd-c.html | 206 +++ .../docs/naturaldocs/html/files/gd-h.html | 173 +++ .../docs/naturaldocs/html/files/gd_bmp-c.html | 53 + .../naturaldocs/html/files/gd_color_map-c.html | 39 + .../naturaldocs/html/files/gd_color_match-c.html | 39 + .../docs/naturaldocs/html/files/gd_crop-c.html | 52 + .../docs/naturaldocs/html/files/gd_filename-c.html | 47 + .../docs/naturaldocs/html/files/gd_filter-c.html | 81 ++ .../docs/naturaldocs/html/files/gd_gd-c.html | 57 + .../docs/naturaldocs/html/files/gd_gd2-c.html | 63 + .../docs/naturaldocs/html/files/gd_gif_in-c.html | 54 + .../docs/naturaldocs/html/files/gd_gif_out-c.html | 124 ++ .../naturaldocs/html/files/gd_interpolation-c.html | 57 + .../docs/naturaldocs/html/files/gd_io-h.html | 56 + .../docs/naturaldocs/html/files/gd_io_dp-c.html | 47 + .../docs/naturaldocs/html/files/gd_io_file-c.html | 39 + .../docs/naturaldocs/html/files/gd_io_ss-c.html | 39 + .../docs/naturaldocs/html/files/gd_jpeg-c.html | 83 ++ .../docs/naturaldocs/html/files/gd_matrix-c.html | 65 + .../docs/naturaldocs/html/files/gd_nnquant-c.html | 39 + .../docs/naturaldocs/html/files/gd_png-c.html | 77 + .../docs/naturaldocs/html/files/gd_ss-c.html | 45 + .../docs/naturaldocs/html/files/gd_tga-c.html | 47 + .../docs/naturaldocs/html/files/gd_tiff-c.html | 53 + .../docs/naturaldocs/html/files/gd_topal-c.html | 49 + .../naturaldocs/html/files/gd_transform-c.html | 47 + .../docs/naturaldocs/html/files/gd_version-c.html | 51 + .../docs/naturaldocs/html/files/gd_wbmp-c.html | 59 + .../docs/naturaldocs/html/files/gd_webp-c.html | 57 + .../docs/naturaldocs/html/files/gd_xbm-c.html | 51 + .../docs/naturaldocs/html/files/gdfontg-c.html | 43 + .../docs/naturaldocs/html/files/gdfontl-c.html | 43 + .../docs/naturaldocs/html/files/gdfontmb-c.html | 43 + .../docs/naturaldocs/html/files/gdfonts-c.html | 43 + .../docs/naturaldocs/html/files/gdfontt-c.html | 43 + .../docs/naturaldocs/html/files/gdft-c.html | 70 + .../docs/naturaldocs/html/files/gdfx-c.html | 47 + .../docs/naturaldocs/html/files/gdhelpers-c.html | 39 + .../docs/naturaldocs/html/files/gdxpm-c.html | 49 + .../docs/naturaldocs/html/files/license-txt.html | 39 + .../docs/naturaldocs/html/files/preamble-txt.html | 89 ++ .../naturaldocs/html/images/edge_detect_quick.jpg | Bin 0 -> 22444 bytes .../docs/naturaldocs/html/images/emboss.jpg | Bin 0 -> 20811 bytes .../docs/naturaldocs/html/images/mean_removal.jpg | Bin 0 -> 27366 bytes .../docs/naturaldocs/html/images/smooth.jpg | Bin 0 -> 15528 bytes .../gd/libgd-src/docs/naturaldocs/html/index.html | 1 + .../docs/naturaldocs/html/index/Constants.html | 38 + .../docs/naturaldocs/html/index/Files.html | 82 ++ .../docs/naturaldocs/html/index/Functions.html | 34 + .../docs/naturaldocs/html/index/General.html | 54 + .../docs/naturaldocs/html/index/General2.html | 34 + .../docs/naturaldocs/html/index/General3.html | 70 + .../docs/naturaldocs/html/index/Macros.html | 34 + .../docs/naturaldocs/html/index/Types.html | 34 + .../docs/naturaldocs/html/javascript/main.js | 841 +++++++++++ .../docs/naturaldocs/html/javascript/prettify.js | 1526 ++++++++++++++++++++ .../docs/naturaldocs/html/javascript/searchdata.js | 182 +++ .../docs/naturaldocs/html/search/ConstantsG.html | 20 + .../docs/naturaldocs/html/search/ConstantsS.html | 20 + .../docs/naturaldocs/html/search/FilesB.html | 20 + .../docs/naturaldocs/html/search/FilesC.html | 20 + .../docs/naturaldocs/html/search/FilesF.html | 20 + .../docs/naturaldocs/html/search/FilesG.html | 20 + .../docs/naturaldocs/html/search/FilesI.html | 20 + .../docs/naturaldocs/html/search/FilesJ.html | 20 + .../docs/naturaldocs/html/search/FilesL.html | 20 + .../docs/naturaldocs/html/search/FilesM.html | 20 + .../docs/naturaldocs/html/search/FilesP.html | 20 + .../docs/naturaldocs/html/search/FilesS.html | 20 + .../docs/naturaldocs/html/search/FilesT.html | 20 + .../docs/naturaldocs/html/search/FilesW.html | 20 + .../docs/naturaldocs/html/search/FilesX.html | 20 + .../docs/naturaldocs/html/search/FunctionsG.html | 20 + .../docs/naturaldocs/html/search/GeneralA.html | 20 + .../docs/naturaldocs/html/search/GeneralB.html | 20 + .../docs/naturaldocs/html/search/GeneralC.html | 20 + .../docs/naturaldocs/html/search/GeneralE.html | 20 + .../docs/naturaldocs/html/search/GeneralF.html | 20 + .../docs/naturaldocs/html/search/GeneralG.html | 20 + .../docs/naturaldocs/html/search/GeneralI.html | 20 + .../docs/naturaldocs/html/search/GeneralJ.html | 20 + .../docs/naturaldocs/html/search/GeneralL.html | 20 + .../docs/naturaldocs/html/search/GeneralM.html | 20 + .../naturaldocs/html/search/GeneralNumbers.html | 20 + .../docs/naturaldocs/html/search/GeneralO.html | 20 + .../docs/naturaldocs/html/search/GeneralP.html | 20 + .../docs/naturaldocs/html/search/GeneralS.html | 20 + .../docs/naturaldocs/html/search/GeneralT.html | 20 + .../docs/naturaldocs/html/search/GeneralW.html | 20 + .../docs/naturaldocs/html/search/GeneralX.html | 20 + .../docs/naturaldocs/html/search/MacrosG.html | 20 + .../docs/naturaldocs/html/search/NoResults.html | 15 + .../docs/naturaldocs/html/search/TypesG.html | 20 + .../libgd-src/docs/naturaldocs/html/styles/1.css | 828 +++++++++++ .../libgd-src/docs/naturaldocs/html/styles/2.css | 9 + .../docs/naturaldocs/html/styles/main.css | 2 + .../naturaldocs/project/Data/ClassHierarchy.nd | Bin 0 -> 7 bytes .../naturaldocs/project/Data/ConfigFileInfo.nd | Bin 0 -> 26 bytes .../docs/naturaldocs/project/Data/FileInfo.nd | 95 ++ .../docs/naturaldocs/project/Data/ImageFileInfo.nd | Bin 0 -> 245 bytes .../project/Data/ImageReferenceTable.nd | Bin 0 -> 654 bytes .../docs/naturaldocs/project/Data/IndexInfo.nd | Bin 0 -> 222 bytes .../naturaldocs/project/Data/PreviousMenuState.nd | Bin 0 -> 2657 bytes .../naturaldocs/project/Data/PreviousSettings.nd | Bin 0 -> 96 bytes .../docs/naturaldocs/project/Data/SymbolTable.nd | Bin 0 -> 77342 bytes .../docs/naturaldocs/project/Languages.txt | 113 ++ .../gd/libgd-src/docs/naturaldocs/project/Menu.txt | 11 +- .../libgd-src/docs/naturaldocs/project/Topics.txt | 81 ++ Build/source/libs/gd/libgd-src/src/config.h.cmake | 5 +- Build/source/libs/gd/libgd-src/src/gd.h | 2 +- Build/source/libs/gd/libgd-src/src/gd_bmp.c | 16 +- Build/source/libs/gd/libgd-src/src/gd_filter.c | 12 + Build/source/libs/gd/libgd-src/src/gd_gd2.c | 7 +- Build/source/libs/gd/libgd-src/src/gd_gif_in.c | 3 + Build/source/libs/gd/libgd-src/src/gd_io_dp.c | 7 + Build/source/libs/gd/libgd-src/src/gd_jpeg.c | 2 +- Build/source/libs/gd/libgd-src/src/gd_png.c | 41 +- Build/source/libs/gd/libgd-src/src/gd_tiff.c | 39 +- Build/source/libs/gd/libgd-src/src/gd_xbm.c | 26 +- Build/source/libs/gd/libgd-src/src/webpng.c | 6 +- .../libs/gd/libgd-src/tests/bmp/CMakeLists.txt | 9 +- .../libs/gd/libgd-src/tests/bmp/Makemodule.am | 6 +- .../gd/libgd-src/tests/fontconfig/CMakeLists.txt | 6 +- .../gd/libgd-src/tests/freetype/CMakeLists.txt | 4 +- .../libs/gd/libgd-src/tests/freetype/Makemodule.am | 2 + .../libs/gd/libgd-src/tests/freetype/bug00132.c | 3 + .../libs/gd/libgd-src/tests/gd/CMakeLists.txt | 9 +- .../libs/gd/libgd-src/tests/gd2/CMakeLists.txt | 19 +- .../libs/gd/libgd-src/tests/gd2/Makemodule.am | 2 + .../source/libs/gd/libgd-src/tests/gd2/bug00209.c | 28 + .../libs/gd/libgd-src/tests/gd2/bug00209.gd2 | Bin 0 -> 1050 bytes .../source/libs/gd/libgd-src/tests/gd2/gd2_read.c | 6 +- .../gd/libgd-src/tests/gdimagearc/CMakeLists.txt | 4 +- .../tests/gdimagebrightness/CMakeLists.txt | 2 + .../gd/libgd-src/tests/gdimagecolor/CMakeLists.txt | 2 + .../tests/gdimagecolorclosest/CMakeLists.txt | 4 +- .../tests/gdimagecolordeallocate/CMakeLists.txt | 2 +- .../tests/gdimagecolorexact/CMakeLists.txt | 4 +- .../tests/gdimagecolorreplace/CMakeLists.txt | 4 +- .../tests/gdimagecolorresolve/CMakeLists.txt | 4 +- .../tests/gdimagecolortransparent/CMakeLists.txt | 2 +- .../libgd-src/tests/gdimagecontrast/CMakeLists.txt | 2 + .../tests/gdimageconvolution/CMakeLists.txt | 2 + .../gd/libgd-src/tests/gdimagecopy/CMakeLists.txt | 7 +- .../tests/gdimagecopyresampled/CMakeLists.txt | 2 + .../tests/gdimagecopyrotated/CMakeLists.txt | 4 +- .../gd/libgd-src/tests/gdimagefile/CMakeLists.txt | 6 +- .../gd/libgd-src/tests/gdimagefile/Makemodule.am | 4 + .../gd/libgd-src/tests/gdimagefile/gdnametest.c | 17 +- .../gd/libgd-src/tests/gdimagefill/CMakeLists.txt | 4 +- .../tests/gdimagefilledarc/CMakeLists.txt | 2 + .../tests/gdimagefilledellipse/CMakeLists.txt | 4 +- .../tests/gdimagefilledpolygon/CMakeLists.txt | 4 +- .../tests/gdimagefilledrectangle/CMakeLists.txt | 2 +- .../tests/gdimagefilltoborder/CMakeLists.txt | 4 +- .../libgd-src/tests/gdimagefilter/CMakeLists.txt | 2 +- .../gd/libgd-src/tests/gdimageflip/CMakeLists.txt | 2 + .../gd/libgd-src/tests/gdimageflip/gdimageflip.c | 2 +- .../tests/gdimagegrayscale/CMakeLists.txt | 3 + .../libgd-src/tests/gdimagegrayscale/Makemodule.am | 6 +- .../gd/libgd-src/tests/gdimagegrayscale/bug00386.c | 51 + .../libgd-src/tests/gdimagegrayscale/bug00386.png | Bin 0 -> 2436 bytes .../gd/libgd-src/tests/gdimageline/CMakeLists.txt | 14 +- .../libgd-src/tests/gdimagenegate/CMakeLists.txt | 2 + .../tests/gdimageopenpolygon/CMakeLists.txt | 4 +- .../libgd-src/tests/gdimagepixelate/CMakeLists.txt | 2 +- .../libgd-src/tests/gdimagepolygon/CMakeLists.txt | 4 +- .../tests/gdimagerectangle/CMakeLists.txt | 9 +- .../libgd-src/tests/gdimagerectangle/Makemodule.am | 6 +- .../libgd-src/tests/gdimagerotate/CMakeLists.txt | 9 +- .../gd/libgd-src/tests/gdimagerotate/Makemodule.am | 2 +- .../gd/libgd-src/tests/gdimagescale/CMakeLists.txt | 2 +- .../gd/libgd-src/tests/gdimagescale/Makemodule.am | 1 - .../tests/gdimagescatterex/CMakeLists.txt | 4 +- .../libgd-src/tests/gdimagesetpixel/CMakeLists.txt | 9 +- .../libgd-src/tests/gdimagesetpixel/Makemodule.am | 6 +- .../libgd-src/tests/gdimagestringft/CMakeLists.txt | 6 +- .../libgd-src/tests/gdimagestringft/Makemodule.am | 2 + .../tests/gdimagestringft/gdimagestringft_bbox.c | 3 + .../tests/gdimagestringftex/CMakeLists.txt | 2 +- .../tests/gdimagetruecolortopalette/Makemodule.am | 1 - .../tests/gdinterpolatedscale/CMakeLists.txt | 2 +- .../gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt | 2 +- .../source/libs/gd/libgd-src/tests/gdtest/gdtest.c | 12 +- .../libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt | 6 +- .../gdtransformaffineboundingbox/CMakeLists.txt | 2 +- .../gdtransformaffineboundingbox/Makemodule.am | 1 - .../libs/gd/libgd-src/tests/gif/CMakeLists.txt | 16 +- .../libs/gd/libgd-src/tests/gif/Makemodule.am | 6 +- .../tests/gif/uninitialized_memory_read.c | 42 + .../tests/gif/unitialized_memory_read.gif | Bin 0 -> 11464 bytes .../libs/gd/libgd-src/tests/jpeg/CMakeLists.txt | 12 +- .../libs/gd/libgd-src/tests/jpeg/Makemodule.am | 3 +- .../source/libs/gd/libgd-src/tests/jpeg/bug00338.c | 51 + .../libs/gd/libgd-src/tests/png/CMakeLists.txt | 5 +- .../libs/gd/libgd-src/tests/png/Makemodule.am | 4 + .../source/libs/gd/libgd-src/tests/png/bug00338.c | 48 + .../libs/gd/libgd-src/tests/png/bug00381_1.c | 31 + .../libs/gd/libgd-src/tests/png/bug00381_2.c | 35 + .../libs/gd/libgd-src/tests/png/bug00381_2.gd | Bin 0 -> 10008 bytes .../libs/gd/libgd-src/tests/tga/CMakeLists.txt | 9 +- .../libs/gd/libgd-src/tests/tga/Makemodule.am | 6 +- .../libs/gd/libgd-src/tests/tiff/CMakeLists.txt | 3 +- .../libs/gd/libgd-src/tests/tiff/Makemodule.am | 7 +- .../source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c | 10 +- .../libs/gd/libgd-src/tests/tiff/tiff_im2im.c | 9 - .../libs/gd/libgd-src/tests/tiff/tiff_null.c | 9 - .../libs/gd/libgd-src/tests/tiff/tiff_read_bw.c | 26 + .../libs/gd/libgd-src/tests/tiff/tiff_read_bw.tiff | Bin 0 -> 606 bytes .../gd/libgd-src/tests/tiff/tiff_read_bw_exp.png | Bin 0 -> 330 bytes .../libs/gd/libgd-src/tests/wbmp/CMakeLists.txt | 9 +- .../libs/gd/libgd-src/tests/webp/CMakeLists.txt | 2 +- .../libs/gd/libgd-src/tests/xbm/CMakeLists.txt | 4 + .../libs/gd/libgd-src/tests/xbm/Makemodule.am | 12 +- .../libs/gd/libgd-src/tests/xbm/github_bug_109.c | 35 + .../libs/gd/libgd-src/tests/xbm/github_bug_109.xbm | 5 + .../gd/libgd-src/tests/xbm/github_bug_109_exp.png | Bin 0 -> 111 bytes .../libs/gd/libgd-src/tests/xbm/x10_basic_read.c | 32 + .../libs/gd/libgd-src/tests/xbm/x10_basic_read.xbm | 4 + .../gd/libgd-src/tests/xbm/x10_basic_read_exp.png | Bin 0 -> 112 bytes .../libs/gd/libgd-src/tests/xpm/CMakeLists.txt | 2 +- Build/source/libs/gd/libgd-src/windows/Makefile.vc | 54 +- Build/source/libs/gd/libgd-src/windows/gentest.bat | 68 +- Build/source/libs/gd/libgd-src/windows/readme.md | 64 +- .../source/libs/gd/libgd-src/windows/run_tests.bat | 69 +- Build/source/libs/gd/version.ac | 2 +- 237 files changed, 8347 insertions(+), 291 deletions(-) create mode 100644 Build/source/libs/gd/libgd-src/CHANGELOG.md create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-h.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_bmp-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_map-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_match-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_crop-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filename-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filter-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd2-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_in-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_out-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_interpolation-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io-h.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_dp-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_file-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_ss-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_jpeg-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_matrix-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_nnquant-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_png-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_ss-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tga-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tiff-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_topal-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_transform-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_version-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_wbmp-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_webp-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_xbm-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontg-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontl-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontmb-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfonts-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontt-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdft-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfx-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdhelpers-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdxpm-c.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/license-txt.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/preamble-txt.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/edge_detect_quick.jpg create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/emboss.jpg create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/mean_removal.jpg create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/smooth.jpg create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Constants.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Files.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Functions.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General2.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General3.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Macros.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Types.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/main.js create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/prettify.js create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/searchdata.js create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsG.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsS.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesB.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesC.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesF.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesG.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesI.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesJ.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesL.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesM.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesP.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesS.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesT.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesW.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesX.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FunctionsG.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralA.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralB.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralC.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralE.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralF.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralG.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralI.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralJ.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralL.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralM.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralNumbers.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralO.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralP.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralS.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralT.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralW.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralX.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/MacrosG.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/NoResults.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/TypesG.html create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/1.css create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/2.css create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/main.css create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ClassHierarchy.nd create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ConfigFileInfo.nd create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/FileInfo.nd create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageFileInfo.nd create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageReferenceTable.nd create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/IndexInfo.nd create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousMenuState.nd create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousSettings.nd create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/SymbolTable.nd create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Languages.txt create mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Topics.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gd2/bug00209.gd2 create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gif/uninitialized_memory_read.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gif/unitialized_memory_read.gif create mode 100644 Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c create mode 100644 Build/source/libs/gd/libgd-src/tests/png/bug00338.c create mode 100644 Build/source/libs/gd/libgd-src/tests/png/bug00381_1.c create mode 100644 Build/source/libs/gd/libgd-src/tests/png/bug00381_2.c create mode 100644 Build/source/libs/gd/libgd-src/tests/png/bug00381_2.gd create mode 100644 Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c create mode 100644 Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.tiff create mode 100644 Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c create mode 100644 Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.xbm create mode 100644 Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c create mode 100644 Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.xbm create mode 100644 Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read_exp.png (limited to 'Build/source') diff --git a/Build/source/libs/README b/Build/source/libs/README index 4eac825bfd7..b28a6a577e7 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -15,7 +15,7 @@ cairo 1.14.10 - checked 20jun17 freetype2 2.8.0 - checked 20jun17 http://savannah.nongnu.org/download/freetype/ -gd 2.2.4 - checked 18jan17 +gd 2.2.5 - checked 30aug17 https://github.com/libgd/libgd/releases gmp 6.1.2 - checked 16dec16 diff --git a/Build/source/libs/gd/ChangeLog b/Build/source/libs/gd/ChangeLog index eac43050676..24b8ba21d6d 100644 --- a/Build/source/libs/gd/ChangeLog +++ b/Build/source/libs/gd/ChangeLog @@ -1,3 +1,8 @@ +2017-08-30 Akira Kakuto + + Import libgd-2.2.5. + * version.ac: Adapted. + 2017-01-18 Akira Kakuto Import libgd-2.2.4. diff --git a/Build/source/libs/gd/README b/Build/source/libs/gd/README index c7ad44851a0..9bd12699112 100644 --- a/Build/source/libs/gd/README +++ b/Build/source/libs/gd/README @@ -1,4 +1,4 @@ - Building libgd-2.2.4 as part of the TL tree + Building libgd-2.2.5 as part of the TL tree ========================================= This directory libs/gd/ uses a proxy Makefile.am to build the gd library @@ -11,4 +11,4 @@ been copied to libs/gd/configure.ac. ============================= 2013-06-26 Peter Breitenlohner -2017-01-18 Akira Kakuto +2017-08-30 Akira Kakuto diff --git a/Build/source/libs/gd/TLpatches/ChangeLog b/Build/source/libs/gd/TLpatches/ChangeLog index db52775694e..31121f5ca1f 100644 --- a/Build/source/libs/gd/TLpatches/ChangeLog +++ b/Build/source/libs/gd/TLpatches/ChangeLog @@ -1,3 +1,10 @@ +2017-08-30 Akira Kakuto + + Import libgd-2.2.5 source tree from: + https://github.com/libgd/libgd/releases + * patch-01-win32: Adapted. + * patch-02-no-stdcall: Adapted. + 2017-01-18 Akira Kakuto Import libgd-2.2.4 source tree from: diff --git a/Build/source/libs/gd/TLpatches/TL-Changes b/Build/source/libs/gd/TLpatches/TL-Changes index 21b8cec668a..921ec63987b 100644 --- a/Build/source/libs/gd/TLpatches/TL-Changes +++ b/Build/source/libs/gd/TLpatches/TL-Changes @@ -1,4 +1,4 @@ -Changes applied to the libgd-2.2.4/ tree as obtained from: +Changes applied to the libgd-2.2.5/ tree as obtained from: https://github.com/libgd/libgd/releases Removed: diff --git a/Build/source/libs/gd/TLpatches/patch-01-win32 b/Build/source/libs/gd/TLpatches/patch-01-win32 index 814ed38e1e9..1f20e4d53ae 100644 --- a/Build/source/libs/gd/TLpatches/patch-01-win32 +++ b/Build/source/libs/gd/TLpatches/patch-01-win32 @@ -1,6 +1,6 @@ -diff -ur libgd-2.2.4.orig/src/gdft.c libgd-2.2.4/src/gdft.c ---- libgd-2.2.4.orig/src/gdft.c Wed Jan 18 20:01:19 2017 -+++ libgd-2.2.4/src/gdft.c Thu Jan 19 07:20:24 2017 +diff -ur libgd-2.2.5.orig/src/gdft.c libgd-2.2.5/src/gdft.c +--- libgd-2.2.5.orig/src/gdft.c Wed Aug 30 20:05:55 2017 ++++ libgd-2.2.5/src/gdft.c Thu Aug 31 07:35:10 2017 @@ -1683,6 +1683,16 @@ */ *fontpath = NULL; diff --git a/Build/source/libs/gd/TLpatches/patch-02-no-stdcall b/Build/source/libs/gd/TLpatches/patch-02-no-stdcall index efde64e3ccf..e3d283599bb 100644 --- a/Build/source/libs/gd/TLpatches/patch-02-no-stdcall +++ b/Build/source/libs/gd/TLpatches/patch-02-no-stdcall @@ -1,6 +1,6 @@ -diff -ur libgd-2.2.4.orig/src/gd.h libgd-2.2.4/src/gd.h ---- libgd-2.2.4.orig/src/gd.h Wed Jan 18 20:01:19 2017 -+++ libgd-2.2.4/src/gd.h Thu Jan 19 07:22:18 2017 +diff -ur libgd-2.2.5.orig/src/gd.h libgd-2.2.5/src/gd.h +--- libgd-2.2.5.orig/src/gd.h Wed Aug 30 20:05:54 2017 ++++ libgd-2.2.5/src/gd.h Thu Aug 31 07:36:57 2017 @@ -63,7 +63,7 @@ # define BGD_EXPORT_DATA_PROT __declspec(dllimport) # endif diff --git a/Build/source/libs/gd/configure b/Build/source/libs/gd/configure index 3de2d3fd573..1ba48755a20 100755 --- a/Build/source/libs/gd/configure +++ b/Build/source/libs/gd/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gd (TeX Live) 2.2.4. +# Generated by GNU Autoconf 2.69 for gd (TeX Live) 2.2.5. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='gd (TeX Live)' PACKAGE_TARNAME='gd--tex-live-' -PACKAGE_VERSION='2.2.4' -PACKAGE_STRING='gd (TeX Live) 2.2.4' +PACKAGE_VERSION='2.2.5' +PACKAGE_STRING='gd (TeX Live) 2.2.5' PACKAGE_BUGREPORT='tex-k@tug.org' PACKAGE_URL='' @@ -1306,7 +1306,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gd (TeX Live) 2.2.4 to adapt to many kinds of systems. +\`configure' configures gd (TeX Live) 2.2.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1376,7 +1376,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gd (TeX Live) 2.2.4:";; + short | recursive ) echo "Configuration of gd (TeX Live) 2.2.5:";; esac cat <<\_ACEOF @@ -1485,7 +1485,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gd (TeX Live) configure 2.2.4 +gd (TeX Live) configure 2.2.5 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1908,7 +1908,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gd (TeX Live) $as_me 2.2.4, which was +It was created by gd (TeX Live) $as_me 2.2.5, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3831,7 +3831,7 @@ fi # Define the identity of the package. PACKAGE='gd--tex-live-' - VERSION='2.2.4' + VERSION='2.2.5' cat >>confdefs.h <<_ACEOF @@ -6569,7 +6569,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gd (TeX Live) $as_me 2.2.4, which was +This file was extended by gd (TeX Live) $as_me 2.2.5, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6635,7 +6635,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -gd (TeX Live) config.status 2.2.4 +gd (TeX Live) config.status 2.2.5 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/Build/source/libs/gd/libgd-src/CHANGELOG.md b/Build/source/libs/gd/libgd-src/CHANGELOG.md new file mode 100644 index 00000000000..aa31ecd1250 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/CHANGELOG.md @@ -0,0 +1,72 @@ +# Change Log +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/) +and this project adheres to [Semantic Versioning](http://semver.org/). + +## [2.2.5] - 2017-08-30 + +### Security +- Double-free in gdImagePngPtr(). (CVE-2017-6362) +- Buffer over-read into uninitialized memory. (CVE-2017-7890) + +### Fixed +- Fix #109: XBM reading fails with printed error +- Fix #338: Fatal and normal libjpeg/ibpng errors not distinguishable +- Fix #357: 2.2.4: Segfault in test suite +- Fix #386: gdImageGrayScale() may produce colors +- Fix #406: webpng -i removes the transparent color +- Fix Coverity #155475: Failure to restore alphaBlendingFlag +- Fix Coverity #155476: potential resource leak +- Fix several build issues and test failures +- Fix and reenable optimized support for reading 1 bps TIFFs + +### Added +- The native MSVC buildchain now supports libtiff and most executables + +## [2.2.4] - 2017-01-18 + +### Security +- gdImageCreate() doesn't check for oversized images and as such is + prone to DoS vulnerabilities. (CVE-2016-9317) +- double-free in gdImageWebPtr() (CVE-2016-6912) +- potential unsigned underflow in gd_interpolation.c +- DOS vulnerability in gdImageCreateFromGd2Ctx() + +### Fixed +- Fix #354: Signed Integer Overflow gd_io.c +- Fix #340: System frozen +- Fix OOB reads of the TGA decompression buffer +- Fix DOS vulnerability in gdImageCreateFromGd2Ctx() +- Fix potential unsigned underflow +- Fix double-free in gdImageWebPtr() +- Fix invalid read in gdImageCreateFromTiffPtr() +- Fix OOB reads of the TGA decompression buffer +- Fix #68: gif: buffer underflow reported by AddressSanitizer +- Avoid potentially dangerous signed to unsigned conversion +- Fix #304: test suite failure in gif/bug00006 [2.2.3] +- Fix #329: GD_BILINEAR_FIXED gdImageScale() can cause black border +- Fix #330: Integer overflow in gdImageScaleBilinearPalette() +- Fix 321: Null pointer dereferences in gdImageRotateInterpolated +- Fix whitespace and add missing comment block +- Fix #319: gdImageRotateInterpolated can have wrong background color +- Fix color quantization documentation +- Fix #309: gdImageGd2() writes wrong chunk sizes on boundaries +- Fix #307: GD_QUANT_NEUQUANT fails to unset trueColor flag +- Fix #300: gdImageClone() assigns res_y = res_x +- Fix #299: Regression regarding gdImageRectangle() with gdImageSetThickness() +- Replace GNU old-style field designators with C89 compatible initializers +- Fix #297: gdImageCrop() converts palette image to truecolor image +- Fix #290: TGA RLE decoding is broken +- Fix unnecessary non NULL checks +- Fix #289: Passing unrecognized formats to gdImageGd2 results in corrupted files +- Fix #280: gdImageWebpEx() `quantization` parameter is a misnomer +- Publish all gdImageCreateFromWebp*() functions and gdImageWebpCtx() +- Fix issue #276: Sometimes pixels are missing when storing images as BMPs +- Fix issue #275: gdImageBmpCtx() may segfault for non-seekable contexts +- Fix copy&paste error in gdImageScaleBicubicFixed() + +### Added +- More documentation +- Documentation on GD and GD2 formats +- More tests diff --git a/Build/source/libs/gd/libgd-src/CMakeLists.txt b/Build/source/libs/gd/libgd-src/CMakeLists.txt index 42934d06ec2..8c99816d893 100644 --- a/Build/source/libs/gd/libgd-src/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/CMakeLists.txt @@ -71,12 +71,12 @@ else (USE_EXT_GD) SET(GD_VERSION_MAJOR "2") SET(GD_VERSION_MINOR "2") - SET(GD_VERSION_PATCH "3") + SET(GD_VERSION_PATCH "5") SET(GD_VERSION_EXTRA "") SET(GD_VERSION "${GD_VERSION_MAJOR}.${GD_VERSION_MINOR}.${GD_VERSION_PATCH}${GD_VERSION_EXTRA}") SET(GD_VERSION_STRING "${GD_VERSION}") - SET(GD_VERSION_INT "2020333") + SET(GD_VERSION_INT "2020555") SET(CMAKE_REQUIRED_INCLUDES "/usr/include" "/usr/local/include") @@ -233,7 +233,7 @@ SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "libGD, powerful and easy to use graphic l SET(CPACK_PACKAGE_VENDOR "http://www.libgd.org") SET(CPACK_PACKAGE_VERSION_MAJOR "2") SET(CPACK_PACKAGE_VERSION_MINOR "2") -SET(CPACK_PACKAGE_VERSION_PATCH "3") +SET(CPACK_PACKAGE_VERSION_PATCH "5") if(WIN32) set(CPACK_GENERATOR ZIP) diff --git a/Build/source/libs/gd/libgd-src/Makefile.am b/Build/source/libs/gd/libgd-src/Makefile.am index c4ccbd41d6b..17a362c295e 100644 --- a/Build/source/libs/gd/libgd-src/Makefile.am +++ b/Build/source/libs/gd/libgd-src/Makefile.am @@ -1,6 +1,6 @@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = src config tests -EXTRA_DIST = test docs examples windows VMS cmake netware bootstrap.sh CMakeLists.txt CONTRIBUTORS README.md +EXTRA_DIST = test docs examples windows VMS cmake netware bootstrap.sh CMakeLists.txt CONTRIBUTORS README.md CHANGELOG.md clean-local: $(srcdir)/cmake/distclean.sh --automake diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-c.html new file mode 100644 index 00000000000..c7c0be192e8 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-c.html @@ -0,0 +1,206 @@ + + +/parent/libgd/docs/naturaldocs/tmp/gd.c + + + + + + + + + +

gd.c

Summary
gd.c
Error Handling
gdSetErrorMethod
gdClearErrorMethod
Creation and Destruction
gdImageCreategdImageCreate is called to create palette-based images, with no more than 256 colors.
gdImageCreateTrueColorgdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors.
gdImageDestroygdImageDestroy is used to free the memory associated with an image.
Color
gdImageColorClosestGets the closest color of the image
gdImageColorClosestAlphaGets the closest color of the image
gdImageColorClosestHWB
gdImageColorExactGets the exact color of the image
gdImageColorExactAlphaGets the exact color of the image
gdImageColorAllocateAllocates a color
gdImageColorAllocateAlphaAllocates a color
gdImageColorResolvegdImageColorResolve is an alternative for the code fragment
gdImageColorResolveAlpha
gdImageColorDeallocateRemoves a palette entry
gdImageColorTransparentSets the transparent color of the image
gdImagePaletteCopy
gdImageColorReplace
gdImageColorReplaceThreshold
gdImageColorReplaceArray
gdImageColorReplaceCallback
Pixels
gdImageSetPixel
gdImageGetPixelGets a pixel color as stored in the image.
gdImageGetTrueColorPixelGets a pixel color always as truecolor value.
Primitives
gdImageAABlendNO-OP, kept for library compatibility.
gdImageLineBresenham as presented in Foley & Van Dam.
gdImageDashedLine
gdImageBoundsSafe
gdImageCharDraws a single character.
gdImageCharUp
gdImageStringDraws a character string.
gdImageStringUp
gdImageString16
gdImageStringUp16
gdImageArc
gdImageFilledArc
gdImageEllipse
gdImageFilledEllipse
gdImageFillToBorder
gdImageFill
gdImageRectangleDraws a rectangle.
gdImageFilledRectangle
Cloning and Copying
gdImageCloneClones an image
gdImageCopyCopy an area of an image to another image
gdImageCopyMergeCopy an area of an image to another image ignoring alpha
gdImageCopyMergeGrayCopy an area of an image to another image ignoring alpha
gdImageCopyResizedCopy a resized area from an image to another image
gdImageCopyRotatedCopy a rotated area from an image to another image
gdImageCopyResampledCopy a resampled area from an image to another image
Polygons
gdImagePolygonDraws a closed polygon
gdImageOpenPolygonDraws an open polygon
gdImageFilledPolygonDraws a filled polygon
other
gdImageSetStyleSets the style for following drawing operations
gdImageSetThicknessSets the thickness for following drawing operations
gdImageSetBrushSets the brush for following drawing operations
gdImageSetTile
gdImageSetAntiAliasedSet the color for subsequent anti-aliased drawing
gdImageSetAntiAliasedDontBlendSet the color and “dont_blend” color for subsequent anti-aliased drawing
gdImageInterlaceSets whether an image is interlaced
gdImageCompareCompare two images
gdAlphaBlendBlend two colors
gdLayerOverlayOverlay two colors
gdLayerMultiplyOverlay two colors with multiply effect
gdImageAlphaBlendingSet the effect for subsequent drawing operations
gdImageSaveAlphaSets the save alpha flag
gdImageSetClipSets the clipping rectangle
gdImageGetClipGets the current clipping rectangle
gdImageSetResolutionSets the resolution of an image.
gdImagePaletteToTrueColorConvert a palette image to true color
+ +

Error Handling

+ +

gdSetErrorMethod

void gdSetErrorMethod(gdErrorMethod error_method)
+ +

gdClearErrorMethod

void gdClearErrorMethod(void)
+ +

Creation and Destruction

+ +

gdImageCreate

gdImagePtr gdImageCreate (int sx,
int sy)

gdImageCreate is called to create palette-based images, with no more than 256 colors.  The image must eventually be destroyed using gdImageDestroy().

Parameters

sxThe image width.
syThe image height.

Returns

A pointer to the new image or NULL if an error occurred.

Example

gdImagePtr im;
+im = gdImageCreate(64, 64);
+// ... Use the image ...
+gdImageDestroy(im);

See Also

gdImageCreateTrueColor

+ +

gdImageCreateTrueColor

gdImagePtr gdImageCreateTrueColor (int sx,
int sy)

gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors.  Invoke gdImageCreateTrueColor with the x and y dimensions of the desired image.  gdImageCreateTrueColor returns a gdImagePtr to the new image, or NULL if unable to allocate the image.  The image must eventually be destroyed using <gdImageDestroy>().

Truecolor images are always filled with black at creation time.  There is no concept of a “background” color index.

Parameters

sxThe image width.
syThe image height.

Returns

A pointer to the new image or NULL if an error occurred.

Example

gdImagePtr im;
+im = gdImageCreateTrueColor(64, 64);
+// ... Use the image ...
+gdImageDestroy(im);

See Also

gdImageCreateTrueColor

+ +

gdImageDestroy

void gdImageDestroy (gdImagePtr im)

gdImageDestroy is used to free the memory associated with an image.  It is important to invoke gdImageDestroy before exiting your program or assigning a new image to a gdImagePtr variable.

Parameters

imPointer to the gdImage to delete.

Returns

Nothing.

Example

gdImagePtr im;
+im = gdImageCreate(10, 10);
+// ... Use the image ...
+// Now destroy it
+gdImageDestroy(im);
+ +

Color

+ +

gdImageColorClosest

int gdImageColorClosest (gdImagePtr im,
int r,
int g,
int b)

Gets the closest color of the image

This is a simplified variant of gdImageColorClosestAlpha where the alpha channel is always opaque.

Parameters

imThe image.
rThe value of the red component.
gThe value of the green component.
bThe value of the blue component.

Returns

The closest color already available in the palette for palette images; the color value of the given components for truecolor images.

See also

+ +

gdImageColorClosestAlpha

int gdImageColorClosestAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)

Gets the closest color of the image

Parameters

imThe image.
rThe value of the red component.
gThe value of the green component.
bThe value of the blue component.
aThe value of the alpha component.

Returns

The closest color already available in the palette for palette images; the color value of the given components for truecolor images.

See also

+ +

gdImageColorClosestHWB

int gdImageColorClosestHWB (gdImagePtr im,
int r,
int g,
int b)
+ +

gdImageColorExact

int gdImageColorExact (gdImagePtr im,
int r,
int g,
int b)

Gets the exact color of the image

This is a simplified variant of gdImageColorExactAlpha where the alpha channel is always opaque.

Parameters

imThe image.
rThe value of the red component.
gThe value of the green component.
bThe value of the blue component.

Returns

The exact color already available in the palette for palette images; if there is no exact color, -1 is returned.  For truecolor images the color value of the given components is returned.

See also

+ +

gdImageColorExactAlpha

int gdImageColorExactAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)

Gets the exact color of the image

Parameters

imThe image.
rThe value of the red component.
gThe value of the green component.
bThe value of the blue component.
aThe value of the alpha component.

Returns

The exact color already available in the palette for palette images; if there is no exact color, -1 is returned.  For truecolor images the color value of the given components is returned.

See also

+ +

gdImageColorAllocate

int gdImageColorAllocate (gdImagePtr im,
int r,
int g,
int b)

Allocates a color

This is a simplified variant of gdImageColorAllocateAlpha where the alpha channel is always opaque.

Parameters

imThe image.
rThe value of the red component.
gThe value of the green component.
bThe value of the blue component.

Returns

The color value.

See also

+ +

gdImageColorAllocateAlpha

int gdImageColorAllocateAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)

Allocates a color

This is typically used for palette images, but can be used for truecolor images as well.

Parameters

imThe image.
rThe value of the red component.
gThe value of the green component.
bThe value of the blue component.

Returns

The color value.

See also

+ +

gdImageColorResolve

int gdImageColorResolve (gdImagePtr im,
int r,
int g,
int b)

gdImageColorResolve is an alternative for the code fragment

if ((color=gdImageColorExact(im,R,G,B)) < 0)
+  if ((color=gdImageColorAllocate(im,R,G,B)) < 0)
+    color=gdImageColorClosest(im,R,G,B);

in a single function.  Its advantage is that it is guaranteed to return a color index in one search over the color table.

+ +

gdImageColorResolveAlpha

int gdImageColorResolveAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
+ +

gdImageColorDeallocate

void gdImageColorDeallocate (gdImagePtr im,
int color)

Removes a palette entry

This is a no-op for truecolor images.

Parameters

imThe image.
colorThe palette index.

See also

+ +

gdImageColorTransparent

void gdImageColorTransparent (gdImagePtr im,
int color)

Sets the transparent color of the image

Parameter

imThe image.
colorThe color.

See also

+ +

gdImagePaletteCopy

void gdImagePaletteCopy (gdImagePtr to,
gdImagePtr from)
+ +

gdImageColorReplace

int gdImageColorReplace (gdImagePtr im,
int src,
int dst)
+ +

gdImageColorReplaceThreshold

int gdImageColorReplaceThreshold (gdImagePtr im,
int src,
int dst,
float threshold)
+ +

gdImageColorReplaceArray

int gdImageColorReplaceArray (gdImagePtr im,
int len,
int *src,
int *dst)
+ +

gdImageColorReplaceCallback

int gdImageColorReplaceCallback (gdImagePtr im,
gdCallbackImageColor callback)
+ +

Pixels

+ +

gdImageSetPixel

void gdImageSetPixel (gdImagePtr im,
int x,
int y,
int color)
+ +

gdImageGetPixel

int gdImageGetPixel (gdImagePtr im,
int x,
int y)

Gets a pixel color as stored in the image.

Parameters

imThe image.
xThe x-coordinate.
yThe y-coordinate.

See also

+ +

gdImageGetTrueColorPixel

int gdImageGetTrueColorPixel (gdImagePtr im,
int x,
int y)

Gets a pixel color always as truecolor value.

Parameters

imThe image.
xThe x-coordinate.
yThe y-coordinate.

See also

+ +

Primitives

+ +

gdImageAABlend

void gdImageAABlend (gdImagePtr im)

NO-OP, kept for library compatibility.

+ +

gdImageLine

void gdImageLine (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)

Bresenham as presented in Foley & Van Dam.

+ +

gdImageDashedLine

void gdImageDashedLine (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
+ +

gdImageBoundsSafe

int gdImageBoundsSafe (gdImagePtr im,
int x,
int y)
+ +

gdImageChar

void gdImageChar (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)

Draws a single character.

Parameters

imThe image to draw onto.
fThe raster font.
xThe x coordinate of the upper left pixel.
yThe y coordinate of the upper left pixel.
cThe character.
colorThe color.

Variants

See also

+ +

gdImageCharUp

void gdImageCharUp (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
+ +

gdImageString

void gdImageString (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)

Draws a character string.

Parameters

imThe image to draw onto.
fThe raster font.
xThe x coordinate of the upper left pixel.
yThe y coordinate of the upper left pixel.
cThe character string.
colorThe color.

Variants

See also

+ +

gdImageStringUp

void gdImageStringUp (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
+ +

gdImageString16

void gdImageString16 (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned short *s,
int color)
+ +

gdImageStringUp16

void gdImageStringUp16 (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned short *s,
int color)
+ +

gdImageArc

void gdImageArc (gdImagePtr im,
int cx,
int cy,
int w,
int h,
int s,
int e,
int color)
+ +

gdImageFilledArc

void gdImageFilledArc (gdImagePtr im,
int cx,
int cy,
int w,
int h,
int s,
int e,
int color,
int style)
+ +

gdImageEllipse

void gdImageEllipse(gdImagePtr im,
int mx,
int my,
int w,
int h,
int c)
+ +

gdImageFilledEllipse

void gdImageFilledEllipse (gdImagePtr im,
int mx,
int my,
int w,
int h,
int c)
+ +

gdImageFillToBorder

void gdImageFillToBorder (gdImagePtr im,
int x,
int y,
int border,
int color)
+ +

gdImageFill

void gdImageFill(gdImagePtr im,
int x,
int y,
int nc)
+ +

gdImageRectangle

void gdImageRectangle (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)

Draws a rectangle.

Parameters

imThe image.
x1The x-coordinate of the upper left corner.
y1The y-coordinate of the upper left corner.
x2The x-coordinate of the lower right corner.
y2The y-coordinate of the lower right corner.
colorThe color.

Note that x1,y1 and x2,y2 may be swapped, i.e. the former may designate the lower right corner and the latter the upper left corner.  The behavior for specifying other corners is undefined.

See also

+ +

gdImageFilledRectangle

void gdImageFilledRectangle (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
+ +

Cloning and Copying

+ +

gdImageClone

gdImagePtr gdImageClone (gdImagePtr src)

Clones an image

Creates an exact duplicate of the given image.

Parameters

srcThe source image.

Returns

The cloned image on success, NULL on failure.

+ +

gdImageCopy

void gdImageCopy (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h)

Copy an area of an image to another image

Parameters

dstThe destination image.
srcThe source image.
dstXThe x-coordinate of the upper left corner to copy to.
dstYThe y-coordinate of the upper left corner to copy to.
srcXThe x-coordinate of the upper left corner to copy from.
srcYThe y-coordinate of the upper left corner to copy from.
wThe width of the area to copy.
hThe height of the area to copy.

See also

+ +

gdImageCopyMerge

void gdImageCopyMerge (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h,
int pct)

Copy an area of an image to another image ignoring alpha

The source area will be copied to the destination are by merging the pixels.

Note

This function is a substitute for real alpha channel operations, so it doesn’t pay attention to the alpha channel.

Parameters

dstThe destination image.
srcThe source image.
dstXThe x-coordinate of the upper left corner to copy to.
dstYThe y-coordinate of the upper left corner to copy to.
srcXThe x-coordinate of the upper left corner to copy from.
srcYThe y-coordinate of the upper left corner to copy from.
wThe width of the area to copy.
hThe height of the area to copy.
pctThe percentage in range 0..100.

See also

+ +

gdImageCopyMergeGray

void gdImageCopyMergeGray (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h,
int pct)

Copy an area of an image to another image ignoring alpha

The source area will be copied to the grayscaled destination area by merging the pixels.

Note

This function is a substitute for real alpha channel operations, so it doesn’t pay attention to the alpha channel.

Parameters

dstThe destination image.
srcThe source image.
dstXThe x-coordinate of the upper left corner to copy to.
dstYThe y-coordinate of the upper left corner to copy to.
srcXThe x-coordinate of the upper left corner to copy from.
srcYThe y-coordinate of the upper left corner to copy from.
wThe width of the area to copy.
hThe height of the area to copy.
pctThe percentage of the source color intensity in range 0..100.

See also

+ +

gdImageCopyResized

void gdImageCopyResized (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int dstW,
int dstH,
int srcW,
int srcH)

Copy a resized area from an image to another image

If the source and destination area differ in size, the area will be resized using nearest-neighbor interpolation.

Parameters

dstThe destination image.
srcThe source image.
dstXThe x-coordinate of the upper left corner to copy to.
dstYThe y-coordinate of the upper left corner to copy to.
srcXThe x-coordinate of the upper left corner to copy from.
srcYThe y-coordinate of the upper left corner to copy from.
dstWThe width of the area to copy to.
dstHThe height of the area to copy to.
srcWThe width of the area to copy from.
srcHThe height of the area to copy from.

See also

+ +

gdImageCopyRotated

void gdImageCopyRotated (gdImagePtr dst,
gdImagePtr src,
double dstX,
double dstY,
int srcX,
int srcY,
int srcWidth,
int srcHeight,
int angle)

Copy a rotated area from an image to another image

The area is counter-clockwise rotated using nearest-neighbor interpolation.

Parameters

dstThe destination image.
srcThe source image.
dstXThe x-coordinate of the center of the area to copy to.
dstYThe y-coordinate of the center of the area to copy to.
srcXThe x-coordinate of the upper left corner to copy from.
srcYThe y-coordinate of the upper left corner to copy from.
srcWThe width of the area to copy from.
srcHThe height of the area to copy from.
angleThe angle in degrees.

See also

+ +

gdImageCopyResampled

void gdImageCopyResampled (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int dstW,
int dstH,
int srcW,
int srcH)

Copy a resampled area from an image to another image

If the source and destination area differ in size, the area will be resized using bilinear interpolation for truecolor images, and nearest-neighbor interpolation for palette images.

Parameters

dstThe destination image.
srcThe source image.
dstXThe x-coordinate of the upper left corner to copy to.
dstYThe y-coordinate of the upper left corner to copy to.
srcXThe x-coordinate of the upper left corner to copy from.
srcYThe y-coordinate of the upper left corner to copy from.
dstWThe width of the area to copy to.
dstHThe height of the area to copy to.
srcWThe width of the area to copy from.
srcHThe height of the area to copy from.

See also

+ +

Polygons

+ +

gdImagePolygon

void gdImagePolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)

Draws a closed polygon

Parameters

imThe image.
pThe vertices as array of gdPoints.
nThe number of vertices.
cThe color.

See also

+ +

gdImageOpenPolygon

void gdImageOpenPolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)

Draws an open polygon

Parameters

imThe image.
pThe vertices as array of gdPoints.
nThe number of vertices.
cThe color

See also

+ +

gdImageFilledPolygon

void gdImageFilledPolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)

Draws a filled polygon

The polygon is filled using the even-odd fillrule what can leave unfilled regions inside of self-intersecting polygons.  This behavior might change in a future version.

Parameters

imThe image.
pThe vertices as array of gdPoints.
nThe number of vertices.
cThe color

See also

+ +

other

+ +

gdImageSetStyle

void gdImageSetStyle (gdImagePtr im,
int *style,
int noOfPixels)

Sets the style for following drawing operations

Parameters

imThe image.
styleAn array of color values.
noOfPixelThe number of color values.
+ +

gdImageSetThickness

void gdImageSetThickness (gdImagePtr im,
int thickness)

Sets the thickness for following drawing operations

Parameters

imThe image.
thicknessThe thickness in pixels.
+ +

gdImageSetBrush

void gdImageSetBrush (gdImagePtr im,
gdImagePtr brush)

Sets the brush for following drawing operations

Parameters

imThe image.
brushThe brush image.
+ +

gdImageSetTile

void gdImageSetTile (gdImagePtr im,
gdImagePtr tile)
+ +

gdImageSetAntiAliased

void gdImageSetAntiAliased (gdImagePtr im,
int c)

Set the color for subsequent anti-aliased drawing

If gdAntiAliased is passed as color to drawing operations that support anti-aliased drawing (such as gdImageLine and gdImagePolygon), the actual color to be used can be set with this function.

Example: draw an anti-aliased blue line

gdImageSetAntiAliased(im, gdTrueColorAlpha(0, 0, gdBlueMax, gdAlphaOpaque));
+gdImageLine(im, 10,10, 20,20, gdAntiAliased);

Parameters

imThe image.
cThe color.

See also

+ +

gdImageSetAntiAliasedDontBlend

void gdImageSetAntiAliasedDontBlend (gdImagePtr im,
int c,
int dont_blend)

Set the color and “dont_blend” color for subsequent anti-aliased drawing

This extended variant of gdImageSetAntiAliased allows to also specify a (background) color that will not be blended in anti-aliased drawing operations.

Parameters

imThe image.
cThe color.
dont_blendWhether to blend.
+ +

gdImageInterlace

void gdImageInterlace (gdImagePtr im,
int interlaceArg)

Sets whether an image is interlaced

This is relevant only when saving the image in a format that supports interlacing.

Parameters

imThe image.
interlaceArgWhether the image is interlaced.

See also

+ +

gdImageCompare

int gdImageCompare (gdImagePtr im1,
gdImagePtr im2)

Compare two images

Parameters

im1An image.
im2Another image.

Returns

A bitmask of Image Comparison flags where each set flag signals which attributes of the images are different.

+ +

gdAlphaBlend

int gdAlphaBlend (int dst,
int src)

Blend two colors

Parameters

dstThe color to blend onto.
srcThe color to blend.

See also

+ +

gdLayerOverlay

int gdLayerOverlay (int dst,
int src)

Overlay two colors

Parameters

dstThe color to overlay onto.
srcThe color to overlay.

See also

+ +

gdLayerMultiply

int gdLayerMultiply (int dst,
int src)

Overlay two colors with multiply effect

Parameters

dstThe color to overlay onto.
srcThe color to overlay.

See also

+ +

gdImageAlphaBlending

void gdImageAlphaBlending (gdImagePtr im,
int alphaBlendingArg)

Set the effect for subsequent drawing operations

Note that the effect is used for truecolor images only.

Parameters

imThe image.
alphaBlendingArgThe effect.

See also

+ +

gdImageSaveAlpha

void gdImageSaveAlpha (gdImagePtr im,
int saveAlphaArg)

Sets the save alpha flag

The save alpha flag specifies whether the alpha channel of the pixels should be saved.  This is supported only for image formats that support full alpha transparency, e.g.  PNG.

+ +

gdImageSetClip

void gdImageSetClip (gdImagePtr im,
int x1,
int y1,
int x2,
int y2)

Sets the clipping rectangle

The clipping rectangle restricts the drawing area for following drawing operations.

Parameters

imThe image.
x1The x-coordinate of the upper left corner.
y1The y-coordinate of the upper left corner.
x2The x-coordinate of the lower right corner.
y2The y-coordinate of the lower right corner.

See also

+ +

gdImageGetClip

void gdImageGetClip (gdImagePtr im,
int *x1P,
int *y1P,
int *x2P,
int *y2P)

Gets the current clipping rectangle

Parameters

imThe image.
x1P(out) The x-coordinate of the upper left corner.
y1P(out) The y-coordinate of the upper left corner.
x2P(out) The x-coordinate of the lower right corner.
y2P(out) The y-coordinate of the lower right corner.

See also

+ +

gdImageSetResolution

void gdImageSetResolution(gdImagePtr im,
const unsigned int res_x,
const unsigned int res_y)

Sets the resolution of an image.

Parameters

imThe image.
res_xThe horizontal resolution in DPI.
res_yThe vertical resolution in DPI.

See also

+ +

gdImagePaletteToTrueColor

int gdImagePaletteToTrueColor(gdImagePtr src)

Convert a palette image to true color

Parameters

srcThe image.

Returns

Non-zero if the conversion succeeded, zero otherwise.

See also

+ +
+ + + + + + + + + + +
void gdSetErrorMethod(gdErrorMethod error_method)
void gdClearErrorMethod(void)
gdImagePtr gdImageCreate (int sx,
int sy)
gdImageCreate is called to create palette-based images, with no more than 256 colors.
gdImagePtr gdImageCreateTrueColor (int sx,
int sy)
gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors.
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
int gdImageColorClosest (gdImagePtr im,
int r,
int g,
int b)
Gets the closest color of the image
int gdImageColorClosestAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Gets the closest color of the image
int gdImageColorClosestHWB (gdImagePtr im,
int r,
int g,
int b)
int gdImageColorExact (gdImagePtr im,
int r,
int g,
int b)
Gets the exact color of the image
int gdImageColorExactAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Gets the exact color of the image
int gdImageColorAllocate (gdImagePtr im,
int r,
int g,
int b)
Allocates a color
int gdImageColorAllocateAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Allocates a color
int gdImageColorResolve (gdImagePtr im,
int r,
int g,
int b)
gdImageColorResolve is an alternative for the code fragment
int gdImageColorResolveAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
void gdImageColorDeallocate (gdImagePtr im,
int color)
Removes a palette entry
void gdImageColorTransparent (gdImagePtr im,
int color)
Sets the transparent color of the image
void gdImagePaletteCopy (gdImagePtr to,
gdImagePtr from)
int gdImageColorReplace (gdImagePtr im,
int src,
int dst)
int gdImageColorReplaceThreshold (gdImagePtr im,
int src,
int dst,
float threshold)
int gdImageColorReplaceArray (gdImagePtr im,
int len,
int *src,
int *dst)
int gdImageColorReplaceCallback (gdImagePtr im,
gdCallbackImageColor callback)
void gdImageSetPixel (gdImagePtr im,
int x,
int y,
int color)
int gdImageGetPixel (gdImagePtr im,
int x,
int y)
Gets a pixel color as stored in the image.
int gdImageGetTrueColorPixel (gdImagePtr im,
int x,
int y)
Gets a pixel color always as truecolor value.
void gdImageAABlend (gdImagePtr im)
NO-OP, kept for library compatibility.
void gdImageLine (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
Bresenham as presented in Foley & Van Dam.
void gdImageDashedLine (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
int gdImageBoundsSafe (gdImagePtr im,
int x,
int y)
void gdImageChar (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
Draws a single character.
void gdImageCharUp (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
void gdImageString (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
Draws a character string.
void gdImageStringUp (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
void gdImageString16 (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned short *s,
int color)
void gdImageStringUp16 (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned short *s,
int color)
void gdImageArc (gdImagePtr im,
int cx,
int cy,
int w,
int h,
int s,
int e,
int color)
void gdImageFilledArc (gdImagePtr im,
int cx,
int cy,
int w,
int h,
int s,
int e,
int color,
int style)
void gdImageEllipse(gdImagePtr im,
int mx,
int my,
int w,
int h,
int c)
void gdImageFilledEllipse (gdImagePtr im,
int mx,
int my,
int w,
int h,
int c)
void gdImageFillToBorder (gdImagePtr im,
int x,
int y,
int border,
int color)
void gdImageFill(gdImagePtr im,
int x,
int y,
int nc)
void gdImageRectangle (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
Draws a rectangle.
void gdImageFilledRectangle (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
gdImagePtr gdImageClone (gdImagePtr src)
Clones an image
void gdImageCopy (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h)
Copy an area of an image to another image
void gdImageCopyMerge (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h,
int pct)
Copy an area of an image to another image ignoring alpha
void gdImageCopyMergeGray (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h,
int pct)
Copy an area of an image to another image ignoring alpha
void gdImageCopyResized (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int dstW,
int dstH,
int srcW,
int srcH)
Copy a resized area from an image to another image
void gdImageCopyRotated (gdImagePtr dst,
gdImagePtr src,
double dstX,
double dstY,
int srcX,
int srcY,
int srcWidth,
int srcHeight,
int angle)
Copy a rotated area from an image to another image
void gdImageCopyResampled (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int dstW,
int dstH,
int srcW,
int srcH)
Copy a resampled area from an image to another image
void gdImagePolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws a closed polygon
void gdImageOpenPolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws an open polygon
void gdImageFilledPolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws a filled polygon
void gdImageSetStyle (gdImagePtr im,
int *style,
int noOfPixels)
Sets the style for following drawing operations
void gdImageSetThickness (gdImagePtr im,
int thickness)
Sets the thickness for following drawing operations
void gdImageSetBrush (gdImagePtr im,
gdImagePtr brush)
Sets the brush for following drawing operations
void gdImageSetTile (gdImagePtr im,
gdImagePtr tile)
void gdImageSetAntiAliased (gdImagePtr im,
int c)
Set the color for subsequent anti-aliased drawing
void gdImageSetAntiAliasedDontBlend (gdImagePtr im,
int c,
int dont_blend)
Set the color and “dont_blend” color for subsequent anti-aliased drawing
void gdImageInterlace (gdImagePtr im,
int interlaceArg)
Sets whether an image is interlaced
int gdImageCompare (gdImagePtr im1,
gdImagePtr im2)
Compare two images
int gdAlphaBlend (int dst,
int src)
Blend two colors
int gdLayerOverlay (int dst,
int src)
Overlay two colors
int gdLayerMultiply (int dst,
int src)
Overlay two colors with multiply effect
void gdImageAlphaBlending (gdImagePtr im,
int alphaBlendingArg)
Set the effect for subsequent drawing operations
void gdImageSaveAlpha (gdImagePtr im,
int saveAlphaArg)
Sets the save alpha flag
void gdImageSetClip (gdImagePtr im,
int x1,
int y1,
int x2,
int y2)
Sets the clipping rectangle
void gdImageGetClip (gdImagePtr im,
int *x1P,
int *y1P,
int *x2P,
int *y2P)
Gets the current clipping rectangle
void gdImageSetResolution(gdImagePtr im,
const unsigned int res_x,
const unsigned int res_y)
Sets the resolution of an image.
int gdImagePaletteToTrueColor(gdImagePtr src)
Convert a palette image to true color
The data structure in which gd stores images.
Compose a truecolor value from its components
Gets the transparent color of the image.
Gets the color of a pixel.
Gets the color of a pixel.
A font structure, containing the bitmaps of all characters in a font.
char * gdImageStringTTF (gdImage *im,
int *brect,
int fg,
char *fontlist,
double ptsize,
double angle,
int x,
int y,
char *string)
Alias of gdImageStringFT.
gdImagePtr gdImageScale(const gdImagePtr src,
const unsigned int new_width,
const unsigned int new_height)
Scale an image
gdImagePtr gdImageRotateInterpolated(const gdImagePtr src,
const float angle,
int bgcolor)
Rotate an image
draw anti aliased
Whether an image is interlaced.
The layering effect
Gets the horizontal resolution in DPI.
Gets the vertical resolution in DPI.
int gdImageTrueColorToPalette (gdImagePtr im,
int dither,
int colorsWanted)
Converts a truecolor image to a palette image
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-h.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-h.html new file mode 100644 index 00000000000..9e2e416a92e --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-h.html @@ -0,0 +1,173 @@ + + +/parent/libgd/docs/naturaldocs/tmp/gd.h + + + + + + + + + +

gd.h

Summary
gd.h
Color Decomposition
gdTrueColorGetAlphaGets the alpha channel value
gdTrueColorGetRedGets the red channel value
gdTrueColorGetGreenGets the green channel value
gdTrueColorGetBlueGets the blue channel value
EffectsThe layering effect
Color Quantization
gdPaletteQuantizationMethod
Transform
gdInterpolationMethod
Types
gdImage
gdImagePtrThe data structure in which gd stores images.
Types
gdPointFDefines a point in a 2D coordinate system using floating point values.
gdPointFPtrPointer to a gdPointF
Types
gdFont
gdFontPtrA font structure, containing the bitmaps of all characters in a font.
ColorsColors are always of type int which is supposed to be at least 32 bit large.
Special Colors
Types
gdSource
gdSourcePtrNote: This interface is obsolete and kept only for *compatibility.
Types
gdFTStringExtra
gdFTStringExtraPtrA structure and associated pointer type used to pass additional parameters to the gdImageStringFTEx function.
Types
gdPoint
gdPointPtrRepresents a point in the coordinate space of the image; used by gdImagePolygon, gdImageOpenPolygon and gdImageFilledPolygon for polygon drawing.
gdRectA rectangle in the coordinate space of the image
gdRectPtrA pointer to a gdRect
Color Composition
gdTrueColorAlphaCompose a truecolor value from its components
GifAnimLegal values for Disposal.
gdImageGifAnim
Types
gdSink
gdSinkPtrNote: This interface is obsolete and kept only for compatibility.
Accessor Macros
gdImageTrueColorWhether an image is a truecolor image.
gdImageSXGets the width (in pixels) of an image.
gdImageSYGets the height (in pixels) of an image.
gdImageColorsTotalGets the number of colors in the palette.
gdImageRedGets the red component value of a given color.
gdImageGreenGets the green component value of a given color.
gdImageBlueGets the blue component value of a given color.
gdImageAlphaGets the alpha component value of a given color.
gdImageGetTransparentGets the transparent color of the image.
gdImageGetInterlacedWhether an image is interlaced.
gdImagePalettePixelGets the color of a pixel.
gdImageTrueColorPixelGets the color of a pixel.
gdImageResolutionXGets the horizontal resolution in DPI.
gdImageResolutionYGets the vertical resolution in DPI.
Crop
gdCropMode
Image Comparison
+ +

Color Decomposition

+ +

gdTrueColorGetAlpha

Gets the alpha channel value

Parameters

cThe color

See also

+ +

gdTrueColorGetRed

Gets the red channel value

Parameters

cThe color

See also

+ +

gdTrueColorGetGreen

Gets the green channel value

Parameters

cThe color

See also

+ +

gdTrueColorGetBlue

Gets the blue channel value

Parameters

cThe color

See also

+ +

Effects

The layering effect

When pixels are drawn the new colors are “mixed” with the background depending on the effect.

Note that the effect does not apply to palette images, where pixels are always replaced.

Modes

gdEffectReplacereplace pixels
gdEffectAlphaBlendblend pixels, see gdAlphaBlend
gdEffectNormaldefault mode; same as gdEffectAlphaBlend
gdEffectOverlayoverlay pixels, see gdLayerOverlay
gdEffectMultiplyoverlay pixels with multiply effect, see gdLayerMultiply

See also

+ +

Color Quantization

+ +

gdPaletteQuantizationMethod

Constants

GD_QUANT_DEFAULTGD_QUANT_LIQ if libimagequant is available, GD_QUANT_JQUANT otherwise.
GD_QUANT_JQUANTlibjpeg’s old median cut.  Fast, but only uses 16-bit color.
GD_QUANT_NEUQUANTNeuQuant - approximation using Kohonen neural network.
GD_QUANT_LIQA combination of algorithms used in libimagequant aiming for the highest quality at cost of speed.

Note that GD_QUANT_JQUANT does not retain the alpha channel, and GD_QUANT_NEUQUANT does not support dithering.

See also

+ +

Transform

+ +

gdInterpolationMethod

GD_BELLBell
GD_BESSELBessel
GD_BILINEAR_FIXEDfixed point bilinear
GD_BICUBICBicubic
GD_BICUBIC_FIXEDfixed point bicubic integer
GD_BLACKMANBlackman
GD_BOXBox
GD_BSPLINEBSpline
GD_CATMULLROMCatmullrom
GD_GAUSSIANGaussian
GD_GENERALIZED_CUBICGeneralized cubic
GD_HERMITEHermite
GD_HAMMINGHamming
GD_HANNINGHannig
GD_MITCHELLMitchell
GD_NEAREST_NEIGHBOURNearest neighbour interpolation
GD_POWERPower
GD_QUADRATICQuadratic
GD_SINCSinc
GD_TRIANGLETriangle
GD_WEIGHTED44 pixels weighted bilinear interpolation
GD_LINEARbilinear interpolation

See also

+ +

Types

+ +

gdImage

+ +

gdImagePtr

The data structure in which gd stores images.  gdImageCreate, gdImageCreateTrueColor and the various image file-loading functions return a pointer to this type, and the other functions expect to receive a pointer to this type as their first argument.

gdImagePtr is a pointer to gdImage.

See also

Accessor Macros

(Previous versions of this library encouraged directly manipulating the contents ofthe struct but we are attempting to move away from this practice so the fields are no longer documented here.  If you need to poke at the internals of this struct, feel free to look at gd.h.)

+ +

Types

+ +

gdPointF

Defines a point in a 2D coordinate system using floating point values. x - Floating point position (increase from left to right) y - Floating point Row position (increase from top to bottom)

+ +

gdPointFPtr

+ +

Types

+ +

gdFont

+ +

gdFontPtr

A font structure, containing the bitmaps of all characters in a font.  Used to declare the characteristics of a font.  Text-output functions expect these as their second argument, following the gdImagePtr argument.  gdFontGetSmall and gdFontGetLarge both return one.

You can provide your own font data by providing such a structure and the associated pixel array.  You can determine the width and height of a single character in a font by examining the w and h members of the structure.  If you will not be creating your own fonts, you will not need to concern yourself with the rest of the components of this structure.

Please see the files gdfontl.c and gdfontl.h for an example of the proper declaration of this structure.

typedef struct {
+  // # of characters in font
+  int nchars;
+  // First character is numbered... (usually 32 = space)
+  int offset;
+  // Character width and height
+  int w;
+  int h;
+  // Font data; array of characters, one row after another.
+  // Easily included in code, also easily loaded from
+  // data files.
+  char *data;
+} gdFont;

gdFontPtr is a pointer to gdFont.

+ +

Colors

Colors are always of type int which is supposed to be at least 32 bit large.

Kinds of colors

true colorsARGB values where the alpha channel is stored as most significant, and the blue channel as least significant byte.  Note that the alpha channel only uses the 7 least significant bits.  Don’t rely on the internal representation, though, and use gdTrueColorAlpha to compose a truecolor value, and gdTrueColorGetAlpha, gdTrueColorGetRed, gdTrueColorGetGreen and gdTrueColorGetBlue to access the respective channels.
palette indexesThe index of a color palette entry (0-255).
special colorsAs listed in the following section.
+ +

Special Colors

gdStyleduse the current style, see gdImageSetStyle
gdBrusheduse the current brush, see gdImageSetBrush
gdStyledBrusheduse the current style and brush
gdTileduse the current tile, see gdImageSetTile
gdTransparentindicate transparency, what is not the same as the transparent color index; used for lines only
gdAntiAliaseddraw anti aliased
+ +

Types

+ +

gdSource

+ +

gdSourcePtr

Note: This interface is obsolete and kept only for *compatibility.  Use gdIOCtx instead.

Represents a source from which a PNG can be read.  Programmers who do not wish to read PNGs from a file can provide their own alternate input mechanism, using the gdImageCreateFromPngSource function.  See the documentation of that function for an example of the proper use of this type.

typedef struct {
+        int (*source) (void *context, char *buffer, int len);
+        void *context;
+} gdSource, *gdSourcePtr;

The source function must return -1 on error, otherwise the number of bytes fetched.  0 is EOF, not an error!

’context’ will be passed to your source function.

+ +

Types

+ +

gdFTStringExtra

+ +

gdFTStringExtraPtr

A structure and associated pointer type used to pass additional parameters to the gdImageStringFTEx function.  See gdImageStringFTEx for the structure definition.

Thanks to Wez Furlong.

+ +

Types

+ +

gdPoint

+ +

gdPointPtr

Represents a point in the coordinate space of the image; used by gdImagePolygon, gdImageOpenPolygon and gdImageFilledPolygon for polygon drawing.

typedef struct {
+    int x, y;
+} gdPoint, *gdPointPtr;
+ +

gdRect

A rectangle in the coordinate space of the image

Members

xThe x-coordinate of the upper left corner.
yThe y-coordinate of the upper left corner.
widthThe width.
heightThe height.
+ +

gdRectPtr

A pointer to a gdRect

+ +

Color Composition

+ +

gdTrueColorAlpha

Compose a truecolor value from its components

Parameters

rThe red channel (0-255)
gThe green channel (0-255)
bThe blue channel (0-255)
aThe alpha channel (0-127, where 127 is fully transparent, and 0 is completely opaque).

See also

+ +

GifAnim

Legal values for Disposal. gdDisposalNone is always used by the built-in optimizer if previm is passed.

+ +

gdImageGifAnim

gdDisposalUnknownNot recommended
gdDisposalNonePreserve previous frame
gdDisposalRestoreBackgroundFirst allocated color of palette
gdDisposalRestorePreviousRestore to before start of frame

See also

+ +

Types

+ +

gdSink

+ +

gdSinkPtr

Note: This interface is obsolete and kept only for compatibility.  Use gdIOCtx instead.

Represents a “sink” (destination) to which a PNG can be written.  Programmers who do not wish to write PNGs to a file can provide their own alternate output mechanism, using the gdImagePngToSink function.  See the documentation of that function for an example of the proper use of this type.

typedef struct {
+    int (*sink) (void *context, char *buffer, int len);
+    void *context;
+} gdSink, *gdSinkPtr;

The sink function must return -1 on error, otherwise the number of bytes written, which must be equal to len.

context will be passed to your sink function.

+ +

Accessor Macros

+ +

gdImageTrueColor

Whether an image is a truecolor image.

Parameters

imThe image.

Returns

Non-zero if the image is a truecolor image, zero for palette images.

+ +

gdImageSX

Gets the width (in pixels) of an image.

Parameters

imThe image.
+ +

gdImageSY

Gets the height (in pixels) of an image.

Parameters

imThe image.
+ +

gdImageColorsTotal

Gets the number of colors in the palette.

This macro is only valid for palette images.

Parameters

imThe image
+ +

gdImageRed

Gets the red component value of a given color.

Parameters

imThe image.
cThe color.
+ +

gdImageGreen

Gets the green component value of a given color.

Parameters

imThe image.
cThe color.
+ +

gdImageBlue

Gets the blue component value of a given color.

Parameters

imThe image.
cThe color.
+ +

gdImageAlpha

Gets the alpha component value of a given color.

Parameters

imThe image.
cThe color.
+ +

gdImageGetTransparent

Gets the transparent color of the image.

Parameters

imThe image.

See also

+ +

gdImageGetInterlaced

Whether an image is interlaced.

Parameters

imThe image.

Returns

Non-zero for interlaced images, zero otherwise.

See also

+ +

gdImagePalettePixel

Gets the color of a pixel.

Calling this macro is only valid for palette images.  No bounds checking is done for the coordinates.

Parameters

imThe image.
xThe x-coordinate.
yThe y-coordinate.

See also

+ +

gdImageTrueColorPixel

Gets the color of a pixel.

Calling this macro is only valid for truecolor images.  No bounds checking is done for the coordinates.

Parameters

imThe image.
xThe x-coordinate.
yThe y-coordinate.

See also

+ +

gdImageResolutionX

Gets the horizontal resolution in DPI.

Parameters

imThe image.

See also

+ +

gdImageResolutionY

Gets the vertical resolution in DPI.

Parameters

imThe image.

See also

+ +

Crop

+ +

gdCropMode

GD_CROP_DEFAULTDefault crop mode (4 corners or background)
GD_CROP_TRANSPARENTCrop using the transparent color
GD_CROP_BLACKCrop black borders
GD_CROP_WHITECrop white borders
GD_CROP_SIDESCrop using colors of the 4 corners

See also

+ +

Image Comparison

Constants

GD_CMP_IMAGEActual image IS different
GD_CMP_NUM_COLORSNumber of colors in pallette differ
GD_CMP_COLORImage colors differ
GD_CMP_SIZE_XImage width differs
GD_CMP_SIZE_YImage heights differ
GD_CMP_TRANSPARENTTransparent color differs
GD_CMP_BACKGROUNDBackground color differs
GD_CMP_INTERLACEInterlaced setting differs
GD_CMP_TRUECOLORTruecolor vs palette differs

See also

+ +
+ + + + + + + + + + +
Defines a point in a 2D coordinate system using floating point values.
gdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.
void gdImagePolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws a closed polygon
void gdImageOpenPolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws an open polygon
void gdImageFilledPolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws a filled polygon
A rectangle in the coordinate space of the image
Compose a truecolor value from its components
int gdAlphaBlend (int dst,
int src)
Blend two colors
int gdLayerOverlay (int dst,
int src)
Overlay two colors
int gdLayerMultiply (int dst,
int src)
Overlay two colors with multiply effect
void gdImageAlphaBlending (gdImagePtr im,
int alphaBlendingArg)
Set the effect for subsequent drawing operations
int gdImageTrueColorToPaletteSetMethod (gdImagePtr im,
int method,
int speed)
Selects the quantization method
int gdImageSetInterpolationMethod(gdImagePtr im,
gdInterpolationMethod id)
Set the interpolation method for subsequent operations
gdInterpolationMethod gdImageGetInterpolationMethod(gdImagePtr im)
Get the current interpolation method
gdImagePtr gdImageCreate (int sx,
int sy)
gdImageCreate is called to create palette-based images, with no more than 256 colors.
gdImagePtr gdImageCreateTrueColor (int sx,
int sy)
gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors.
The data structure in which gd stores images.
gdFontPtr gdFontGetSmall (void)
Returns the built-in small font.
gdFontPtr gdFontGetLarge (void)
Returns the built-in large font.
Gets the alpha channel value
Gets the red channel value
Gets the green channel value
Gets the blue channel value
void gdImageSetStyle (gdImagePtr im,
int *style,
int noOfPixels)
Sets the style for following drawing operations
void gdImageSetBrush (gdImagePtr im,
gdImagePtr brush)
Sets the brush for following drawing operations
void gdImageSetTile (gdImagePtr im,
gdImagePtr tile)
gdIOCtx structures hold function pointers for doing image IO.
gdImagePtr gdImageCreateFromPngSource (gdSourcePtr inSource)
See gdImageCreateFromPng for documentation.
int gdImageColorExactAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Gets the exact color of the image
void gdImageGifAnimAdd(gdImagePtr im,
FILE *outFile,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)
This function writes GIF animation frames to GIF animation, which was initialized with gdImageGifAnimBegin.
void gdImagePngToSink (gdImagePtr im,
gdSinkPtr outSink)
void gdImageColorTransparent (gdImagePtr im,
int color)
Sets the transparent color of the image
void gdImageInterlace (gdImagePtr im,
int interlaceArg)
Sets whether an image is interlaced
Gets the color of a pixel.
int gdImageGetPixel (gdImagePtr im,
int x,
int y)
Gets a pixel color as stored in the image.
Gets the color of a pixel.
int gdImageGetTrueColorPixel (gdImagePtr im,
int x,
int y)
Gets a pixel color always as truecolor value.
Gets the vertical resolution in DPI.
void gdImageSetResolution(gdImagePtr im,
const unsigned int res_x,
const unsigned int res_y)
Sets the resolution of an image.
Gets the horizontal resolution in DPI.
gdImagePtr gdImageCropAuto(gdImagePtr im,
const unsigned int mode)
Crop an image automatically
int gdImageCompare (gdImagePtr im1,
gdImagePtr im2)
Compare two images
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_bmp-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_bmp-c.html new file mode 100644 index 00000000000..487e43be691 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_bmp-c.html @@ -0,0 +1,53 @@ + + +BMP IO + + + + + + + + + +

BMP IO

Read and write BMP images.

Summary
BMP IORead and write BMP images.
Functions
gdImageBmpPtrOutputs the given image as BMP data, but using a gdIOCtx instead of a file.
gdImageBmpgdImageBmp outputs the specified image to the specified file in BMP format.
gdImageBmpCtxOutputs the given image as BMP data, but using a gdIOCtx instead of a file.
gdImageCreateFromBmp
gdImageCreateFromBmpPtr
gdImageCreateFromBmpCtx
+ +

Functions

+ +

gdImageBmpPtr

void * gdImageBmpPtr(gdImagePtr im,
int *size,
int compression)

Outputs the given image as BMP data, but using a gdIOCtx instead of a file.  See gdImageBmp.

Parameters

imthe image to save.
sizeOutput: size in bytes of the result.
compressionwhether to apply RLE or not.

Returns

A pointer to memory containing the image data or NULL on error.

+ +

gdImageBmp

void gdImageBmp(gdImagePtr im,
FILE *outFile,
int compression)

gdImageBmp outputs the specified image to the specified file in BMP format.  The file must be open for writing.  Under MSDOS and all versions of Windows, it is important to use “wb” as opposed to simply “w” as the mode when opening the file, and under Unix there is no penalty for doing so.  gdImageBmp does not close the file; your code must do so.

In addition, gdImageBmp allows to specify whether RLE compression should be applied.

Variants

gdImageBmpCtx write via a gdIOCtx instead of a file handle.

gdImageBmpPtr store the image file to memory.

Parameters

imthe image to save.
outFilethe output FILE* object.
compressionwhether to apply RLE or not.

Returns

nothing

+ +

gdImageBmpCtx

void gdImageBmpCtx(gdImagePtr im,
gdIOCtxPtr out,
int compression)

Outputs the given image as BMP data, but using a gdIOCtx instead of a file.  See gdImageBmp.

Parameters

imthe image to save.
outthe gdIOCtx to write to.
compressionwhether to apply RLE or not.
+ +

gdImageCreateFromBmp

gdImagePtr gdImageCreateFromBmp(FILE *inFile)
+ +

gdImageCreateFromBmpPtr

gdImagePtr gdImageCreateFromBmpPtr(int size,
void *data)
+ +

gdImageCreateFromBmpCtx

gdImagePtr gdImageCreateFromBmpCtx(gdIOCtxPtr infile)
+ +
+ + + + + + + + + + +
void * gdImageBmpPtr(gdImagePtr im,
int *size,
int compression)
Outputs the given image as BMP data, but using a gdIOCtx instead of a file.
gdIOCtx structures hold function pointers for doing image IO.
void gdImageBmp(gdImagePtr im,
FILE *outFile,
int compression)
gdImageBmp outputs the specified image to the specified file in BMP format.
void gdImageBmpCtx(gdImagePtr im,
gdIOCtxPtr out,
int compression)
Outputs the given image as BMP data, but using a gdIOCtx instead of a file.
gdImagePtr gdImageCreateFromBmp(FILE *inFile)
gdImagePtr gdImageCreateFromBmpPtr(int size,
void *data)
gdImagePtr gdImageCreateFromBmpCtx(gdIOCtxPtr infile)
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_map-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_map-c.html new file mode 100644 index 00000000000..7ebbf70b15d --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_map-c.html @@ -0,0 +1,39 @@ + + +gdColorMapLookup + + + + + + + + + +

gdColorMapLookup

int gdColorMapLookup(const gdColorMap color_map,
const char *color_name,
int *r,
int *g,
int *b)
+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_match-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_match-c.html new file mode 100644 index 00000000000..90d69c66106 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_match-c.html @@ -0,0 +1,39 @@ + + +gdImageColorMatch + + + + + + + + + +

gdImageColorMatch

int gdImageColorMatch (gdImagePtr im1,
gdImagePtr im2)

Bring the palette colors in im2 to be closer to im1.

+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_crop-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_crop-c.html new file mode 100644 index 00000000000..439f1bc44a1 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_crop-c.html @@ -0,0 +1,52 @@ + + +Cropping + + + + + + + + + +

Cropping

Crop an image

Some functions to crop images, automatically (auto detection of the border color), using a given color (with or without tolerance) or using a given rectangle.

Example

im2 = gdImageAutoCrop(im, GD_CROP_SIDES);
+if (im2) {
+    gdImageDestroy(im); // unless you need the original image subsequently
+    // do something with the cropped image
+}
+gdImageDestroy(im2);
Summary
CroppingCrop an image
Functions
gdImageCropCrop an image to a given rectangle
gdImageCropAutoCrop an image automatically
gdImageCropThresholdCrop an image using a given color
+ +

Functions

+ +

gdImageCrop

gdImagePtr gdImageCrop(gdImagePtr src,
const gdRect *crop)

Crop an image to a given rectangle

Parameters

srcThe image.
cropThe cropping rectangle, see gdRect.

Returns

The newly created cropped image, or NULL on failure.

See also

+ +

gdImageCropAuto

gdImagePtr gdImageCropAuto(gdImagePtr im,
const unsigned int mode)

Crop an image automatically

This function detects the cropping area according to the given mode.

Parameters

imThe image.
modeThe cropping mode, see gdCropMode.

Returns

The newly created cropped image, or NULL on failure.

See also

+ +

gdImageCropThreshold

gdImagePtr gdImageCropThreshold(gdImagePtr im,
const unsigned int color,
const float threshold)

Crop an image using a given color

The threshold defines the tolerance to be used while comparing the image color and the color to crop.  The method used to calculate the color difference is based on the color distance in the RGB(A) cube.

Parameters

imThe image.
colorThe crop color.
thresholdThe crop threshold.

Returns

The newly created cropped image, or NULL on failure.

See also

+ +
+ + + + + + + + + + +
gdImagePtr gdImageCrop(gdImagePtr src,
const gdRect *crop)
Crop an image to a given rectangle
gdImagePtr gdImageCropAuto(gdImagePtr im,
const unsigned int mode)
Crop an image automatically
gdImagePtr gdImageCropThreshold(gdImagePtr im,
const unsigned int color,
const float threshold)
Crop an image using a given color
A rectangle in the coordinate space of the image
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filename-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filename-c.html new file mode 100644 index 00000000000..40208d43008 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filename-c.html @@ -0,0 +1,47 @@ + + +/parent/libgd/docs/naturaldocs/tmp/gd_filename.c + + + + + + + + + +

gd_filename.c

Summary
gd_filename.c
Functions
gdSupportsFileTypeTests if a given file type is supported by GD.
gdImageCreateFromFileRead an image file of any supported.
gdImageFileWrites an image to a file in the format indicated by the filename.
+ +

Functions

+ +

gdSupportsFileType

int gdSupportsFileType(const char *filename,
int writing)

Tests if a given file type is supported by GD.

Given the name of an image file (which does not have to exist), returns 1 (i.e.  TRUE) if gdImageCreateFromFile can read a file of that type.  This is useful if you do not know which image types were enabled at compile time.

If writing is true, the result will be true only if gdImageFile can write a file of this type.

Note that filename parsing is done exactly the same as is done by gdImageCreateFromFile and gdImageFile and is subject to the same limitations.

Assuming LibGD is compiled with support for these image types, the following extensions are supported:

  • .gif
  • .gd, .gd2
  • .wbmp
  • .bmp
  • .xbm
  • .tga
  • .png
  • .jpg, .jpeg
  • .tiff, .tif
  • .webp
  • .xpm

Names are parsed case-insenstively.

Parameters

filenameFilename with tested extension.
writingFlag: true tests if writing works

Returns

GD_TRUE (1) if the file type is supported, GD_FALSE (0) if not.

+ +

gdImageCreateFromFile

gdImagePtr gdImageCreateFromFile(const char *filename)

Read an image file of any supported.

Given the path to a file, gdImageCreateFromFile will open the file, read its contents with the appropriate gdImageCreateFrom* function and return it.

File type is determined by the filename extension, so having an incorrect extension will probably not work.  For example, renaming PNG image “foo.png” to “foo.gif” and then attempting to load it will fail even if GD supports both formats.  See <gdSupportsFiletype> for more details.

NULL is returned on error.

Parameters

filenamethe input file name

Returns

A pointer to the new image or NULL if an error occurred.

+ +

gdImageFile

int gdImageFile(gdImagePtr im,
const char *filename)

Writes an image to a file in the format indicated by the filename.

File type is determined by the extension of the file name.  See <gdSupportsFiletype> for an overview of the parsing.

For file types that require extra arguments, gdImageFile attempts to use sane defaults:

<gdImageGd2>chunk size = 0, compression is enabled.
<gdImageJpeg>quality = -1 (i.e. the reasonable default)
<gdImageWBMP>foreground is the darkest available color

Everything else is called with the two-argument function and so will use the default values.

gdImageFile has some rudimentary error detection and will return GD_FALSE (0) if a detectable error occurred.  However, the image loaders do not normally return their error status so a result of GD_TRUE (1) does **not** mean the file was saved successfully.

Parameters

imThe image to save.
filenameThe path to the file to which the image is saved.

Returns

GD_FALSE (0) if an error was detected, GD_TRUE (1) if not.

+ +
+ + + + + + + + + + +
int gdSupportsFileType(const char *filename,
int writing)
Tests if a given file type is supported by GD.
gdImagePtr gdImageCreateFromFile(const char *filename)
Read an image file of any supported.
int gdImageFile(gdImagePtr im,
const char *filename)
Writes an image to a file in the format indicated by the filename.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filter-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filter-c.html new file mode 100644 index 00000000000..3a09d8b5080 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filter-c.html @@ -0,0 +1,81 @@ + + +Image Filters + + + + + + + + + +

Image Filters

Summary
Image Filters
Functions
gdImageScatter
gdImageScatterColor
gdImageScatterEx
gdImagePixelate
gdImageNegateInvert an image
gdImageGrayScaleConvert an image to grayscale
gdImageBrightnessChange the brightness of an image
gdImageContrastChange the contrast of an image
gdImageColorChange channel values of an image
gdImageConvolutionApply a convolution matrix to an image
gdImageSelectiveBlur
gdImageEdgeDetectQuickEdge detection of an image
gdImageGaussianBlurgdImageGaussianBlur performs a Gaussian blur of radius 1 on the image.
gdImageEmbossEmboss an image
gdImageMeanRemovalMean removal of an image
gdImageSmoothSmooth an image
gdImageCopyGaussianBlurredReturn a copy of the source image src blurred according to the parameters using the Gaussian Blur algorithm.
+ +

Functions

+ +

gdImageScatter

int gdImageScatter(gdImagePtr im,
int sub,
int plus)
+ +

gdImageScatterColor

int gdImageScatterColor(gdImagePtr im,
int sub,
int plus,
int colors[],
unsigned int num_colors)
+ +

gdImageScatterEx

int gdImageScatterEx(gdImagePtr im,
gdScatterPtr scatter)
+ +

gdImagePixelate

int gdImagePixelate(gdImagePtr im,
int block_size,
const unsigned int mode)
+ +

gdImageNegate

int gdImageNegate(gdImagePtr src)

Invert an image

Parameters

srcThe image.

Returns

Non-zero on success, zero on failure.

+ +

gdImageGrayScale

int gdImageGrayScale(gdImagePtr src)

Convert an image to grayscale

The red, green and blue components of each pixel are replaced by their weighted sum using the same coefficients as the REC.601 luma (Y’) calculation.  The alpha components are retained.

For palette images the result may differ due to palette limitations.

Parameters

srcThe image.

Returns

Non-zero on success, zero on failure.

+ +

gdImageBrightness

int gdImageBrightness(gdImagePtr src,
int brightness)

Change the brightness of an image

Parameters

srcThe image.
brightnessThe value to add to the color channels of all pixels.

Returns

Non-zero on success, zero on failure.

See also

+ +

gdImageContrast

int gdImageContrast(gdImagePtr src,
double contrast)

Change the contrast of an image

Parameters

srcThe image.
contrastThe contrast adjustment value.  Negative values increase, postive values decrease the contrast.  The larger the absolute value, the stronger the effect.

Returns

Non-zero on success, zero on failure.

See also

+ +

gdImageColor

int gdImageColor(gdImagePtr src,
const int red,
const int green,
const int blue,
const int alpha)

Change channel values of an image

Parameters

srcThe image.
redThe value to add to the red channel of all pixels.
greenThe value to add to the green channel of all pixels.
blueThe value to add to the blue channel of all pixels.
alphaThe value to add to the alpha channel of all pixels.

Returns

Non-zero on success, zero on failure.

See also

+ +

gdImageConvolution

int gdImageConvolution(gdImagePtr src,
float filter[3][3],
float filter_div,
float offset)

Apply a convolution matrix to an image

Depending on the matrix a wide range of effects can be accomplished, e.g. blurring, sharpening, embossing and edge detection.

Parameters

srcThe image.
filterThe 3x3 convolution matrix.
filter_divThe value to divide the convoluted channel values by.
offsetThe value to add to the convoluted channel values.

Returns

Non-zero on success, zero on failure.

See also

+ +

gdImageSelectiveBlur

int gdImageSelectiveBlur(gdImagePtr src)
+ +

gdImageEdgeDetectQuick

int gdImageEdgeDetectQuick(gdImagePtr src)

Edge detection of an image

Parameters

srcThe image.

Returns

Non-zero on success, zero on failure.

See also

+ +

gdImageGaussianBlur

int gdImageGaussianBlur(gdImagePtr im)

gdImageGaussianBlur performs a Gaussian blur of radius 1 on the image.  The image is modified in place.

NOTE: You will almost certain want to use gdImageCopyGaussianBlurred instead, as it allows you to change your kernel size and sigma value.  Future versions of this function may fall back to calling it instead of gdImageConvolution, causing subtle changes so be warned.

Parameters

imThe image to blur

Returns

GD_TRUE (1) on success, GD_FALSE (0) on failure.

+ +

gdImageEmboss

int gdImageEmboss(gdImagePtr im)

Emboss an image

Parameters

imThe image.

Returns

Non-zero on success, zero on failure.

See also

+ +

gdImageMeanRemoval

int gdImageMeanRemoval(gdImagePtr im)

Mean removal of an image

Parameters

imThe image.

Returns

Non-zero on success, zero on failure.

See also

+ +

gdImageSmooth

int gdImageSmooth(gdImagePtr im,
float weight)

Smooth an image

Parameters

imThe image.
weightThe strength of the smoothing.

Returns

Non-zero on success, zero on failure.

See also

+ +

gdImageCopyGaussianBlurred

Return a copy of the source image src blurred according to the parameters using the Gaussian Blur algorithm.

radius is a radius, not a diameter so a radius of 2 (for example) will blur across a region 5 pixels across (2 to the center, 1 for the center itself and another 2 to the other edge).

sigma represents the “fatness” of the curve (lower == fatter).  If sigma is less than or equal to 0, gdImageCopyGaussianBlurred ignores it and instead computes an “optimal” value.  Be warned that future versions of this function may compute sigma differently.

The resulting image is always truecolor.

More Details

A Gaussian Blur is generated by replacing each pixel’s color values with the average of the surrounding pixels’ colors.  This region is a circle whose radius is given by argument radius.  Thus, a larger radius will yield a blurrier image.

This average is not a simple mean of the values.  Instead, values are weighted using the Gaussian function (roughly a bell curve centered around the destination pixel) giving it much more influence on the result than its neighbours.  Thus, a fatter curve will give the center pixel more weight and make the image less blurry; lower sigma values will yield flatter curves.

Currently, gdImageCopyGaussianBlurred computes the default sigma as

(2/3)*radius

Note, however that we reserve the right to change this if we find a better ratio.  If you absolutely need the current sigma value, you should set it yourself.

Parameters

srcthe source image
radiusthe blur radius (not diameter--range is 2*radius + 1)
sigmathe sigma value or a value <= 0.0 to use the computed default

Returns

The new image or NULL if an error occurred.  The result is always truecolor.

Example

FILE *in;
+gdImagePtr result, src;
+
+in = fopen("foo.png", "rb");
+src = gdImageCreateFromPng(in);
+
+result = gdImageCopyGaussianBlurred(im, src->sx / 10, -1.0);
+ +
+ + + + + + + + + + +
int gdImageScatter(gdImagePtr im,
int sub,
int plus)
int gdImageScatterColor(gdImagePtr im,
int sub,
int plus,
int colors[],
unsigned int num_colors)
int gdImageScatterEx(gdImagePtr im,
gdScatterPtr scatter)
int gdImagePixelate(gdImagePtr im,
int block_size,
const unsigned int mode)
int gdImageNegate(gdImagePtr src)
Invert an image
int gdImageGrayScale(gdImagePtr src)
Convert an image to grayscale
int gdImageBrightness(gdImagePtr src,
int brightness)
Change the brightness of an image
int gdImageContrast(gdImagePtr src,
double contrast)
Change the contrast of an image
int gdImageColor(gdImagePtr src,
const int red,
const int green,
const int blue,
const int alpha)
Change channel values of an image
int gdImageConvolution(gdImagePtr src,
float filter[3][3],
float filter_div,
float offset)
Apply a convolution matrix to an image
int gdImageSelectiveBlur(gdImagePtr src)
int gdImageEdgeDetectQuick(gdImagePtr src)
Edge detection of an image
int gdImageGaussianBlur(gdImagePtr im)
gdImageGaussianBlur performs a Gaussian blur of radius 1 on the image.
int gdImageEmboss(gdImagePtr im)
Emboss an image
int gdImageMeanRemoval(gdImagePtr im)
Mean removal of an image
int gdImageSmooth(gdImagePtr im,
float weight)
Smooth an image
Return a copy of the source image src blurred according to the parameters using the Gaussian Blur algorithm.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd-c.html new file mode 100644 index 00000000000..70914c519e7 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd-c.html @@ -0,0 +1,57 @@ + + +GD IO + + + + + + + + + +

GD IO

Read and write GD images.

The GD image format is a proprietary image format of libgd.  It has to be regarded as being obsolete, and should only be used for development and testing purposes.

Structure of a GD image file

  • file header
  • color header (either truecolor or palette)
  • image data

All numbers are stored in big-endian format.

File header structure

signature1 word (“\xFF\xFE” for truecolor, “\xFF\xFF” for palette)
width1 word
height1 word

Truecolor image color header

truecolor1 byte (always “\001”)
transparent1 dword (ARGB color)

Palette image color header

truecolor1 byte (always “\0”)
count1 word (the number of used palette colors)
transparent1 dword (ARGB color)
palette256 dwords (RGBA colors)

Image data

Sequential pixel data; row-major from top to bottom, left to right:

  • 1 byte per pixel for palette images
  • 1 dword (ARGB) per pixel for truecolor images
Summary
GD IORead and write GD images.
Functions
gdImageCreateFromGdgdImageCreateFromGd is called to load images from gd format files.
gdImageCreateFromGdPtr
gdImageCreateFromGdCtxReads in a GD image via a gdIOCtx struct.
gdImageGd
gdImageGdPtr
+ +

Functions

+ +

gdImageCreateFromGd

gdImagePtr gdImageCreateFromGd (FILE *inFile)

gdImageCreateFromGd is called to load images from gd format files.  Invoke gdImageCreateFromGd with an already opened pointer to a file containing the desired image in the gd file format, which is specific to gd and intended for very fast loading.  (It is not intended for compression; for compression, use PNG or JPEG.)

gdImageCreateFromGd returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a gd format image).  gdImageCreateFromGd does not close the file.  You can inspect the sx and sy members of the image to determine its size.  The image must eventually be destroyed using gdImageDestroy.

Variants

gdImageCreateFromGdPtr creates an image from GD data (i.e. the contents of a GD file) already in memory.

gdImageCreateFromGdCtx reads in an image using the functions in a gdIOCtx struct.

Parameters

infileThe input FILE pointer

Returns

A pointer to the new image or NULL if an error occurred.

Example

gdImagePtr im;
+FILE *in;
+in = fopen("mygd.gd", "rb");
+im = gdImageCreateFromGd(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);
+ +

gdImageCreateFromGdPtr

gdImagePtr gdImageCreateFromGdPtr (int size,
void *data)

Parameters

sizesize of GD data in bytes.
dataGD data (i.e. contents of a GIF file).

Reads in GD data from memory.  See gdImageCreateFromGd.

+ +

gdImageCreateFromGdCtx

gdImagePtr gdImageCreateFromGdCtx (gdIOCtxPtr in)

Reads in a GD image via a gdIOCtx struct.  See gdImageCreateFromGd.

+ +

gdImageGd

void gdImageGd (gdImagePtr im,
FILE *outFile)
+ +

gdImageGdPtr

void * gdImageGdPtr (gdImagePtr im,
int *size)
+ +
+ + + + + + + + + + +
gdImagePtr gdImageCreateFromGd (FILE *inFile)
gdImageCreateFromGd is called to load images from gd format files.
gdImagePtr gdImageCreateFromGdPtr (int size,
void *data)
gdImagePtr gdImageCreateFromGdCtx (gdIOCtxPtr in)
Reads in a GD image via a gdIOCtx struct.
gdIOCtx structures hold function pointers for doing image IO.
void gdImageGd (gdImagePtr im,
FILE *outFile)
void * gdImageGdPtr (gdImagePtr im,
int *size)
The data structure in which gd stores images.
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd2-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd2-c.html new file mode 100644 index 00000000000..475c807dd14 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd2-c.html @@ -0,0 +1,63 @@ + + +GD2 IO + + + + + + + + + +

GD2 IO

Read and write GD2 images.

The GD2 image format is a proprietary image format of libgd.  It has to be regarded as being obsolete, and should only be used for development and testing purposes.

Structure of a GD2 image file

  • file header
  • chunk headers (only for compressed data)
  • color header (either truecolor or palette)
  • chunks of image data (chunk-row-major, top to bottom, left to right)

All numbers are stored in big-endian format.

File header structure

signature4 bytes (always “gd2\0”)
version1 word (e.g.  “\0\002”)
width1 word
height1 word
chunk_size1 word
format1 word
x_chunk_count1 word
y_chunk_count1 word

Recognized formats

1raw palette image data
2compressed palette image data
3raw truecolor image data
4compressed truecolor image data

Chunk header

offset1 dword
size1 dword

There are x_chunk_count * y_chunk_count chunk headers.

Truecolor image color header

truecolor1 byte (always “\001”)
transparent1 dword (ARGB color)

Palette image color header

truecolor1 byte (always “\0”)
count1 word (the number of used palette colors)
transparent1 dword (ARGB color)
palette256 dwords (RGBA colors)

Chunk structure

Sequential pixel data of a rectangular area (chunk_size x chunk_size), row-major from top to bottom, left to right:

  • 1 byte per pixel for palette images
  • 1 dword (ARGB) per pixel for truecolor images

Depending on format, the chunk may be ZLIB compressed.

Summary
GD2 IORead and write GD2 images.
Functions
gdImageCreateFromGd2gdImageCreateFromGd2 is called to load images from gd2 format files.
gdImageCreateFromGd2Ptr
gdImageCreateFromGd2CtxReads in a GD2 image via a gdIOCtx struct.
gdImageCreateFromGd2PartgdImageCreateFromGd2Part is called to load parts of images from gd2 format files.
gdImageCreateFromGd2PartPtr
gdImageCreateFromGd2PartCtx
gdImageGd2
gdImageGd2Ptr
+ +

Functions

+ +

gdImageCreateFromGd2

gdImagePtr gdImageCreateFromGd2 (FILE *inFile)

gdImageCreateFromGd2 is called to load images from gd2 format files.  Invoke gdImageCreateFromGd2 with an already opened pointer to a file containing the desired image in the gd2 file format, which is specific to gd2 and intended for fast loading of parts of large images.  (It is a compressed format, but generally not as good as maximum compression of the entire image would be.)

gdImageCreateFromGd2 returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a gd format image).  gdImageCreateFromGd2 does not close the file.  You can inspect the sx and sy members of the image to determine its size.  The image must eventually be destroyed using gdImageDestroy.

Variants

gdImageCreateFromGd2Ptr creates an image from GD data (i.e. the contents of a GD2 file) already in memory.

gdImageCreateFromGd2Ctx reads in an image using the functions in a gdIOCtx struct.

Parameters

infileThe input FILE pointer

Returns

A pointer to the new image or NULL if an error occurred.

Example

gdImagePtr im;
+FILE *in;
+in = fopen("mygd.gd2", "rb");
+im = gdImageCreateFromGd2(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);
+ +

gdImageCreateFromGd2Ptr

gdImagePtr gdImageCreateFromGd2Ptr (int size,
void *data)

Parameters

sizesize of GD2 data in bytes.
dataGD2 data (i.e. contents of a GIF file).

See gdImageCreateFromGd2.

+ +

gdImageCreateFromGd2Ctx

gdImagePtr gdImageCreateFromGd2Ctx (gdIOCtxPtr in)

Reads in a GD2 image via a gdIOCtx struct.  See gdImageCreateFromGd2.

+ +

gdImageCreateFromGd2Part

gdImagePtr gdImageCreateFromGd2Part (FILE *inFile,
int srcx,
int srcy,
int w,
int h)

gdImageCreateFromGd2Part is called to load parts of images from gd2 format files.  Invoked in the same way as gdImageCreateFromGd2, but with extra parameters indicating the source (x, y) and width/height of the desired image.  gdImageCreateFromGd2Part returns a gdImagePtr to the new image, or NULL if unable to load the image.  The image must eventually be destroyed using gdImageDestroy.

Variants

gdImageCreateFromGd2PartPtr creates an image from GD2 data (i.e. the contents of a GD2 file) already in memory.

gdImageCreateFromGd2Ctx reads in an image using the functions in a gdIOCtx struct.

Parameters

infileThe input FILE pointer
srcx, srcyThe source X and Y coordinates
w, hThe resulting image’s width and height

Returns

A pointer to the new image or NULL if an error occurred.

+ +

gdImageCreateFromGd2PartPtr

gdImagePtr gdImageCreateFromGd2PartPtr (int size,
void *data,
int srcx,
int srcy,
int w,
int h)

Parameters

sizesize of GD data in bytes.
dataGD data (i.e. contents of a GIF file).
srcx, srcyThe source X and Y coordinates
w, hThe resulting image’s width and height

Reads in part of a GD2 image file stored from memory.  See gdImageCreateFromGd2Part.

+ +

gdImageCreateFromGd2PartCtx

gdImagePtr gdImageCreateFromGd2PartCtx (gdIOCtx *in,
int srcx,
int srcy,
int w,
int h)

Parameters

inThe data source.
srcx, srcyThe source X and Y coordinates
w, hThe resulting image’s width and height

Reads in part of a GD2 data image file via a gdIOCtx struct.  See gdImageCreateFromGd2Part.

+ +

gdImageGd2

void gdImageGd2 (gdImagePtr im,
FILE *outFile,
int cs,
int fmt)
+ +

gdImageGd2Ptr

void * gdImageGd2Ptr (gdImagePtr im,
int cs,
int fmt,
int *size)
+ +
+ + + + + + + + + + +
gdImagePtr gdImageCreateFromGd2 (FILE *inFile)
gdImageCreateFromGd2 is called to load images from gd2 format files.
gdImagePtr gdImageCreateFromGd2Ptr (int size,
void *data)
gdImagePtr gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
Reads in a GD2 image via a gdIOCtx struct.
gdIOCtx structures hold function pointers for doing image IO.
gdImagePtr gdImageCreateFromGd2Part (FILE *inFile,
int srcx,
int srcy,
int w,
int h)
gdImageCreateFromGd2Part is called to load parts of images from gd2 format files.
gdImagePtr gdImageCreateFromGd2PartPtr (int size,
void *data,
int srcx,
int srcy,
int w,
int h)
gdImagePtr gdImageCreateFromGd2PartCtx (gdIOCtx *in,
int srcx,
int srcy,
int w,
int h)
void gdImageGd2 (gdImagePtr im,
FILE *outFile,
int cs,
int fmt)
void * gdImageGd2Ptr (gdImagePtr im,
int cs,
int fmt,
int *size)
The data structure in which gd stores images.
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_in-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_in-c.html new file mode 100644 index 00000000000..8fcf1556eb8 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_in-c.html @@ -0,0 +1,54 @@ + + +GIF Input + + + + + + + + + +

GIF Input

Read GIF images.

+ +

Functions

+ +

gdImageCreateFromGif

gdImagePtr gdImageCreateFromGif(FILE *fdFile)

gdImageCreateFromGif is called to load images from GIF format files.  Invoke gdImageCreateFromGif with an already opened pointer to a file containing the desired image.

gdImageCreateFromGif returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a GIF image).  gdImageCreateFromGif does not close the file.  You can inspect the sx and sy members of the image to determine its size.  The image must eventually be destroyed using gdImageDestroy.

Variants

gdImageCreateFromGifPtr creates an image from GIF data (i.e. the contents of a GIF file) already in memory.

gdImageCreateFromGifCtx reads in an image using the functions in a gdIOCtx struct.

Parameters

infileThe input FILE pointer

Returns

A pointer to the new image or NULL if an error occurred.

Example

gdImagePtr im;
+... inside a function ...
+FILE *in;
+in = fopen("mygif.gif", "rb");
+im = gdImageCreateFromGif(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);
+ +

gdImageCreateFromGifPtr

gdImagePtr gdImageCreateFromGifPtr (int size,
void *data)

Parameters

sizesize of GIF data in bytes.
dataGIF data (i.e. contents of a GIF file).

See gdImageCreateFromGif.

+ +

gdImageCreateFromGifCtx

gdImagePtr gdImageCreateFromGifCtx(gdIOCtxPtr fd)

See gdImageCreateFromGif.

+ +
+ + + + + + + + + + +
gdImagePtr gdImageCreateFromGif(FILE *fdFile)
gdImageCreateFromGif is called to load images from GIF format files.
gdImagePtr gdImageCreateFromGifPtr (int size,
void *data)
gdImagePtr gdImageCreateFromGifCtx(gdIOCtxPtr fd)
See gdImageCreateFromGif.
The data structure in which gd stores images.
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
gdIOCtx structures hold function pointers for doing image IO.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_out-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_out-c.html new file mode 100644 index 00000000000..9317873dccb --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_out-c.html @@ -0,0 +1,124 @@ + + +GIF Output + + + + + + + + + +

GIF Output

Write GIF images.

Summary
GIF OutputWrite GIF images.
Functions
gdImageGifPtrIdentical to gdImageGif except that it returns a pointer to a memory area with the GIF data.
gdImageGifgdImageGif outputs the specified image to the specified file in GIF format.
gdImageGifCtxWrites a GIF image via a gdIOCtx.
gdImageGifAnimBeginPtrLike gdImageGifAnimBegin except that it outputs to a memory buffer.
gdImageGifAnimBeginThis function must be called as the first function when creating a GIF animation.
gdImageGifAnimBeginCtxLike gdImageGifAnimBegin except that it outputs to gdIOCtx.
gdImageGifAnimAddPtrLike gdImageGifAnimAdd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.
gdImageGifAnimAddThis function writes GIF animation frames to GIF animation, which was initialized with gdImageGifAnimBegin.
gdImageGifAnimAddCtxAdds an animation frame via a <gdIOCtxPtr>.
gdImageGifAnimEndTerminates the GIF file properly.
gdImageGifAnimEndPtrLike gdImageGifAnimEnd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.
gdImageGifAnimEndCtxLike gdImageGifAnimEnd, but writes its data via a gdIOCtx.
+ +

Functions

+ +

gdImageGifPtr

void * gdImageGifPtr(gdImagePtr im,
int *size)

Identical to gdImageGif except that it returns a pointer to a memory area with the GIF data.  This memory must be freed by the caller when it is no longer needed.

The caller must invoke gdFree, not free().  This is because it is not guaranteed that libgd will use the same implementation of malloc, free, etc. as your proggram.

The ‘size’ parameter receives the total size of the block of memory.

Parameters

imThe image to write
sizeOutput: the size of the resulting image.

Returns

A pointer to the GIF data or NULL if an error occurred.

+ +

gdImageGif

void gdImageGif(gdImagePtr im,
FILE *outFile)

gdImageGif outputs the specified image to the specified file in GIF format.  The file must be open for binary writing.  (Under MSDOS and all versions of Windows, it is important to use “wb” as opposed to simply “w” as the mode when opening the file; under Unix there is no penalty for doing so).  gdImageGif does not close the file; your code must do so.

GIF does not support true color; GIF images can contain a maximum of 256 colors.  If the image to be written is a truecolor image, such as those created with gdImageCreateTrueColor or loaded from a JPEG or a truecolor PNG image file, a palette-based temporary image will automatically be created internally using the gdImageCreatePaletteFromTrueColor function.  The original image pixels are not modified.  This conversion produces high quality palettes but does require some CPU time.  If you are regularly converting truecolor to palette in this way, you should consider creating your image as a palette-based image in the first place.

Variants

gdImageGifCtx outputs the image via a gdIOCtx struct.

gdImageGifPtr stores the image in a large array of bytes.

Parameters

imThe image to write
outFileThe FILE pointer to write the image to.

Returns

Nothing

Example

gdImagePtr im;
+int black, white;
+FILE *out;
+// Create the image
+im = gdImageCreate(100, 100);
+// Allocate background
+white = gdImageColorAllocate(im, 255, 255, 255);
+// Allocate drawing color
+black = gdImageColorAllocate(im, 0, 0, 0);
+// Draw rectangle
+gdImageRectangle(im, 0, 0, 99, 99, black);
+// Open output file in binary mode
+out = fopen("rect.gif", "wb");
+// Write GIF
+gdImageGif(im, out);
+// Close file
+fclose(out);
+// Destroy image
+gdImageDestroy(im);
+ +

gdImageGifCtx

void gdImageGifCtx(gdImagePtr im,
gdIOCtxPtr out)

Writes a GIF image via a gdIOCtx.  See gdImageGif.

Parameters

imThe image to write
outThe gdIOCtx struct used to do the writing.

Returns

Nothing.

+ +

gdImageGifAnimBeginPtr

void * gdImageGifAnimBeginPtr(gdImagePtr im,
int *size,
int GlobalCM,
int Loops)

Like gdImageGifAnimBegin except that it outputs to a memory buffer.  See gdImageGifAnimBegin.

The returned memory must be freed by the caller when it is no longer needed.  **The caller must invoke <gdFree>(), not free()**, unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time (but don’t; it could always change).

The ‘size’ parameter receives the total size of the block of memory.

Parameters

imThe reference image
sizeOutput: the size in bytes of the result.
GlobalCMGlobal colormap flag: 1 -> yes, 0 -> no, -1 -> do default
LoopsLoop count; 0 -> infinite, -1 means no loop

Returns

A pointer to the resulting data (the contents of the start of the GIF) or NULL if an error occurred.

+ +

gdImageGifAnimBegin

void gdImageGifAnimBegin(gdImagePtr im,
FILE *outFile,
int GlobalCM,
int Loops)

This function must be called as the first function when creating a GIF animation.  It writes the correct GIF file headers to selected file output, and prepares for frames to be added for the animation.  The image argument is not used to produce an image frame to the file, it is only used to establish the GIF animation frame size, interlacing options and the color palette.  gdImageGifAnimAdd is used to add the first and subsequent frames to the animation, and the animation must be terminated by writing a semicolon character (;) to it or by using gdImageGifAnimEnd to do that.

The GlobalCM flag indicates if a global color map (or palette) is used in the GIF89A header.  A nonzero value specifies that a global color map should be used to reduce the size of the animation.  Of course, if the color maps of individual frames differ greatly, a global color map may not be a good idea.  GlobalCM=1 means write global color map, GlobalCM=0 means do not, and GlobalCM=-1 means to do the default, which currently is to use a global color map.

If Loops is 0 or greater, the Netscape 2.0 extension for animation loop count is written.  0 means infinite loop count.  -1 means that the extension is not added which results in no looping.  -1 is the default.

Variants

gdImageGifAnimBeginCtx outputs the image via a gdIOCtx struct.

gdImageGifAnimBeginPtr stores the image in a large array of bytes.

Parameters

imThe reference image
outfileThe output FILE*.
GlobalCMGlobal colormap flag: 1 -> yes, 0 -> no, -1 -> do default
LoopsLoop count; 0 -> infinite, -1 means no loop

Returns

Nothing.

Example

See gdImageGifAnimBegin.

+ +

gdImageGifAnimBeginCtx

void gdImageGifAnimBeginCtx(gdImagePtr im,
gdIOCtxPtr out,
int GlobalCM,
int Loops)

Like gdImageGifAnimBegin except that it outputs to gdIOCtx.  See gdImageGifAnimBegin.

Parameters

imThe reference image
outPointer to the output gdIOCtx.
GlobalCMGlobal colormap flag: 1 -> yes, 0 -> no, -1 -> do default
LoopsLoop count; 0 -> infinite, -1 means no loop

Returns

Nothing.

+ +

gdImageGifAnimAddPtr

void * gdImageGifAnimAddPtr(gdImagePtr im,
int *size,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)

Like gdImageGifAnimAdd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.

This memory must be freed by the caller when it is no longer needed.  **The caller must invoke <gdFree>(), not free(),** unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time (but don’t; it could always change).

The ‘size’ parameter receives the total size of the block of memory.

Parameters

imThe image to add.
sizeOutput: the size of the resulting buffer.
LocalCMFlag.  If 1, use a local color map for this frame.
LeftOfsLeft offset of image in frame.
TopOfsTop offset of image in frame.
DelayDelay before next frame (in 1/100 seconds)
DisposalMODE: How to treat this frame when the next one loads.
previmNULL or a pointer to the previous image written.

Returns

Pointer to the resulting data or NULL if an error occurred.

+ +

gdImageGifAnimAdd

void gdImageGifAnimAdd(gdImagePtr im,
FILE *outFile,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)

This function writes GIF animation frames to GIF animation, which was initialized with gdImageGifAnimBegin.  With LeftOfs and TopOfs you can place this frame in different offset than (0,0) inside the image screen as defined in gdImageGifAnimBegin.  Delay between the previous frame and this frame is in 1/100s units.  Disposal is usually gdDisposalNone, meaning that the pixels changed by this frame should remain on the display when the next frame begins to render, but can also be gdDisposalUnknown (not recommended), gdDisposalRestoreBackground (restores the first allocated color of the global palette), or gdDisposalRestorePrevious (restores the appearance of the affected area before the frame was rendered).  Only gdDisposalNone is a sensible choice for the first frame.  If previm is passed, the built-in GIF optimizer will always use gdDisposalNone regardless of the Disposal parameter.

Setting the LocalCM flag to 1 adds a local palette for this image to the animation.  Otherwise the global palette is assumed and the user must make sure the palettes match.  Use gdImagePaletteCopy to do that.

Automatic optimization is activated by giving the previous image as a parameter.  This function then compares the images and only writes the changed pixels to the new frame in animation.  The Disposal parameter for optimized animations must be set to 1, also for the first frame.  LeftOfs and TopOfs parameters are ignored for optimized frames.  To achieve good optimization, it is usually best to use a single global color map.  To allow gdImageGifAnimAdd to compress unchanged pixels via the use of a transparent color, the image must include a transparent color.

Variants

gdImageGifAnimAddCtx outputs its data via a gdIOCtx struct.

gdImageGifAnimAddPtr outputs its data to a memory buffer which it returns.

Parameters

imThe image to add.
outfileThe output FILE* being written.
LocalCMFlag.  If 1, use a local color map for this frame.
LeftOfsLeft offset of image in frame.
TopOfsTop offset of image in frame.
DelayDelay before next frame (in 1/100 seconds)
DisposalMODE: How to treat this frame when the next one loads.
previmNULL or a pointer to the previous image written.

Returns

Nothing.

Example

{
+gdImagePtr im, im2, im3;
+int black, white, trans;
+FILE *out;
+
+im = gdImageCreate(100, 100);     // Create the image
+white = gdImageColorAllocate(im, 255, 255, 255); // Allocate background
+black = gdImageColorAllocate(im, 0, 0, 0); // Allocate drawing color
+trans = gdImageColorAllocate(im, 1, 1, 1); // trans clr for compression
+gdImageRectangle(im, 0, 0, 10, 10, black); // Draw rectangle
+
+out = fopen("anim.gif", "wb");// Open output file in binary mode
+gdImageGifAnimBegin(im, out, 1, 3);// Write GIF hdr, global clr map,loops
+// Write the first frame.  No local color map.  Delay = 1s
+gdImageGifAnimAdd(im, out, 0, 0, 0, 100, 1, NULL);
+
+// construct the second frame
+im2 = gdImageCreate(100, 100);
+(void)gdImageColorAllocate(im2, 255, 255, 255); // White background
+gdImagePaletteCopy (im2, im);  // Make sure the palette is identical
+gdImageRectangle(im2, 0, 0, 15, 15, black);    // Draw something
+// Allow animation compression with transparent pixels
+gdImageColorTransparent (im2, trans);
+gdImageGifAnimAdd(im2, out, 0, 0, 0, 100, 1, im);  // Add second frame
+
+// construct the third frame
+im3 = gdImageCreate(100, 100);
+(void)gdImageColorAllocate(im3, 255, 255, 255); // white background
+gdImagePaletteCopy (im3, im); // Make sure the palette is identical
+gdImageRectangle(im3, 0, 0, 15, 20, black); // Draw something
+// Allow animation compression with transparent pixels
+gdImageColorTransparent (im3, trans);
+// Add the third frame, compressing against the second one
+gdImageGifAnimAdd(im3, out, 0, 0, 0, 100, 1, im2);
+gdImageGifAnimEnd(out);  // End marker, same as putc(';', out);
+fclose(out); // Close file
+
+// Destroy images
+gdImageDestroy(im);
+gdImageDestroy(im2);
+gdImageDestroy(im3);
+}
+ +

gdImageGifAnimAddCtx

void gdImageGifAnimAddCtx(gdImagePtr im,
gdIOCtxPtr out,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)

Adds an animation frame via a <gdIOCtxPtr>.  See gdImageGifAnimAdd>.

Parameters

imThe image to add.
outThe output <gdIOCtxPtr>.
LocalCMFlag.  If 1, use a local color map for this frame.
LeftOfsLeft offset of image in frame.
TopOfsTop offset of image in frame.
DelayDelay before next frame (in 1/100 seconds)
DisposalMODE: How to treat this frame when the next one loads.
previmNULL or a pointer to the previous image written.

Returns

Nothing.

+ +

gdImageGifAnimEnd

void gdImageGifAnimEnd(FILE *outFile)

Terminates the GIF file properly.

(Previous versions of this function’s documentation suggested just manually writing a semicolon (‘;’) instead since that is all this function does.  While that has no longer changed, we now suggest that you do not do this and instead always call gdImageGifAnimEnd (or equivalent) since later versions could possibly do more or different things.)

Variants

gdImageGifAnimEndCtx outputs its data via a gdIOCtx struct.

gdImageGifAnimEndPtr outputs its data to a memory buffer which it returns.

Parameters

outfilethe destination FILE*.

Returns

Nothing.

+ +

gdImageGifAnimEndPtr

void * gdImageGifAnimEndPtr(int *size)

Like gdImageGifAnimEnd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.

This memory must be freed by the caller when it is no longer needed.  **The caller must invoke <gdFree>(), not free(),** unless the caller is absolutely certain that the same implementations of malloc, free, etc. are used both at library build time and at application build time (but don’t; it could always change).

The ‘size’ parameter receives the total size of the block of memory.

Parameters

sizeOutput: the size of the resulting buffer.

Returns

Pointer to the resulting data or NULL if an error occurred.

+ +

gdImageGifAnimEndCtx

void gdImageGifAnimEndCtx(gdIOCtx *out)

Like gdImageGifAnimEnd, but writes its data via a gdIOCtx.

Parameters

outthe destination gdIOCtx.

Returns

Nothing.

+ +
+ + + + + + + + + + +
void * gdImageGifPtr(gdImagePtr im,
int *size)
Identical to gdImageGif except that it returns a pointer to a memory area with the GIF data.
void gdImageGif(gdImagePtr im,
FILE *outFile)
gdImageGif outputs the specified image to the specified file in GIF format.
void gdImageGifCtx(gdImagePtr im,
gdIOCtxPtr out)
Writes a GIF image via a gdIOCtx.
gdIOCtx structures hold function pointers for doing image IO.
void * gdImageGifAnimBeginPtr(gdImagePtr im,
int *size,
int GlobalCM,
int Loops)
Like gdImageGifAnimBegin except that it outputs to a memory buffer.
void gdImageGifAnimBegin(gdImagePtr im,
FILE *outFile,
int GlobalCM,
int Loops)
This function must be called as the first function when creating a GIF animation.
void gdImageGifAnimBeginCtx(gdImagePtr im,
gdIOCtxPtr out,
int GlobalCM,
int Loops)
Like gdImageGifAnimBegin except that it outputs to gdIOCtx.
void * gdImageGifAnimAddPtr(gdImagePtr im,
int *size,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)
Like gdImageGifAnimAdd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.
void gdImageGifAnimAdd(gdImagePtr im,
FILE *outFile,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)
This function writes GIF animation frames to GIF animation, which was initialized with gdImageGifAnimBegin.
void gdImageGifAnimAddCtx(gdImagePtr im,
gdIOCtxPtr out,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)
Adds an animation frame via a gdIOCtxPtr.
void gdImageGifAnimEnd(FILE *outFile)
Terminates the GIF file properly.
void * gdImageGifAnimEndPtr(int *size)
Like gdImageGifAnimEnd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.
void gdImageGifAnimEndCtx(gdIOCtx *out)
Like gdImageGifAnimEnd, but writes its data via a gdIOCtx.
void gdFree (void *ptr)
Frees memory that has been allocated by libgd functions.
gdImagePtr gdImageCreatePaletteFromTrueColor (gdImagePtr im,
int dither,
int colorsWanted)
Creates a new palette image from a truecolor image
Preserve previous frame
Not recommended
First allocated color of palette
Restore to before start of frame
void gdImagePaletteCopy (gdImagePtr to,
gdImagePtr from)
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_interpolation-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_interpolation-c.html new file mode 100644 index 00000000000..e510fc616ff --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_interpolation-c.html @@ -0,0 +1,57 @@ + + +/parent/libgd/docs/naturaldocs/tmp/gd_interpolation.c + + + + + + + + + +

gd_interpolation.c

Summary
gd_interpolation.c
gdImageScaleScale an image
gdImageRotateInterpolatedRotate an image
Affine Transformation
gdTransformAffineGetImageApplies an affine transformation to a region and return an image containing the complete transformation.
gdTransformAffineCopyApplies an affine transformation to a region and copy the result in a destination to the given position.
gdTransformAffineBoundingBoxReturns the bounding box of an affine transformation applied to a rectangular area gdRect
Interpolation Method
gdImageSetInterpolationMethodSet the interpolation method for subsequent operations
gdImageGetInterpolationMethodGet the current interpolation method
+ +

gdImageScale

gdImagePtr gdImageScale(const gdImagePtr src,
const unsigned int new_width,
const unsigned int new_height)

Scale an image

Creates a new image, scaled to the requested size using the current gdInterpolationMethod.

Note that GD_WEIGHTED4 is not yet supported by this function.

Parameters

srcThe source image.
new_widthThe new width.
new_heightThe new height.

Returns

The scaled image on success, NULL on failure.

See also

+ +

gdImageRotateInterpolated

gdImagePtr gdImageRotateInterpolated(const gdImagePtr src,
const float angle,
int bgcolor)

Rotate an image

Creates a new image, counter-clockwise rotated by the requested angle using the current gdInterpolationMethod.  Non-square angles will add a border with bgcolor.

Parameters

srcThe source image.
angleThe angle in degrees.
bgcolorThe color to fill the added background with.

Returns

The rotated image on success, NULL on failure.

See also

+ +

Affine Transformation

+ +

gdTransformAffineGetImage

int gdTransformAffineGetImage(gdImagePtr *dst,
const gdImagePtr src,
gdRectPtr src_area,
const double affine[6])

Applies an affine transformation to a region and return an image containing the complete transformation.

Parameters

dstPointer to a gdImagePtr to store the created image, NULL when the creation or the transformation failed
srcSource image
src_arearectangle defining the source region to transform
dstYY position in the destination image
affineThe desired affine transformation

Returns

GD_TRUE if the affine is rectilinear or GD_FALSE

+ +

gdTransformAffineCopy

int gdTransformAffineCopy(gdImagePtr dst,
int dst_x,
int dst_y,
const gdImagePtr src,
gdRectPtr src_region,
const double affine[6])

Applies an affine transformation to a region and copy the result in a destination to the given position.

Parameters

dstImage to draw the transformed image
srcSource image
dstXX position in the destination image
dstYY position in the destination image
src_areaRectangular region to rotate in the src image

Returns

GD_TRUE if the affine is rectilinear or GD_FALSE

+ +

gdTransformAffineBoundingBox

int gdTransformAffineBoundingBox(gdRectPtr src,
const double affine[6],
gdRectPtr bbox)

Returns the bounding box of an affine transformation applied to a rectangular area gdRect

Parameters

srcRectangular source area for the affine transformation
affinethe affine transformation
bboxthe resulting bounding box

Returns

GD_TRUE if the affine is rectilinear or GD_FALSE

+ +

Interpolation Method

+ +

gdImageSetInterpolationMethod

int gdImageSetInterpolationMethod(gdImagePtr im,
gdInterpolationMethod id)

Set the interpolation method for subsequent operations

Parameters

imThe image.
idThe interpolation method.

Returns

Non-zero on success, zero on failure.

See also

+ +

gdImageGetInterpolationMethod

gdInterpolationMethod gdImageGetInterpolationMethod(gdImagePtr im)

Get the current interpolation method

This is here so that the value can be read via a language or VM with an FFI but no (portable) way to extract the value from the struct.

Parameters

imThe image.

Returns

The current interpolation method.

See also

+ +
+ + + + + + + + + + +
gdImagePtr gdImageScale(const gdImagePtr src,
const unsigned int new_width,
const unsigned int new_height)
Scale an image
gdImagePtr gdImageRotateInterpolated(const gdImagePtr src,
const float angle,
int bgcolor)
Rotate an image
int gdTransformAffineGetImage(gdImagePtr *dst,
const gdImagePtr src,
gdRectPtr src_area,
const double affine[6])
Applies an affine transformation to a region and return an image containing the complete transformation.
int gdTransformAffineCopy(gdImagePtr dst,
int dst_x,
int dst_y,
const gdImagePtr src,
gdRectPtr src_region,
const double affine[6])
Applies an affine transformation to a region and copy the result in a destination to the given position.
int gdTransformAffineBoundingBox(gdRectPtr src,
const double affine[6],
gdRectPtr bbox)
Returns the bounding box of an affine transformation applied to a rectangular area gdRect
A rectangle in the coordinate space of the image
int gdImageSetInterpolationMethod(gdImagePtr im,
gdInterpolationMethod id)
Set the interpolation method for subsequent operations
gdInterpolationMethod gdImageGetInterpolationMethod(gdImagePtr im)
Get the current interpolation method
void gdImageCopyResized (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int dstW,
int dstH,
int srcW,
int srcH)
Copy a resized area from an image to another image
void gdImageCopyResampled (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int dstW,
int dstH,
int srcW,
int srcH)
Copy a resampled area from an image to another image
void gdImageCopyRotated (gdImagePtr dst,
gdImagePtr src,
double dstX,
double dstY,
int srcX,
int srcY,
int srcWidth,
int srcHeight,
int angle)
Copy a rotated area from an image to another image
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io-h.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io-h.html new file mode 100644 index 00000000000..3e38bde0431 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io-h.html @@ -0,0 +1,56 @@ + + +/parent/libgd/docs/naturaldocs/tmp/gd_io.h + + + + + + + + + +

gd_io.h

Summary
gd_io.h
Types
gdIOCtxgdIOCtx structures hold function pointers for doing image IO.
+ +

Types

+ +

gdIOCtx

gdIOCtx structures hold function pointers for doing image IO.

Most of the gd functions that read and write files, such as gdImagePng also have variants that accept a gdIOCtx structure; see gdImagePngCtx and gdImageCreateFromJpegCtx.

Those who wish to provide their own custom routines to read and write images can populate a gdIOCtx structure with functions of their own devising to to read and write data.  For image reading, the only mandatory functions are getC and getBuf, which must return the number of characters actually read, or a negative value on error or EOF.  These functions must read the number of characters requested unless at the end of the file.

For image writing, the only mandatory functions are putC and putBuf, which return the number of characters written; these functions must write the number of characters requested except in the event of an error.  The seek and tell functions are only required in conjunction with the gd2 file format, which supports quick loading of partial images.  The gd_free function will not be invoked when calling the standard Ctx functions; it is an implementation convenience when adding new data types to gd.  For examples, see gd_png.c, gd_gd2.c, gd_jpeg.c, etc., all of which rely on gdIOCtx to implement the standard image read and write functions.

typedef struct gdIOCtx
+{
+  int (*getC) (struct gdIOCtx *);
+  int (*getBuf) (struct gdIOCtx *, void *, int wanted);
+
+  void (*putC) (struct gdIOCtx *, int);
+  int (*putBuf) (struct gdIOCtx *, const void *, int wanted);
+
+  // seek must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek!
+  int (*seek) (struct gdIOCtx *, const int);
+  long (*tell) (struct gdIOCtx *);
+
+  void (*gd_free) (struct gdIOCtx *);
+} gdIOCtx;
+ +
+ + + + + + + + + + +
void gdImagePng (gdImagePtr im,
FILE *outFile)
Equivalent to calling gdImagePngEx with compression of -1.
gdIOCtx structures hold function pointers for doing image IO.
void gdImagePngCtx (gdImagePtr im,
gdIOCtx *outfile)
Equivalent to calling gdImagePngCtxEx with compression of -1.
gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile)
See gdImageCreateFromJpeg.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_dp-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_dp-c.html new file mode 100644 index 00000000000..49f4a205f9a --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_dp-c.html @@ -0,0 +1,47 @@ + + +/parent/libgd/docs/naturaldocs/tmp/gd_io_dp.c + + + + + + + + + +

gd_io_dp.c

+ +

Functions

+ +

gdNewDynamicCtx

gdIOCtx * gdNewDynamicCtx(int initialSize,
void *data)

Return data as a dynamic pointer.

+ +

gdNewDynamicCtxEx

gdIOCtx * gdNewDynamicCtxEx(int initialSize,
void *data,
int freeOKFlag)
+ +

gdDPExtractData

void * gdDPExtractData (struct gdIOCtx *ctx,
int *size)
+ +
+ + + + + + + + + + +
gdIOCtx * gdNewDynamicCtx(int initialSize,
void *data)
Return data as a dynamic pointer.
gdIOCtx * gdNewDynamicCtxEx(int initialSize,
void *data,
int freeOKFlag)
void * gdDPExtractData (struct gdIOCtx *ctx,
int *size)
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_file-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_file-c.html new file mode 100644 index 00000000000..c7359e5f8be --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_file-c.html @@ -0,0 +1,39 @@ + + +gdNewFileCtx + + + + + + + + + +

gdNewFileCtx

gdIOCtx * gdNewFileCtx(FILE *f)

Return data as a dynamic pointer.

+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_ss-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_ss-c.html new file mode 100644 index 00000000000..5eb71e57b6e --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_ss-c.html @@ -0,0 +1,39 @@ + + +gdNewSSCtx + + + + + + + + + +

gdNewSSCtx

gdIOCtx * gdNewSSCtx(gdSourcePtr src,
gdSinkPtr snk)

Return data as a dynamic pointer.

+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_jpeg-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_jpeg-c.html new file mode 100644 index 00000000000..64b571c2488 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_jpeg-c.html @@ -0,0 +1,83 @@ + + +JPEG IO + + + + + + + + + +

JPEG IO

Read and write JPEG images.

Summary
JPEG IORead and write JPEG images.
Functions
gdImageJpeggdImageJpeg outputs the specified image to the specified file in JPEG format.
gdImageJpegPtrIdentical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data.
gdImageJpegCtxWrite the image as JPEG data via a gdIOCtx.
gdImageCreateFromJpegSee gdImageCreateFromJpegEx.
gdImageCreateFromJpegExgdImageCreateFromJpegEx is called to load truecolor images from JPEG format files.
gdImageCreateFromJpegPtr
gdImageCreateFromJpegPtrEx
gdImageCreateFromJpegCtxSee gdImageCreateFromJpeg.
gdImageCreateFromJpegCtxExSee gdImageCreateFromJpeg.
+ +

Functions

+ +

gdImageJpeg

void gdImageJpeg(gdImagePtr im,
FILE *outFile,
int quality)

gdImageJpeg outputs the specified image to the specified file in JPEG format.  The file must be open for writing.  Under MSDOS and all versions of Windows, it is important to use “wb” as opposed to simply “w” as the mode when opening the file, and under Unix there is no penalty for doing so.  gdImageJpeg does not close the file; your code must do so.

If quality is negative, the default IJG JPEG quality value (which should yield a good general quality / size tradeoff for most situations) is used.  Otherwise, for practical purposes, quality should be a value in the range 0-95, higher quality values usually implying both higher quality and larger image sizes.

If you have set image interlacing using gdImageInterlace, this function will interpret that to mean you wish to output a progressive JPEG.  Some programs (e.g., Web browsers) can display progressive JPEGs incrementally; this can be useful when browsing over a relatively slow communications link, for example.  Progressive JPEGs can also be slightly smaller than sequential (non-progressive) JPEGs.

Variants

gdImageJpegCtx stores the image using a gdIOCtx struct.

gdImageJpegPtr stores the image to RAM.

Parameters

imThe image to save
outFileThe FILE pointer to write to.
qualityCompression quality (0-95, 0 means use the default).

Returns

Nothing.

Example

gdImagePtr im;
+int black, white;
+FILE *out;
+// Create the image
+im = gdImageCreate(100, 100);
+// Allocate background
+white = gdImageColorAllocate(im, 255, 255, 255);
+// Allocate drawing color
+black = gdImageColorAllocate(im, 0, 0, 0);
+// Draw rectangle
+gdImageRectangle(im, 0, 0, 99, 99, black);
+// Open output file in binary mode
+out = fopen("rect.jpg", "wb");
+// Write JPEG using default quality
+gdImageJpeg(im, out, -1);
+// Close file
+fclose(out);
+// Destroy image
+gdImageDestroy(im);
+ +

gdImageJpegPtr

void * gdImageJpegPtr(gdImagePtr im,
int *size,
int quality)

Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data.  This memory must be freed by the caller when it is no longer needed.

The caller must invoke gdFree, not free().  This is because it is not guaranteed that libgd will use the same implementation of malloc, free, etc. as your proggram.

The ‘size’ parameter receives the total size of the block of memory.

Parameters

imThe image to write
sizeOutput: the size of the resulting image.
qualityCompression quality.

Returns

A pointer to the JPEG data or NULL if an error occurred.

+ +

gdImageJpegCtx

void gdImageJpegCtx(gdImagePtr im,
gdIOCtx *outfile,
int quality)

Write the image as JPEG data via a gdIOCtx.  See gdImageJpeg for more details.

Parameters

imThe image to write.
outfileThe output sink.
qualityImage quality.
+ +

gdImageCreateFromJpeg

gdImagePtr gdImageCreateFromJpeg(FILE *inFile)

See gdImageCreateFromJpegEx.

+ +

gdImageCreateFromJpegEx

gdImagePtr gdImageCreateFromJpegEx(FILE *inFile,
int ignore_warning)

gdImageCreateFromJpegEx is called to load truecolor images from JPEG format files.  Invoke gdImageCreateFromJpegEx with an already opened pointer to a file containing the desired image.  gdImageCreateFromJpegEx returns a gdImagePtr to the new truecolor image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a JPEG image).  gdImageCreateFromJpegEx does not close the file.

You can inspect the sx and sy members of the image to determine its size.  The image must eventually be destroyed using gdImageDestroy.

The returned image is always a truecolor image.

Variants

gdImageCreateFromJpegPtrEx creates an image from JPEG data already in memory.

gdImageCreateFromJpegCtxEx reads its data via the function pointers in a gdIOCtx structure.

gdImageCreateFromJpeg, gdImageCreateFromJpegPtr and gdImageCreateFromJpegCtx are equivalent to calling their Ex-named counterparts with an ignore_warning set to 1 (i.e.  TRUE).

Parameters

infileThe input FILE pointer.
ignore_warningFlag.  If true, ignores recoverable warnings.

Returns

A pointer to the new truecolor image.  This will need to be destroyed with gdImageDestroy once it is no longer needed.

On error, returns NULL.

Example

gdImagePtr im;
+FILE *in;
+in = fopen("myjpeg.jpg", "rb");
+im = gdImageCreateFromJpegEx(in, GD_TRUE);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);
+ +

gdImageCreateFromJpegPtr

gdImagePtr gdImageCreateFromJpegPtr(int size,
void *data)

Parameters

sizesize of JPEG data in bytes.
datapointer to JPEG data.

See gdImageCreateFromJpegEx.

+ +

gdImageCreateFromJpegPtrEx

gdImagePtr gdImageCreateFromJpegPtrEx(int size,
void *data,
int ignore_warning)

Parameters

sizesize of JPEG data in bytes.
datapointer to JPEG data.
ignore_warningif true, ignore recoverable warnings

See gdImageCreateFromJpegEx.

+ +

gdImageCreateFromJpegCtx

gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile)

See gdImageCreateFromJpeg.

+ +

gdImageCreateFromJpegCtxEx

gdImagePtr gdImageCreateFromJpegCtxEx(gdIOCtx *infile,
int ignore_warning)

See gdImageCreateFromJpeg.

+ +
+ + + + + + + + + + +
void gdImageJpeg(gdImagePtr im,
FILE *outFile,
int quality)
gdImageJpeg outputs the specified image to the specified file in JPEG format.
void * gdImageJpegPtr(gdImagePtr im,
int *size,
int quality)
Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data.
void gdImageJpegCtx(gdImagePtr im,
gdIOCtx *outfile,
int quality)
Write the image as JPEG data via a gdIOCtx.
gdIOCtx structures hold function pointers for doing image IO.
gdImagePtr gdImageCreateFromJpeg(FILE *inFile)
See gdImageCreateFromJpegEx.
gdImagePtr gdImageCreateFromJpegEx(FILE *inFile,
int ignore_warning)
gdImageCreateFromJpegEx is called to load truecolor images from JPEG format files.
gdImagePtr gdImageCreateFromJpegPtr(int size,
void *data)
gdImagePtr gdImageCreateFromJpegPtrEx(int size,
void *data,
int ignore_warning)
gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile)
See gdImageCreateFromJpeg.
gdImagePtr gdImageCreateFromJpegCtxEx(gdIOCtx *infile,
int ignore_warning)
See gdImageCreateFromJpeg.
void gdImageInterlace (gdImagePtr im,
int interlaceArg)
Sets whether an image is interlaced
void gdFree (void *ptr)
Frees memory that has been allocated by libgd functions.
The data structure in which gd stores images.
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_matrix-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_matrix-c.html new file mode 100644 index 00000000000..db4e2792000 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_matrix-c.html @@ -0,0 +1,65 @@ + + +Matrix + + + + + + + + + +

Matrix

Group: Affine Matrix

Summary
MatrixGroup: Affine Matrix
Functions
gdAffineApplyToPointFApplies an affine transformation to a point (floating point gdPointF)
gdAffineInvertFind the inverse of an affine transformation.
gdAffineFlipFlip an affine transformation horizontally or vertically.
gdAffineConcatConcat (Multiply) two affine transformation matrices.
gdAffineIdentitySet up the identity matrix.
gdAffineScaleSet up a scaling matrix.
gdAffineRotateSet up a rotation affine transform.
gdAffineShearHorizontalSet up a horizontal shearing matrix || becomes \\.
gdAffineShearVerticalSet up a vertical shearing matrix, columns are untouched.
gdAffineTranslateSet up a translation matrix.
gdAffineRectilinearDetermines whether the affine transformation is axis aligned.
gdAffineEqualDetermines whether two affine transformations are equal.
+ +

Functions

+ +

gdAffineApplyToPointF

int gdAffineApplyToPointF (gdPointFPtr dst,
const gdPointFPtr src,
const double affine[6])

Applies an affine transformation to a point (floating point gdPointF)

Parameters

dstWhere to store the resulting point
affineSource Point
flip_horzaffine matrix

Returns

GD_TRUE if the affine is rectilinear or GD_FALSE

+ +

gdAffineInvert

int gdAffineInvert (double dst[6],
const double src[6])

Find the inverse of an affine transformation.

All non-degenerate affine transforms are invertible.  Applying the inverted matrix will restore the original values.  Multiplying <src> by <dst> (commutative) will return the identity affine (rounding error possible).

Parameters

dstWhere to store the resulting affine transform
src_affineOriginal affine matrix
flip_horzWhether or not to flip horizontally
flip_vertWhether or not to flip vertically

See also

gdAffineIdentity

Returns

GD_TRUE if the affine is rectilinear or GD_FALSE

+ +

gdAffineFlip

int gdAffineFlip (double dst[6],
const double src[6],
const int flip_h,
const int flip_v)

Flip an affine transformation horizontally or vertically.

Flips the affine transform, giving GD_FALSE for <flip_horz> and <flip_vert> will clone the affine matrix.  GD_TRUE for both will copy a 180° rotation.

Parameters

dstWhere to store the resulting affine transform
src_affineOriginal affine matrix
flip_hWhether or not to flip horizontally
flip_vWhether or not to flip vertically

Returns

GD_TRUE on success or GD_FALSE

+ +

gdAffineConcat

int gdAffineConcat (double dst[6],
const double m1[6],
const double m2[6])

Concat (Multiply) two affine transformation matrices.

Concats two affine transforms together, i.e. the result will be the equivalent of doing first the transformation m1 and then m2.  All parameters can be the same matrix (safe to call using the same array for all three arguments).

Parameters

dstWhere to store the resulting affine transform
m1First affine matrix
m2Second affine matrix

Returns

GD_TRUE on success or GD_FALSE

+ +

gdAffineIdentity

int gdAffineIdentity (double dst[6])

Set up the identity matrix.

Parameters

dstWhere to store the resulting affine transform

Returns

GD_TRUE on success or GD_FALSE

+ +

gdAffineScale

int gdAffineScale (double dst[6],
const double scale_x,
const double scale_y)

Set up a scaling matrix.

Parameters

scale_xX scale factor
scale_yY scale factor

Returns

GD_TRUE on success or GD_FALSE

+ +

gdAffineRotate

int gdAffineRotate (double dst[6],
const double angle)

Set up a rotation affine transform.

Like the other angle in libGD, in which increasing y moves downward, this is a counterclockwise rotation.

Parameters

dstWhere to store the resulting affine transform
angleRotation angle in degrees

Returns

GD_TRUE on success or GD_FALSE

+ +

gdAffineShearHorizontal

int gdAffineShearHorizontal(double dst[6],
const double angle)

Set up a horizontal shearing matrix || becomes \\.

Parameters

dstWhere to store the resulting affine transform
angleShear angle in degrees

Returns

GD_TRUE on success or GD_FALSE

+ +

gdAffineShearVertical

int gdAffineShearVertical(double dst[6],
const double angle)

Set up a vertical shearing matrix, columns are untouched.

Parameters

dstWhere to store the resulting affine transform
angleShear angle in degrees

Returns

GD_TRUE on success or GD_FALSE

+ +

gdAffineTranslate

int gdAffineTranslate (double dst[6],
const double offset_x,
const double offset_y)

Set up a translation matrix.

Parameters

dstWhere to store the resulting affine transform
offset_xHorizontal translation amount
offset_yVertical translation amount

Returns

GD_TRUE on success or GD_FALSE

+ +

gdAffineRectilinear

int gdAffineRectilinear (const double m[6])

Determines whether the affine transformation is axis aligned.  A tolerance has been implemented using GD_EPSILON.

Parameters

mThe affine transformation

Returns

GD_TRUE if the affine is rectilinear or GD_FALSE

+ +

gdAffineEqual

int gdAffineEqual (const double m1[6],
const double m2[6])

Determines whether two affine transformations are equal.  A tolerance has been implemented using GD_EPSILON.

Parameters

m1The first affine transformation
m2The first affine transformation

Returns

GD_TRUE on success or GD_FALSE

+ +
+ + + + + + + + + + +
int gdAffineApplyToPointF (gdPointFPtr dst,
const gdPointFPtr src,
const double affine[6])
Applies an affine transformation to a point (floating point gdPointF)
int gdAffineInvert (double dst[6],
const double src[6])
Find the inverse of an affine transformation.
int gdAffineFlip (double dst[6],
const double src[6],
const int flip_h,
const int flip_v)
Flip an affine transformation horizontally or vertically.
int gdAffineConcat (double dst[6],
const double m1[6],
const double m2[6])
Concat (Multiply) two affine transformation matrices.
int gdAffineIdentity (double dst[6])
Set up the identity matrix.
int gdAffineScale (double dst[6],
const double scale_x,
const double scale_y)
Set up a scaling matrix.
int gdAffineRotate (double dst[6],
const double angle)
Set up a rotation affine transform.
int gdAffineShearHorizontal(double dst[6],
const double angle)
Set up a horizontal shearing matrix || becomes \\.
int gdAffineShearVertical(double dst[6],
const double angle)
Set up a vertical shearing matrix, columns are untouched.
int gdAffineTranslate (double dst[6],
const double offset_x,
const double offset_y)
Set up a translation matrix.
int gdAffineRectilinear (const double m[6])
Determines whether the affine transformation is axis aligned.
int gdAffineEqual (const double m1[6],
const double m2[6])
Determines whether two affine transformations are equal.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_nnquant-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_nnquant-c.html new file mode 100644 index 00000000000..ce237974559 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_nnquant-c.html @@ -0,0 +1,39 @@ + + +gdImageNeuQuant + + + + + + + + + +

gdImageNeuQuant

gdImagePtr gdImageNeuQuant(gdImagePtr im,
const int max_color,
int sample_factor)

Creates a new palette image from a truecolor image

This is the same as calling gdImageCreatePaletteFromTrueColor with the quantization method GD_QUANT_NEUQUANT.

Parameters

imThe image.
max_colorThe number of desired palette entries.
sample_factorThe quantization precision between 1 (highest quality) and 10 (fastest).

Returns

A newly create palette image; NULL on failure.

+ +
+ + + + + + + + + + +
gdImagePtr gdImageCreatePaletteFromTrueColor (gdImagePtr im,
int dither,
int colorsWanted)
Creates a new palette image from a truecolor image
NeuQuant - approximation using Kohonen neural network.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_png-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_png-c.html new file mode 100644 index 00000000000..c40669e3a49 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_png-c.html @@ -0,0 +1,77 @@ + + +PNG IO + + + + + + + + + +

PNG IO

Read and write PNG images.

Summary
PNG IORead and write PNG images.
Functions
gdImageCreateFromPnggdImageCreateFromPng is called to load images from PNG format files.
gdImageCreateFromPngPtrSee gdImageCreateFromPng.
gdImageCreateFromPngCtxSee gdImageCreateFromPng.
gdImagePngExgdImagePngEx outputs the specified image to the specified file in PNG format.
gdImagePngEquivalent to calling gdImagePngEx with compression of -1.
gdImagePngPtrEquivalent to calling gdImagePngPtrEx with compression of -1.
gdImagePngPtrExIdentical to gdImagePngEx except that it returns a pointer to a memory area with the PNG data.
gdImagePngCtxEquivalent to calling gdImagePngCtxEx with compression of -1.
gdImagePngCtxExOutputs the given image as PNG data, but using a gdIOCtx instead of a file.
+ +

Functions

+ +

gdImageCreateFromPng

gdImagePtr gdImageCreateFromPng (FILE *inFile)

gdImageCreateFromPng is called to load images from PNG format files.  Invoke gdImageCreateFromPng with an already opened pointer to a FILE containing the desired image.  gdImageCreateFromPng returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a PNG image).  gdImageCreateFromPng does not close the file.  You can inspect the sx and sy members of the image to determine its size.  The image must eventually be destroyed using gdImageDestroy().

If the PNG image being loaded is a truecolor image, the resulting gdImagePtr will refer to a truecolor image.  If the PNG image being loaded is a palette or grayscale image, the resulting gdImagePtr will refer to a palette image. gd retains only 8 bits of resolution for each of the red, green and blue channels, and only 7 bits of resolution for the alpha channel.  The former restriction affects only a handful of very rare 48-bit color and 16-bit grayscale PNG images.  The second restriction affects all semitransparent PNG images, but the difference is essentially invisible to the eye.  7 bits of alpha channel resolution is, in practice, quite a lot.

Variants

gdImageCreateFromPngPtr creates an image from PNG data (i.e. the contents of a PNG file) already in memory.

gdImageCreateFromPngCtx reads in an image using the functions in a gdIOCtx struct.

gdImageCreateFromPngSource is similar to gdImageCreateFromPngCtx but uses the old gdSource interface.  It is obsolete.

Parameters

infileThe input FILE pointer.

Returns

A pointer to the new image or NULL if an error occurred.

Example

gdImagePtr im;
+... inside a function ...
+FILE *in;
+in = fopen("mypng.png", "rb");
+im = gdImageCreateFromPng(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);
+ +

gdImageCreateFromPngPtr

gdImagePtr gdImageCreateFromPngPtr (int size,
void *data)

See gdImageCreateFromPng.

+ +

gdImageCreateFromPngCtx

gdImagePtr gdImageCreateFromPngCtx (gdIOCtx *infile)

See gdImageCreateFromPng.

+ +

gdImagePngEx

void gdImagePngEx (gdImagePtr im,
FILE *outFile,
int level)

gdImagePngEx outputs the specified image to the specified file in PNG format.  The file must be open for writing.  Under MSDOS and all versions of Windows, it is important to use “wb” as opposed to simply “w” as the mode when opening the file, and under Unix there is no penalty for doing so.  gdImagePngEx does not close the file; your code must do so.

In addition, gdImagePngEx allows the level of compression to be specified.  A compression level of 0 means “no compression.”  A compression level of 1 means “compressed, but as quickly as possible.”  A compression level of 9 means “compressed as much as possible to produce the smallest possible file.”  A compression level of -1 will use the default compression level at the time zlib was compiled on your system.

Variants

gdImagePng is equivalent to calling gdImagePngEx with compression of -1.

gdImagePngCtx and gdImagePngCtxEx write via a gdIOCtx instead of a file handle.

gdImagePngPtr and gdImagePngPtrEx store the image file to memory.

Parameters

imthe image to write
outFilethe output FILE* object.
levelcompression level: 0 -> none, 1-9 -> level, -1 -> default

Returns

Nothing.

Example

gdImagePtr im;
+int black, white;
+FILE *out;
+
+im = gdImageCreate(100, 100);              // Create the image
+white = gdImageColorAllocate(im, 255, 255, 255); // Alloc background
+black = gdImageColorAllocate(im, 0, 0, 0); // Allocate drawing color
+gdImageRectangle(im, 0, 0, 99, 99, black); // Draw rectangle
+out = fopen("rect.png", "wb");             // Open output file (binary)
+gdImagePngEx(im, out, 9);                  // Write PNG, max compression
+fclose(out);                               // Close file
+gdImageDestroy(im);                        // Destroy image
+ +

gdImagePng

void gdImagePng (gdImagePtr im,
FILE *outFile)

Equivalent to calling gdImagePngEx with compression of -1.

Parameters

imthe image to save.
outFilethe output FILE*.

Returns

Nothing.

+ +

gdImagePngPtr

void * gdImagePngPtr (gdImagePtr im,
int *size)

Equivalent to calling gdImagePngPtrEx with compression of -1.

See gdImagePngEx for more information.

Parameters

imthe image to save.
sizeOutput: size in bytes of the result.

Returns

A pointer to memory containing the image data or NULL on error.

+ +

gdImagePngPtrEx

void * gdImagePngPtrEx (gdImagePtr im,
int *size,
int level)

Identical to gdImagePngEx except that it returns a pointer to a memory area with the PNG data.  This memory must be freed by the caller when it is no longer needed.  **The caller must invoke gdFree(), not free()**

The ‘size’ parameter receives the total size of the block of memory.

See gdImagePngEx for more information.

Parameters

imthe image to save.
sizeOutput: size in bytes of the result.
levelcompression level: 0 -> none, 1-9 -> level, -1 -> default

Returns

A pointer to memory containing the image data or NULL on error.

+ +

gdImagePngCtx

void gdImagePngCtx (gdImagePtr im,
gdIOCtx *outfile)

Equivalent to calling gdImagePngCtxEx with compression of -1.  See gdImagePngEx for more information.

Parameters

imthe image to save.
outfilethe gdIOCtx to write to.

Returns

Nothing.

+ +

gdImagePngCtxEx

void gdImagePngCtxEx (gdImagePtr im,
gdIOCtx *outfile,
int level)

Outputs the given image as PNG data, but using a gdIOCtx instead of a file.  See <gdIamgePnEx>.

Parameters

imthe image to save.
outfilethe gdIOCtx to write to.
levelcompression level: 0 -> none, 1-9 -> level, -1 -> default

Returns

Nothing.

+ +
+ + + + + + + + + + +
gdImagePtr gdImageCreateFromPng (FILE *inFile)
gdImageCreateFromPng is called to load images from PNG format files.
gdImagePtr gdImageCreateFromPngPtr (int size,
void *data)
See gdImageCreateFromPng.
gdImagePtr gdImageCreateFromPngCtx (gdIOCtx *infile)
See gdImageCreateFromPng.
void gdImagePngEx (gdImagePtr im,
FILE *outFile,
int level)
gdImagePngEx outputs the specified image to the specified file in PNG format.
void gdImagePng (gdImagePtr im,
FILE *outFile)
Equivalent to calling gdImagePngEx with compression of -1.
void * gdImagePngPtr (gdImagePtr im,
int *size)
Equivalent to calling gdImagePngPtrEx with compression of -1.
void * gdImagePngPtrEx (gdImagePtr im,
int *size,
int level)
Identical to gdImagePngEx except that it returns a pointer to a memory area with the PNG data.
void gdImagePngCtx (gdImagePtr im,
gdIOCtx *outfile)
Equivalent to calling gdImagePngCtxEx with compression of -1.
void gdImagePngCtxEx (gdImagePtr im,
gdIOCtx *outfile,
int level)
Outputs the given image as PNG data, but using a gdIOCtx instead of a file.
gdIOCtx structures hold function pointers for doing image IO.
The data structure in which gd stores images.
gdImagePtr gdImageCreateFromPngSource (gdSourcePtr inSource)
See gdImageCreateFromPng for documentation.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_ss-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_ss-c.html new file mode 100644 index 00000000000..1d9b38f1b3d --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_ss-c.html @@ -0,0 +1,45 @@ + + +/parent/libgd/docs/naturaldocs/tmp/gd_ss.c + + + + + + + + + +
+ +

Functions

+ +

gdImagePngToSink

void gdImagePngToSink (gdImagePtr im,
gdSinkPtr outSink)
+ +

gdImageCreateFromPngSource

gdImagePtr gdImageCreateFromPngSource (gdSourcePtr inSource)

See gdImageCreateFromPng for documentation.  This is obsolete; use gdImageCreateFromPngCtx instead.

+ +
+ + + + + + + + + + +
void gdImagePngToSink (gdImagePtr im,
gdSinkPtr outSink)
gdImagePtr gdImageCreateFromPngSource (gdSourcePtr inSource)
See gdImageCreateFromPng for documentation.
gdImagePtr gdImageCreateFromPng (FILE *inFile)
gdImageCreateFromPng is called to load images from PNG format files.
gdImagePtr gdImageCreateFromPngCtx (gdIOCtx *infile)
See gdImageCreateFromPng.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tga-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tga-c.html new file mode 100644 index 00000000000..919b92b6f58 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tga-c.html @@ -0,0 +1,47 @@ + + +TGA Input + + + + + + + + + +

TGA Input

Read TGA images.

Summary
TGA InputRead TGA images.
Functions
gdImageCreateFromTgaCreates a gdImage from a TGA file
gdImageCreateFromTgaPtr
gdImageCreateFromTgaCtxCreates a gdImage from a gdIOCtx referencing a TGA binary file.
+ +

Functions

+ +

gdImageCreateFromTga

gdImagePtr gdImageCreateFromTga(FILE *fp)

Creates a gdImage from a TGA file

Parameters

infilePointer to TGA binary file
+ +

gdImageCreateFromTgaPtr

gdImagePtr gdImageCreateFromTgaPtr(int size,
void *data)
+ +

gdImageCreateFromTgaCtx

gdImagePtr gdImageCreateFromTgaCtx(gdIOCtx *ctx)

Creates a gdImage from a gdIOCtx referencing a TGA binary file.

Parameters

ctxPointer to a gdIOCtx structure
+ +
+ + + + + + + + + + +
gdImagePtr gdImageCreateFromTga(FILE *fp)
Creates a gdImage from a TGA file
gdImagePtr gdImageCreateFromTgaPtr(int size,
void *data)
gdImagePtr gdImageCreateFromTgaCtx(gdIOCtx *ctx)
Creates a gdImage from a gdIOCtx referencing a TGA binary file.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tiff-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tiff-c.html new file mode 100644 index 00000000000..6d0a6a60b6c --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tiff-c.html @@ -0,0 +1,53 @@ + + +TIFF IO + + + + + + + + + +

TIFF IO

Read and write TIFF images.

There is only most basic support for the TIFF format available for now; for instance, multiple pages are not yet supported.

Summary
TIFF IORead and write TIFF images.
Functions
gdImageTiffCtxWrite the gd image as a tiff file.
gdImageCreateFromTiffCtxCreate a gdImage from a TIFF file input from an gdIOCtx.
gdImageCreateFromTIFF
gdImageCreateFromTiffPtr
gdImageTiff
gdImageTiffPtr
+ +

Functions

+ +

gdImageTiffCtx

void gdImageTiffCtx(gdImagePtr image,
gdIOCtx *out)

Write the gd image as a tiff file.

Parameters

imagegd image structure;
outthe stream where to write
+ +

gdImageCreateFromTiffCtx

gdImagePtr gdImageCreateFromTiffCtx(gdIOCtx *infile)

Create a gdImage from a TIFF file input from an gdIOCtx.

+ +

gdImageCreateFromTIFF

+ +

gdImageCreateFromTiffPtr

gdImagePtr gdImageCreateFromTiffPtr(int size,
void *data)
+ +

gdImageTiff

void gdImageTiff(gdImagePtr im,
FILE *outFile)
+ +

gdImageTiffPtr

void * gdImageTiffPtr(gdImagePtr im,
int *size)
+ +
+ + + + + + + + + + +
void gdImageTiffCtx(gdImagePtr image,
gdIOCtx *out)
Write the gd image as a tiff file.
gdImagePtr gdImageCreateFromTiffCtx(gdIOCtx *infile)
Create a gdImage from a TIFF file input from an gdIOCtx.
gdImagePtr gdImageCreateFromTiffPtr(int size,
void *data)
void gdImageTiff(gdImagePtr im,
FILE *outFile)
void * gdImageTiffPtr(gdImagePtr im,
int *size)
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_topal-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_topal-c.html new file mode 100644 index 00000000000..6dc4cb423aa --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_topal-c.html @@ -0,0 +1,49 @@ + + +Color Quantization + + + + + + + + + +

Color Quantization

Functions for truecolor to palette conversion

Summary
Color QuantizationFunctions for truecolor to palette conversion
Functions
gdImageTrueColorToPaletteSetMethodSelects the quantization method
gdImageTrueColorToPaletteSetQualityChooses a quality range for quantization
gdImageCreatePaletteFromTrueColorCreates a new palette image from a truecolor image
gdImageTrueColorToPaletteConverts a truecolor image to a palette image
+ +

Functions

+ +

gdImageTrueColorToPaletteSetMethod

int gdImageTrueColorToPaletteSetMethod (gdImagePtr im,
int method,
int speed)

Selects the quantization method

That quantization method is used for all subsequent gdImageTrueColorToPalette and gdImageCreatePaletteFromTrueColor calls.

Parameters

imThe image.
methodThe quantization method, see gdPaletteQuantizationMethod.
speedThe quantization speed between 1 (highest quality) and 10 (fastest).  0 selects a method-specific default (recommended).

Returns

Zero if the given method is invalid or not available; non-zero otherwise.

See also

+ +

gdImageTrueColorToPaletteSetQuality

void gdImageTrueColorToPaletteSetQuality (gdImagePtr im,
int min_quality,
int max_quality)

Chooses a quality range for quantization

That quality range is used in all subsequent calls to gdImageTrueColorToPalette and gdImageCreatePaletteFromTrueColor if the quantization method is GD_QUANT_LIQ.

Parameters

imThe image.
min_qualityThe minimum quality in range 1-100 (1 = ugly, 100 = perfect).  If the palette cannot represent the image with at least min_quality, then no conversion is done.
max_qualityThe maximum quality in range 1-100 (1 = ugly, 100 = perfect), which must be higher than the min_quality.  If the palette can represent the image with a quality better than max_quality, then fewer colors than requested will be used.
+ +

gdImageCreatePaletteFromTrueColor

gdImagePtr gdImageCreatePaletteFromTrueColor (gdImagePtr im,
int dither,
int colorsWanted)

Creates a new palette image from a truecolor image

Parameters

imThe image.
ditherWhether dithering should be applied.
colorsWantedThe number of desired palette entries.

Returns

A newly create palette image; NULL on failure.

See also

+ +

gdImageTrueColorToPalette

int gdImageTrueColorToPalette (gdImagePtr im,
int dither,
int colorsWanted)

Converts a truecolor image to a palette image

Parameters

imThe image.
ditherWhether dithering should be applied.
colorsWantedThe number of desired palette entries.

Returns

Non-zero if the conversion succeeded, zero otherwise.

See also

+ +
+ + + + + + + + + + +
int gdImageTrueColorToPaletteSetMethod (gdImagePtr im,
int method,
int speed)
Selects the quantization method
void gdImageTrueColorToPaletteSetQuality (gdImagePtr im,
int min_quality,
int max_quality)
Chooses a quality range for quantization
gdImagePtr gdImageCreatePaletteFromTrueColor (gdImagePtr im,
int dither,
int colorsWanted)
Creates a new palette image from a truecolor image
int gdImageTrueColorToPalette (gdImagePtr im,
int dither,
int colorsWanted)
Converts a truecolor image to a palette image
A combination of algorithms used in libimagequant aiming for the highest quality at cost of speed.
gdImagePtr gdImageNeuQuant(gdImagePtr im,
const int max_color,
int sample_factor)
Creates a new palette image from a truecolor image
int gdImagePaletteToTrueColor(gdImagePtr src)
Convert a palette image to true color
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_transform-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_transform-c.html new file mode 100644 index 00000000000..a537859b2c8 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_transform-c.html @@ -0,0 +1,47 @@ + + +Transformations + + + + + + + + + +

Transformations

Summary
Transformations
Functions
gdImageFlipVerticalFlip an image vertically
gdImageFlipHorizontalFlip an image horizontally
gdImageFlipBothFlip an image vertically and horizontally
+ +

Functions

+ +

gdImageFlipVertical

void gdImageFlipVertical(gdImagePtr im)

Flip an image vertically

The image is mirrored upside-down.

Parameters

imThe image.

See also

+ +

gdImageFlipHorizontal

void gdImageFlipHorizontal(gdImagePtr im)

Flip an image horizontally

The image is mirrored left-right.

Parameters

imThe image.

See also

+ +

gdImageFlipBoth

void gdImageFlipBoth(gdImagePtr im)

Flip an image vertically and horizontally

The image is mirrored upside-down and left-right.

Parameters

imThe image.

See also

+ +
+ + + + + + + + + + +
void gdImageFlipVertical(gdImagePtr im)
Flip an image vertically
void gdImageFlipHorizontal(gdImagePtr im)
Flip an image horizontally
void gdImageFlipBoth(gdImagePtr im)
Flip an image vertically and horizontally
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_version-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_version-c.html new file mode 100644 index 00000000000..a54d8dbbcc8 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_version-c.html @@ -0,0 +1,51 @@ + + +/parent/libgd/docs/naturaldocs/tmp/gd_version.c + + + + + + + + + +
+ +

Functions

+ +

gdMajorVersion

int gdMajorVersion()
+ +

gdMinorVersion

int gdMinorVersion()
+ +

gdReleaseVersion

int gdReleaseVersion()
+ +

gdExtraVersion

const char * gdExtraVersion()
+ +

gdVersionString

const char * gdVersionString()
+ +
+ + + + + + + + + + +
int gdMajorVersion()
int gdMinorVersion()
int gdReleaseVersion()
const char * gdExtraVersion()
const char * gdVersionString()
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_wbmp-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_wbmp-c.html new file mode 100644 index 00000000000..49fd40b3eb6 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_wbmp-c.html @@ -0,0 +1,59 @@ + + +WBMP IO + + + + + + + + + +

WBMP IO

Read and write WBMP images.

Summary
WBMP IORead and write WBMP images.
Functions
gdImageWBMPCtxWrite the image as a wbmp file
gdImageCreateFromWBMPCtxReads in a WBMP image via a gdIOCtx struct.
gdImageCreateFromWBMPgdImageCreateFromWBMP is called to load images from WBMP format files.
gdImageCreateFromWBMPPtr
gdImageWBMP
gdImageWBMPPtr
+ +

Functions

+ +

gdImageWBMPCtx

void gdImageWBMPCtx(gdImagePtr image,
int fg,
gdIOCtx *out)

Write the image as a wbmp file

Parameters

imagegd image structure
fgthe index of the foreground color. any other value will be considered as background and will not be written
outthe stream where to write
+ +

gdImageCreateFromWBMPCtx

gdImagePtr gdImageCreateFromWBMPCtx(gdIOCtx *infile)

Reads in a WBMP image via a gdIOCtx struct.  See gdImageCreateFromWBMP.

+ +

gdImageCreateFromWBMP

gdImagePtr gdImageCreateFromWBMP(FILE *inFile)

gdImageCreateFromWBMP is called to load images from WBMP format files.  Invoke gdImageCreateFromWBMP with an already opened pointer to a file containing the desired image.  gdImageCreateFromWBMP returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a WBMP image).  gdImageCreateFromWBMP does not close the file.  You can inspect the sx and sy members of the image to determine its size.  The image must eventually be destroyed using gdImageDestroy.

Variants

gdImageCreateFromWBMPPtr creates an image from WBMP data (i.e. the contents of a WBMP file) already in memory.

gdImageCreateFromWBMPCtx reads in an image using the functions in a gdIOCtx struct.

Parameters

infileThe input FILE pointer

Returns

A pointer to the new image or NULL if an error occurred.

Example

gdImagePtr im;
+FILE *in;
+in = fopen("mywbmp.wbmp", "rb");
+im = gdImageCreateFromWBMP(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);
+ +

gdImageCreateFromWBMPPtr

gdImagePtr gdImageCreateFromWBMPPtr(int size,
void *data)

Parameters

sizesize of WBMP data in bytes.
dataWBMP data (i.e. contents of a WBMP file).

See gdImageCreateFromWBMP.

+ +

gdImageWBMP

void gdImageWBMP(gdImagePtr im,
int fg,
FILE *outFile)
+ +

gdImageWBMPPtr

void * gdImageWBMPPtr(gdImagePtr im,
int *size,
int fg)
+ +
+ + + + + + + + + + +
void gdImageWBMPCtx(gdImagePtr image,
int fg,
gdIOCtx *out)
Write the image as a wbmp file
gdImagePtr gdImageCreateFromWBMPCtx(gdIOCtx *infile)
Reads in a WBMP image via a gdIOCtx struct.
gdIOCtx structures hold function pointers for doing image IO.
gdImagePtr gdImageCreateFromWBMP(FILE *inFile)
gdImageCreateFromWBMP is called to load images from WBMP format files.
gdImagePtr gdImageCreateFromWBMPPtr(int size,
void *data)
void gdImageWBMP(gdImagePtr im,
int fg,
FILE *outFile)
void * gdImageWBMPPtr(gdImagePtr im,
int *size,
int fg)
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_webp-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_webp-c.html new file mode 100644 index 00000000000..732d47cb060 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_webp-c.html @@ -0,0 +1,57 @@ + + +WebP IO + + + + + + + + + +

WebP IO

Read and write WebP images.

Summary
WebP IORead and write WebP images.
Functions
gdImageCreateFromWebpgdImageCreateFromWebp is called to load truecolor images from WebP format files.
gdImageCreateFromWebpPtrSee gdImageCreateFromWebp.
gdImageCreateFromWebpCtxSee gdImageCreateFromWebp.
gdImageWebpCtxWrite the image as WebP data via a gdIOCtx.
gdImageWebpExgdImageWebpEx outputs the specified image to the specified file in WebP format.
gdImageWebpVariant of gdImageWebpEx which uses the default quality (-1).
gdImageWebpPtrSee gdImageWebpEx.
gdImageWebpPtrExSee gdImageWebpEx.
+ +

Functions

+ +

gdImageCreateFromWebp

gdImagePtr gdImageCreateFromWebp (FILE *inFile)

gdImageCreateFromWebp is called to load truecolor images from WebP format files.  Invoke gdImageCreateFromWebp with an already opened pointer to a file containing the desired image.  gdImageCreateFromWebp returns a gdImagePtr to the new truecolor image, or NULL if unable to load the image (most often because the file is corrupt or does not contain a WebP image).  gdImageCreateFromWebp does not close the file.

You can inspect the sx and sy members of the image to determine its size.  The image must eventually be destroyed using gdImageDestroy.

The returned image is always a truecolor image.

Variants

gdImageCreateFromJpegPtr creates an image from WebP data already in memory.

gdImageCreateFromJpegCtx reads its data via the function pointers in a gdIOCtx structure.

Parameters

infileThe input FILE pointer.

Returns

A pointer to the new truecolor image.  This will need to be destroyed with gdImageDestroy once it is no longer needed.

On error, returns NULL.

+ +

gdImageCreateFromWebpPtr

gdImagePtr gdImageCreateFromWebpPtr (int size,
void *data)

See gdImageCreateFromWebp.

Parameters

sizesize of WebP data in bytes.
datapointer to WebP data.
+ +

gdImageCreateFromWebpCtx

gdImagePtr gdImageCreateFromWebpCtx (gdIOCtx *infile)

See gdImageCreateFromWebp.

+ +

gdImageWebpCtx

void gdImageWebpCtx (gdImagePtr im,
gdIOCtx *outfile,
int quality)

Write the image as WebP data via a gdIOCtx.  See gdImageWebpEx for more details.

Parameters

imThe image to write.
outfileThe output sink.
qualityImage quality.

Returns

Nothing.

+ +

gdImageWebpEx

void gdImageWebpEx (gdImagePtr im,
FILE *outFile,
int quality)

gdImageWebpEx outputs the specified image to the specified file in WebP format.  The file must be open for writing.  Under MSDOS and all versions of Windows, it is important to use “wb” as opposed to simply “w” as the mode when opening the file, and under Unix there is no penalty for doing so.  gdImageWebpEx does not close the file; your code must do so.

If quality is -1, a reasonable quality value (which should yield a good general quality / size tradeoff for most situations) is used.  Otherwise quality should be a value in the range 0-100, higher quality values usually implying both higher quality and larger image sizes.

Variants

gdImageWebpCtx stores the image using a gdIOCtx struct.

gdImageWebpPtrEx stores the image to RAM.

Parameters

imThe image to save.
outFileThe FILE pointer to write to.
qualityCompression quality (0-100).

Returns

Nothing.

+ +

gdImageWebp

void gdImageWebp (gdImagePtr im,
FILE *outFile)

Variant of gdImageWebpEx which uses the default quality (-1).

Parameters

imThe image to save
outFileThe FILE pointer to write to.

Returns

Nothing.

+ +

gdImageWebpPtr

void * gdImageWebpPtr (gdImagePtr im,
int *size)

See gdImageWebpEx.

+ +

gdImageWebpPtrEx

void * gdImageWebpPtrEx (gdImagePtr im,
int *size,
int quality)

See gdImageWebpEx.

+ +
+ + + + + + + + + + +
gdImagePtr gdImageCreateFromWebp (FILE *inFile)
gdImageCreateFromWebp is called to load truecolor images from WebP format files.
gdImagePtr gdImageCreateFromWebpPtr (int size,
void *data)
See gdImageCreateFromWebp.
gdImagePtr gdImageCreateFromWebpCtx (gdIOCtx *infile)
See gdImageCreateFromWebp.
void gdImageWebpCtx (gdImagePtr im,
gdIOCtx *outfile,
int quality)
Write the image as WebP data via a gdIOCtx.
gdIOCtx structures hold function pointers for doing image IO.
void gdImageWebpEx (gdImagePtr im,
FILE *outFile,
int quality)
gdImageWebpEx outputs the specified image to the specified file in WebP format.
void gdImageWebp (gdImagePtr im,
FILE *outFile)
Variant of gdImageWebpEx which uses the default quality (-1).
void * gdImageWebpPtr (gdImagePtr im,
int *size)
See gdImageWebpEx.
void * gdImageWebpPtrEx (gdImagePtr im,
int *size,
int quality)
See gdImageWebpEx.
The data structure in which gd stores images.
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
gdImagePtr gdImageCreateFromJpegPtr(int size,
void *data)
gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile)
See gdImageCreateFromJpeg.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_xbm-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_xbm-c.html new file mode 100644 index 00000000000..6680c1cb66b --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_xbm-c.html @@ -0,0 +1,51 @@ + + +XBM IO + + + + + + + + + +

XBM IO

Read and write XBM images.

Summary
XBM IORead and write XBM images.
Functions
gdImageCreateFromXbmgdImageCreateFromXbm is called to load images from X bitmap format files.
gdImageXbmCtxWrites an image to an IO context in X11 bitmap format.
+ +

Functions

+ +

gdImageCreateFromXbm

gdImagePtr gdImageCreateFromXbm(FILE *fd)

gdImageCreateFromXbm is called to load images from X bitmap format files.  Invoke gdImageCreateFromXbm with an already opened pointer to a file containing the desired image.  gdImageCreateFromXbm returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain an X bitmap format image).  gdImageCreateFromXbm does not close the file.

You can inspect the sx and sy members of the image to determine its size.  The image must eventually be destroyed using gdImageDestroy.

X11 X bitmaps (which define a char[]) as well as X10 X bitmaps (which define a short[]) are supported.

Parameters

fdThe input FILE pointer

Returns

A pointer to the new image or NULL if an error occurred.

Example

gdImagePtr im;
+FILE *in;
+in = fopen("myxbm.xbm", "rb");
+im = gdImageCreateFromXbm(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);
+ +

gdImageXbmCtx

void gdImageXbmCtx(gdImagePtr image,
char *file_name,
int fg,
gdIOCtx *out)

Writes an image to an IO context in X11 bitmap format.

Parameters

imageThe gdImagePtr to write.
file_nameThe prefix of the XBM’s identifiers.  Illegal characters are automatically stripped.
gdWhich color to use as forground color.  All pixels with another color are unset.
outThe gdIOCtx to write the image file to.
+ +
+ + + + + + + + + + +
gdImagePtr gdImageCreateFromXbm(FILE *fd)
gdImageCreateFromXbm is called to load images from X bitmap format files.
void gdImageXbmCtx(gdImagePtr image,
char *file_name,
int fg,
gdIOCtx *out)
Writes an image to an IO context in X11 bitmap format.
The data structure in which gd stores images.
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
gdIOCtx structures hold function pointers for doing image IO.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontg-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontg-c.html new file mode 100644 index 00000000000..9e1a01a5a64 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontg-c.html @@ -0,0 +1,43 @@ + + +Giant Font + + + + + + + + + +

Giant Font

A very large ISO-8859-2 raster font (9x15 pixels).

The font is supposed to be used with gdImageChar and gdImageString and their variants.

Summary
Giant FontA very large ISO-8859-2 raster font (9x15 pixels).
Functions
gdFontGetGiantReturns the built-in giant font.
+ +

Functions

+ +

gdFontGetGiant

gdFontPtr gdFontGetGiant (void)

Returns the built-in giant font.

+ +
+ + + + + + + + + + +
gdFontPtr gdFontGetGiant (void)
Returns the built-in giant font.
void gdImageChar (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
Draws a single character.
void gdImageString (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
Draws a character string.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontl-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontl-c.html new file mode 100644 index 00000000000..630b33b37f6 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontl-c.html @@ -0,0 +1,43 @@ + + +Large Font + + + + + + + + + +

Large Font

A large ISO-8859-2 raster font (8x16 pixels).

The font is supposed to be used with gdImageChar and gdImageString and their variants.

Summary
Large FontA large ISO-8859-2 raster font (8x16 pixels).
Functions
gdFontGetLargeReturns the built-in large font.
+ +

Functions

+ +

gdFontGetLarge

gdFontPtr gdFontGetLarge (void)

Returns the built-in large font.

+ +
+ + + + + + + + + + +
gdFontPtr gdFontGetLarge (void)
Returns the built-in large font.
void gdImageChar (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
Draws a single character.
void gdImageString (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
Draws a character string.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontmb-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontmb-c.html new file mode 100644 index 00000000000..bdc04b248b8 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontmb-c.html @@ -0,0 +1,43 @@ + + +Medium Bold Font + + + + + + + + + +

Medium Bold Font

A medium bold ISO-8859-2 raster font (7x13 pixels).

The font is supposed to be used with gdImageChar and gdImageString and their variants.

Summary
Medium Bold FontA medium bold ISO-8859-2 raster font (7x13 pixels).
Functions
gdFontGetMediumBoldReturns the built-in medium bold font.
+ +

Functions

+ +

gdFontGetMediumBold

gdFontPtr gdFontGetMediumBold (void)

Returns the built-in medium bold font.

+ +
+ + + + + + + + + + +
gdFontPtr gdFontGetMediumBold (void)
Returns the built-in medium bold font.
void gdImageChar (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
Draws a single character.
void gdImageString (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
Draws a character string.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfonts-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfonts-c.html new file mode 100644 index 00000000000..3cb17f370f0 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfonts-c.html @@ -0,0 +1,43 @@ + + +Small Font + + + + + + + + + +

Small Font

A small ISO-8859-2 raster font (7x13 pixels).

The font is supposed to be used with gdImageChar and gdImageString and their variants.

Summary
Small FontA small ISO-8859-2 raster font (7x13 pixels).
Functions
gdFontGetSmallReturns the built-in small font.
+ +

Functions

+ +

gdFontGetSmall

gdFontPtr gdFontGetSmall (void)

Returns the built-in small font.

+ +
+ + + + + + + + + + +
gdFontPtr gdFontGetSmall (void)
Returns the built-in small font.
void gdImageChar (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
Draws a single character.
void gdImageString (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
Draws a character string.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontt-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontt-c.html new file mode 100644 index 00000000000..fd6e07a8473 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontt-c.html @@ -0,0 +1,43 @@ + + +Tiny Font + + + + + + + + + +

Tiny Font

A very small ISO-8859-2 raster font (5x8 pixels).

The font is supposed to be used with gdImageChar and gdImageString and their variants.

Summary
Tiny FontA very small ISO-8859-2 raster font (5x8 pixels).
Functions
gdFontGetTinyReturns the built-in tiny font.
+ +

Functions

+ +

gdFontGetTiny

gdFontPtr gdFontGetTiny (void)

Returns the built-in tiny font.

+ +
+ + + + + + + + + + +
gdFontPtr gdFontGetTiny (void)
Returns the built-in tiny font.
void gdImageChar (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
Draws a single character.
void gdImageString (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
Draws a character string.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdft-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdft-c.html new file mode 100644 index 00000000000..8b590817e2e --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdft-c.html @@ -0,0 +1,70 @@ + + +FreeType font rendering + + + + + + + + + +

FreeType font rendering

Summary
FreeType font rendering
Functions
gdImageStringTTFAlias of gdImageStringFT.
gdFreeFontCacheAlias of gdFontCacheShutdown.
gdFontCacheShutdownShut down the font cache and free the allocated resources.
gdImageStringFTRender an UTF-8 string onto a gd image.
gdFontCacheSetupSet up the font cache.
gdImageStringFTExgdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.
gdFTUseFontConfigEnable or disable fontconfig by default.
+ +

Functions

+ +

gdImageStringTTF

char * gdImageStringTTF (gdImage *im,
int *brect,
int fg,
char *fontlist,
double ptsize,
double angle,
int x,
int y,
char *string)

Alias of gdImageStringFT.

+ +

gdFreeFontCache

void gdFreeFontCache ()

Alias of gdFontCacheShutdown.

+ +

gdFontCacheShutdown

void gdFontCacheShutdown ()

Shut down the font cache and free the allocated resources.

Important

This function has to be called whenever FreeType operations have been invoked, to avoid resource leaks.  It doesn’t harm to call this function multiple times.

+ +

gdImageStringFT

char * gdImageStringFT (gdImage *im,
int *brect,
int fg,
char *fontlist,
double ptsize,
double angle,
int x,
int y,
char *string)

Render an UTF-8 string onto a gd image.

Parameters

imThe image to draw onto.
brectThe bounding rectangle as array of 8 integers where each pair represents the x- and y-coordinate of a point.  The points specify the lower left, lower right, upper right and upper left corner.
fgThe font color.
fontlistThe semicolon delimited list of font filenames to look for.
ptsizeThe height of the font in typographical points (pt).
angleThe angle in radian to rotate the font counter-clockwise.
xThe x-coordinate of the basepoint (roughly the lower left corner) of the first letter.
yThe y-coordinate of the basepoint (roughly the lower left corner) of the first letter.
stringThe string to render.

Variant

See also

+ +

gdFontCacheSetup

int gdFontCacheSetup (void)

Set up the font cache.

This is called automatically from the string rendering functions, if it has not already been called.  So there’s no need to call this function explicitly.

+ +

gdImageStringFTEx

gdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.

If the strex parameter is not null, it must point to a gdFTStringExtra structure.  As of gd 2.0.5, this structure is defined as follows:

typedef struct {
+    // logical OR of gdFTEX_ values
+    int flags;
+
+    // fine tune line spacing for '\n'
+    double linespacing;
+
+    // Preferred character mapping
+    int charmap;
+
+    // Rendering resolution
+    int hdpi;
+    int vdpi;
+    char *xshow;
+    char *fontpath;
+} gdFTStringExtra, *gdFTStringExtraPtr;

To output multiline text with a specific line spacing, include gdFTEX_LINESPACE in the setting of flags:

flags |= gdFTEX_LINESPACE;

And also set linespacing to the desired spacing, expressed as a multiple of the font height.  Thus a line spacing of 1.0 is the minimum to guarantee that lines of text do not collide.

If gdFTEX_LINESPACE is not present, or strex is null, or gdImageStringFT is called, linespacing defaults to 1.05.

To specify a preference for Unicode, Shift_JIS Big5 character encoding, set or To output multiline text with a specific line spacing, include gdFTEX_CHARMAP in the setting of flags:

flags |= gdFTEX_CHARMAP;

And set charmap to the desired value, which can be any of gdFTEX_Unicode, gdFTEX_Shift_JIS, gdFTEX_Big5, or gdFTEX_Adobe_Custom.  If you do not specify a preference, Unicode will be tried first.  If the preferred character mapping is not found in the font, other character mappings are attempted.

GD operates on the assumption that the output image will be rendered to a computer screen.  By default, gd passes a resolution of 96 dpi to the freetype text rendering engine.  This influences the “hinting” decisions made by the renderer.  To specify a different resolution, set hdpi and vdpi accordingly (in dots per inch) and add gdFTEX_RESOLUTION to flags:

flags | gdFTEX_RESOLUTION;

GD 2.0.29 and later will normally attempt to apply kerning tables, if fontconfig is available, to adjust the relative positions of consecutive characters more ideally for that pair of characters.  This can be turn off by specifying the gdFTEX_DISABLE_KERNING flag:

flags | gdFTEX_DISABLE_KERNING;

GD 2.0.29 and later can return a vector of individual character position advances, occasionally useful in applications that must know exactly where each character begins.  This is returned in the xshow element of the gdFTStringExtra structure if the gdFTEX_XSHOW flag is set:

flags | gdFTEX_XSHOW;

The caller is responsible for calling gdFree() on the xshow element after the call if gdFTEX_XSHOW is set.

GD 2.0.29 and later can also return the path to the actual font file used if the gdFTEX_RETURNFONTPATHNAME flag is set.  This is useful because GD 2.0.29 and above are capable of selecting a font automatically based on a fontconfig font pattern when fontconfig is available.  This information is returned in the fontpath element of the gdFTStringExtra structure.

flags | gdFTEX_RETURNFONTPATHNAME;

The caller is responsible for calling gdFree() on the fontpath element after the call if gdFTEX_RETURNFONTPATHNAME is set.

GD 2.0.29 and later can use fontconfig to resolve font names, including fontconfig patterns, if the gdFTEX_FONTCONFIG flag is set.  As a convenience, this behavior can be made the default by calling gdFTUseFontConfig with a nonzero value.  In that situation it is not necessary to set the gdFTEX_FONTCONFIG flag on every call; however explicit font path names can still be used if the gdFTEX_FONTPATHNAME flag is set:

flags | gdFTEX_FONTPATHNAME;

Unless gdFTUseFontConfig has been called with a nonzero value, GD 2.0.29 and later will still expect the fontlist argument to the freetype text output functions to be a font file name or list thereof as in previous versions.  If you do not wish to make fontconfig the default, it is still possible to force the use of fontconfig for a single call to the freetype text output functions by setting the gdFTEX_FONTCONFIG flag:

flags | gdFTEX_FONTCONFIG;

GD 2.0.29 and above can use fontconfig to resolve font names, including fontconfig patterns, if the gdFTEX_FONTCONFIG flag is set.  As a convenience, this behavior can be made the default by calling gdFTUseFontConfig with a nonzero value.  In that situation it is not necessary to set the gdFTEX_FONTCONFIG flag on every call; however explicit font path names can still be used if the gdFTEX_FONTPATHNAME flag is set:

flags | gdFTEX_FONTPATHNAME;

For more information, see gdImageStringFT.

+ +

gdFTUseFontConfig

int gdFTUseFontConfig(int flag)

Enable or disable fontconfig by default.

If GD is built without libfontconfig support, this function is a NOP.

Parameters

flagZero to disable, nonzero to enable.

See also

+ +
+ + + + + + + + + + +
char * gdImageStringTTF (gdImage *im,
int *brect,
int fg,
char *fontlist,
double ptsize,
double angle,
int x,
int y,
char *string)
Alias of gdImageStringFT.
char * gdImageStringFT (gdImage *im,
int *brect,
int fg,
char *fontlist,
double ptsize,
double angle,
int x,
int y,
char *string)
Render an UTF-8 string onto a gd image.
void gdFreeFontCache ()
Alias of gdFontCacheShutdown.
void gdFontCacheShutdown ()
Shut down the font cache and free the allocated resources.
int gdFontCacheSetup (void)
Set up the font cache.
int gdFTUseFontConfig(int flag)
Enable or disable fontconfig by default.
gdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.
void gdImageString (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
Draws a character string.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfx-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfx-c.html new file mode 100644 index 00000000000..0568dfa06a8 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfx-c.html @@ -0,0 +1,47 @@ + + +/parent/libgd/docs/naturaldocs/tmp/gdfx.c + + + + + + + + + +

gdfx.c

Summary
gdfx.c
Functions
gdImageStringFTCircleDraw text curved along the top and bottom of a circular area of an image.
gdImageSquareToCircleApply polar coordinate transformation to an image.
gdImageSharpenSharpen an image.
+ +

Functions

+ +

gdImageStringFTCircle

char* gdImageStringFTCircle (gdImagePtr im,
int cx,
int cy,
double radius,
double textRadius,
double fillPortion,
char *font,
double points,
char *top,
char *bottom,
int fgcolor)

Draw text curved along the top and bottom of a circular area of an image.

Parameters

imThe image to draw onto.
cxThe x-coordinate of the center of the circular area.
cyThe y-coordinate of the center of the circular area.
radiusThe radius of the circular area.
textRadiusThe height of each character; if textRadius is 1/2 of radius, characters extend halfway from the edge to the center.
fillPortionThe percentage of the 180 degrees of the circular area assigned to each section of text, that is actually occupied by text.  The value has to be in range 0.0 to 1.0, with useful values from about 0.4 to 0.9; 0.9 looks better than 1.0 which is rather crowded.
fontThe fontlist that is passed to gdImageStringFT.
pointsThe point size, which functions as a hint.  Although the size of the text is determined by radius, textRadius and fillPortion, a point size that ‘hints’ appropriately should be passed.  If it’s known that the text will be large, a large point size such as 24.0 should be passed to get the best results.
topThe text to draw clockwise at the top of the circular area.
bottomThe text to draw counterclockwise at the bottom of the circular area.
fgcolorThe font color.

Returns

NULL on success, or an error string on failure.

+ +

gdImageSquareToCircle

gdImagePtr gdImageSquareToCircle (gdImagePtr im,
int radius)

Apply polar coordinate transformation to an image.

The X axis of the original will be remapped to theta (angle) and the Y axis of the original will be remapped to rho (distance from center).

Parameters

imThe image, which must be square, i.e. width == height.
radiusThe radius of the new image, i.e. width == height == radius * 2.

Returns

The transformed image, or NULL on failure.

+ +

gdImageSharpen

void gdImageSharpen (gdImagePtr im,
int pct)

Sharpen an image.

Uses a simple 3x3 convolution kernel and makes use of separability.  It’s faster, but less flexible, than full-blown unsharp masking.  Silently does nothing to non-truecolor images and for pct<0, as it’s not a useful blurring function.

Parameters

pctThe sharpening percentage, which can be greater than 100.

Author

Paul Troughton (paul<dot>troughton<at>ieee<dot>org)

+ +
+ + + + + + + + + + +
char* gdImageStringFTCircle (gdImagePtr im,
int cx,
int cy,
double radius,
double textRadius,
double fillPortion,
char *font,
double points,
char *top,
char *bottom,
int fgcolor)
Draw text curved along the top and bottom of a circular area of an image.
gdImagePtr gdImageSquareToCircle (gdImagePtr im,
int radius)
Apply polar coordinate transformation to an image.
void gdImageSharpen (gdImagePtr im,
int pct)
Sharpen an image.
char * gdImageStringFT (gdImage *im,
int *brect,
int fg,
char *fontlist,
double ptsize,
double angle,
int x,
int y,
char *string)
Render an UTF-8 string onto a gd image.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdhelpers-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdhelpers-c.html new file mode 100644 index 00000000000..907dcb9f73d --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdhelpers-c.html @@ -0,0 +1,39 @@ + + +gdFree + + + + + + + + + +

gdFree

void gdFree (void *ptr)

Frees memory that has been allocated by libgd functions.

Unless more specialized functions exists (for instance, gdImageDestroy), all memory that has been allocated by public libgd functions has to be freed by calling gdFree, and not by free(3), because libgd internally doesn’t use alloc(3) and friends but rather its own allocation functions, which are, however, not publicly available.

Parameters

ptrPointer to the memory space to free.  If it is NULL, no operation is performed.

Returns

Nothing.

+ +
+ + + + + + + + + + +
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
void gdFree (void *ptr)
Frees memory that has been allocated by libgd functions.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdxpm-c.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdxpm-c.html new file mode 100644 index 00000000000..80ef49fc1a2 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdxpm-c.html @@ -0,0 +1,49 @@ + + +XPM Input + + + + + + + + + +

XPM Input

Read XPM images.

Summary
XPM InputRead XPM images.
Functions
gdImageCreateFromXpmgdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files.
+ +

Functions

+ +

gdImageCreateFromXpm

gdImagePtr gdImageCreateFromXpm(char *filename)

gdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files.  This function is available only if HAVE_XPM is selected in the Makefile and the Xpm library is linked with the application.  Unlike most gd file functions, the Xpm functions require filenames, not file pointers.  gdImageCreateFromXpm returns a gdImagePtr to the new image, or NULL if unable to load the image (most often because the file is corrupt or does not contain an XPM bitmap format image).  You can inspect the sx and sy members of the image to determine its size.  The image must eventually be destroyed using gdImageDestroy.

Parameters

filenameThe input filename (not FILE pointer)

Returns

A pointer to the new image or NULL if an error occurred.

Example

gdImagePtr im;
+FILE *in;
+in = fopen("myxpm.xpm", "rb");
+im = gdImageCreateFromXpm(in);
+fclose(in);
+// ... Use the image ...
+gdImageDestroy(im);
+ +
+ + + + + + + + + + +
gdImagePtr gdImageCreateFromXpm(char *filename)
gdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files.
gdImagePtr gdImageCreateFromXbm(FILE *fd)
gdImageCreateFromXbm is called to load images from X bitmap format files.
The data structure in which gd stores images.
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
+ + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/license-txt.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/license-txt.html new file mode 100644 index 00000000000..21ae1561d6d --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/license-txt.html @@ -0,0 +1,39 @@ + + +License + + + + + + + + + +

License

Credits and license terms

In order to resolve any possible confusion regarding the authorship of gd, the following copyright statement covers all of the authors who have required such a statement.  If you are aware of any oversights in this copyright notice, please contact Pierre-A.  Joye who will be pleased to correct them.

  • Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 by Cold Spring Harbor Laboratory.  Funded under Grant P41-RR02188 by the National Institutes of Health.
  • Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 by Boutell.Com, Inc.
  • Portions relating to GD2 format copyright 1999, 2000, 2001, 2002, 2003, 2004 Philip Warner.
  • Portions relating to PNG copyright 1999, 2000, 2001, 2002, 2003, 2004 Greg Roelofs.
  • Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002, 2003, 2004 John Ellson (ell.nosp@m.son@graphv.nosp@m.iz.org).
  • Portions relating to gdft.c copyright 2001, 2002, 2003, 2004 John Ellson (ell.nosp@m.son@graphv.nosp@m.iz.org).
  • Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Pierre-Alain Joye (pie.nosp@m.rre@libg.nosp@m.d.org).
  • Portions relating to JPEG and to color quantization copyright 2000, 2001, 2002, 2003, 2004, Doug Becker and copyright © 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Thomas G.  Lane.  This software is based in part on the work of the Independent JPEG Group.  See the file README-JPEG.TXT for more information.
  • Portions relating to GIF compression copyright 1989 by Jef Poskanzer and David Rowley, with modifications for thread safety by Thomas Boutell.
  • Portions relating to GIF decompression copyright 1990, 1991, 1993 by David Koblas, with modifications for thread safety by Thomas Boutell.
  • Portions relating to WBMP copyright 2000, 2001, 2002, 2003, 2004 Maurice Szmurlo and Johan Van den Brande.
  • Portions relating to GIF animations copyright 2004 Jaakko Hyvätti (jaakko..nosp@m.hyvatti@iki.nosp@m..fi)

Permission has been granted to copy, distribute and modify gd in any context without fee, including a commercial application, provided that this notice is present in user-accessible supporting documentation.

This does not affect your ownership of the derived work itself, and the intent is to assure proper credit for the authors of gd, not to interfere with your productive use of gd.  If you have questions, ask.  “Derived works” includes all programs that utilize the library.  Credit must be given in user-accessible documentation.

This software is provided “AS IS.”  The copyright holders disclaim all warranties, either express or implied, including but not limited to implied warranties of merchantability and fitness for a particular purpose, with respect to this code and accompanying documentation.

Although their code does not appear in the current release, the authors wish to thank David Koblas, David Rowley, and Hutchison Avenue Software Corporation for their prior contributions.

+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/preamble-txt.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/preamble-txt.html new file mode 100644 index 00000000000..ddafb0102aa --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/preamble-txt.html @@ -0,0 +1,89 @@ + + +About LibGD 2.2.5 + + + + + + + + + +

About LibGD 2.2.5

What is gd?

gd is a graphics library.  It allows your code to quickly draw images complete with lines, arcs, text, multiple colors, cut and paste from other images, and flood fills, and write out the result as a PNG or JPEG file.  This is particularly useful in World Wide Web applications, where PNG and JPEG are two of the formats accepted for inline images by most browsers.

gd is not a paint program.  If you are looking for a paint program, you are looking in the wrong place.  If you are not a programmer, you are looking in the wrong place, unless you are installing a required library in order to run an application.

gd does not provide for every possible desirable graphics operation.  It is not necessary or desirable for gd to become a kitchen-sink graphics package, but version 2.0 does include most frequently requested features, including both truecolor and palette images, resampling (smooth resizing of truecolor images) and so forth.

gd basics: using gd in your program

gd lets you create PNG or JPEG images on the fly.  To use gd in your program, include the file gd.h, and link with the gd library and the other required libraries; the syntax for most Unix flavors is:

-lgd -lpng -lz -ljpeg -lfreetype -lm

Assuming that all of these libraries are available.

If you want to use the provided simple fonts, include gdfontt.h, gdfonts.h, gdfontmb.h, gdfontl.h and/or gdfontg.h.  For more impressive results, install FreeType 2.x and use the gdImageStringFT function.  If you are not using the provided Makefile and/or a library-based approach, be sure to include the source modules as well in your project.

Here is a short example program.  (For a more advanced example, see gddemo.c, included in the distribution. gddemo.c is NOT the same program; it demonstrates additional features!)

/* Bring in gd library functions */
+#include "gd.h"
+
+/* Bring in standard I/O so we can output the PNG to a file */
+#include <stdio.h>
+
+int main() {
+  /* Declare the image */
+  gdImagePtr im;
+  /* Declare output files */
+  FILE *pngout, *jpegout;
+  /* Declare color indexes */
+  int black;
+  int white;
+
+  /* Allocate the image: 64 pixels across by 64 pixels tall */
+  im = gdImageCreate(64, 64);
+
+  /* Allocate the color black (red, green and blue all minimum).
+    Since this is the first color in a new image, it will
+    be the background color. */
+  black = gdImageColorAllocate(im, 0, 0, 0);
+
+  /* Allocate the color white (red, green and blue all maximum). */
+  white = gdImageColorAllocate(im, 255, 255, 255);
+
+  /* Draw a line from the upper left to the lower right,
+    using white color index. */
+  gdImageLine(im, 0, 0, 63, 63, white);
+
+  /* Open a file for writing. "wb" means "write binary", important
+    under MSDOS, harmless under Unix. */
+  pngout = fopen("test.png", "wb");
+
+  /* Do the same for a JPEG-format file. */
+  jpegout = fopen("test.jpg", "wb");
+
+  /* Output the image to the disk file in PNG format. */
+  gdImagePng(im, pngout);
+
+  /* Output the same image in JPEG format, using the default
+    JPEG quality setting. */
+  gdImageJpeg(im, jpegout, -1);
+
+  /* Close the files. */
+  fclose(pngout);
+  fclose(jpegout);
+
+  /* Destroy the image in memory. */
+  gdImageDestroy(im);
+}
+ +
+ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/edge_detect_quick.jpg b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/edge_detect_quick.jpg new file mode 100644 index 00000000000..015fd4f562a Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/edge_detect_quick.jpg differ diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/emboss.jpg b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/emboss.jpg new file mode 100644 index 00000000000..b818fd56d74 Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/emboss.jpg differ diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/mean_removal.jpg b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/mean_removal.jpg new file mode 100644 index 00000000000..d3f9c1191c8 Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/mean_removal.jpg differ diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/smooth.jpg b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/smooth.jpg new file mode 100644 index 00000000000..e6987b8ee49 Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/smooth.jpg differ diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index.html new file mode 100644 index 00000000000..d426aa1c9ae --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Constants.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Constants.html new file mode 100644 index 00000000000..e9535f760a4 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Constants.html @@ -0,0 +1,38 @@ + + +Constant Index + + + + + + + + + +
Constant Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 GD_BELL
 GD_BESSEL
 GD_BICUBIC
 GD_BICUBIC_FIXED
 GD_BILINEAR_FIXED
 GD_BLACKMAN
 GD_BOX
 GD_BSPLINE
 GD_CATMULLROM
 GD_CROP_BLACK
 GD_CROP_DEFAULT
 GD_CROP_SIDES
 GD_CROP_TRANSPARENT
 GD_CROP_WHITE
 GD_GAUSSIAN
 GD_GENERALIZED_CUBIC
 GD_HAMMING
 GD_HANNING
 GD_HERMITE
 GD_LINEAR
 GD_MITCHELL
 GD_NEAREST_NEIGHBOUR
 GD_POWER
 GD_QUADRATIC
 GD_QUANT_DEFAULT
 GD_QUANT_JQUANT
 GD_QUANT_LIQ
 GD_QUANT_NEUQUANT
 GD_SINC
 GD_TRIANGLE
 GD_WEIGHTED4
 gdAntiAliased
 gdBrushed
 gdCropMode
 gdDisposalNone
 gdDisposalRestoreBackground
 gdDisposalRestorePrevious
 gdDisposalUnknown
 gdImageGifAnim
 gdInterpolationMethod
 gdStyled
 gdStyledBrushed
 gdTiled
 gdTransparent
S
 Special Colors
+ +
Bell
Bessel
Bicubic
fixed point bicubic integer
fixed point bilinear
Blackman
Box
BSpline
Catmullrom
Crop black borders
Default crop mode (4 corners or background)
Crop using colors of the 4 corners
Crop using the transparent color
Crop white borders
Gaussian
Generalized cubic
Hamming
Hannig
Hermite
bilinear interpolation
Mitchell
Nearest neighbour interpolation
Power
Quadratic
GD_QUANT_LIQ if libimagequant is available, GD_QUANT_JQUANT otherwise.
libjpeg’s old median cut.
A combination of algorithms used in libimagequant aiming for the highest quality at cost of speed.
NeuQuant - approximation using Kohonen neural network.
Sinc
Triangle
4 pixels weighted bilinear interpolation
draw anti aliased
use the current brush, see gdImageSetBrush
Preserve previous frame
First allocated color of palette
Restore to before start of frame
Not recommended
use the current style, see gdImageSetStyle
use the current style and brush
use the current tile, see gdImageSetTile
indicate transparency, what is not the same as the transparent color index; used for lines only
+ + + + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Files.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Files.html new file mode 100644 index 00000000000..fd736d4db9e --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Files.html @@ -0,0 +1,82 @@ + + +File Index + + + + + + + + + +
File Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
B
 BMP IO
C
 Color Quantization
 Cropping
F
 FreeType font rendering
G
 GD IO
 gd.c
 gd.h
 gd_filename.c
 gd_interpolation.c
 gd_io.h
 gd_io_dp.c
 gd_ss.c
 gd_version.c
 GD2 IO
 gdfx.c
 Giant Font
 GIF Input
 GIF Output
I
 Image Filters
J
 JPEG IO
L
 Large Font
M
 Medium Bold Font
P
 PNG IO
S
 Small Font
T
 TGA Input
 TIFF IO
 Tiny Font
 Transformations
W
 WBMP IO
 WebP IO
X
 XBM IO
 XPM Input
+ +
Read and write BMP images.
+ + + +
Functions for truecolor to palette conversion
Crop an image
+ + + + + + + +
Read and write GD images.
Read and write GD2 images.
A very large ISO-8859-2 raster font (9x15 pixels).
Read GIF images.
Write GIF images.
+ + + + + + + +
Read and write JPEG images.
+ + + +
A large ISO-8859-2 raster font (8x16 pixels).
+ + + +
A medium bold ISO-8859-2 raster font (7x13 pixels).
+ + + +
Read and write PNG images.
+ + + +
A small ISO-8859-2 raster font (7x13 pixels).
+ + + +
Read TGA images.
Read and write TIFF images.
A very small ISO-8859-2 raster font (5x8 pixels).
+ + + +
Read and write WBMP images.
Read and write WebP images.
+ + + +
Read and write XBM images.
Read XPM images.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Functions.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Functions.html new file mode 100644 index 00000000000..4e2a359a3dd --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Functions.html @@ -0,0 +1,34 @@ + + +Function Index + + + + + + + + + +
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 gdAffineApplyToPointF
 gdAffineConcat
 gdAffineEqual
 gdAffineFlip
 gdAffineIdentity
 gdAffineInvert
 gdAffineRectilinear
 gdAffineRotate
 gdAffineScale
 gdAffineShearHorizontal
 gdAffineShearVertical
 gdAffineTranslate
 gdAlphaBlend
 gdClearErrorMethod
 gdColorMapLookup
 gdDPExtractData
 gdExtraVersion
 gdFontCacheSetup
 gdFontCacheShutdown
 gdFontGetGiant
 gdFontGetLarge
 gdFontGetMediumBold
 gdFontGetSmall
 gdFontGetTiny
 gdFree
 gdFreeFontCache
 gdFTUseFontConfig
 gdImageAABlend
 gdImageAlphaBlending
 gdImageArc
 gdImageBmp
 gdImageBmpCtx
 gdImageBmpPtr
 gdImageBoundsSafe
 gdImageBrightness
 gdImageChar
 gdImageCharUp
 gdImageClone
 gdImageColor
 gdImageColorAllocate
 gdImageColorAllocateAlpha
 gdImageColorClosest
 gdImageColorClosestAlpha
 gdImageColorClosestHWB
 gdImageColorDeallocate
 gdImageColorExact
 gdImageColorExactAlpha
 gdImageColorMatch
 gdImageColorReplace
 gdImageColorReplaceArray
 gdImageColorReplaceCallback
 gdImageColorReplaceThreshold
 gdImageColorResolve
 gdImageColorResolveAlpha
 gdImageColorTransparent
 gdImageCompare
 gdImageContrast
 gdImageConvolution
 gdImageCopy
 gdImageCopyGaussianBlurred
 gdImageCopyMerge
 gdImageCopyMergeGray
 gdImageCopyResampled
 gdImageCopyResized
 gdImageCopyRotated
 gdImageCreate
 gdImageCreateFromBmp
 gdImageCreateFromBmpCtx
 gdImageCreateFromBmpPtr
 gdImageCreateFromFile
 gdImageCreateFromGd
 gdImageCreateFromGd2
 gdImageCreateFromGd2Ctx
 gdImageCreateFromGd2Part
 gdImageCreateFromGd2PartCtx
 gdImageCreateFromGd2PartPtr
 gdImageCreateFromGd2Ptr
 gdImageCreateFromGdCtx
 gdImageCreateFromGdPtr
 gdImageCreateFromGif
 gdImageCreateFromGifCtx
 gdImageCreateFromGifPtr
 gdImageCreateFromJpeg
 gdImageCreateFromJpegCtx
 gdImageCreateFromJpegCtxEx
 gdImageCreateFromJpegEx
 gdImageCreateFromJpegPtr
 gdImageCreateFromJpegPtrEx
 gdImageCreateFromPng
 gdImageCreateFromPngCtx
 gdImageCreateFromPngPtr
 gdImageCreateFromPngSource
 gdImageCreateFromTga
 gdImageCreateFromTgaCtx
 gdImageCreateFromTgaPtr
 gdImageCreateFromTIFF
 gdImageCreateFromTiffCtx
 gdImageCreateFromTiffPtr
 gdImageCreateFromWBMP
 gdImageCreateFromWBMPCtx
 gdImageCreateFromWBMPPtr
 gdImageCreateFromWebp
 gdImageCreateFromWebpCtx
 gdImageCreateFromWebpPtr
 gdImageCreateFromXbm
 gdImageCreateFromXpm
 gdImageCreatePaletteFromTrueColor
 gdImageCreateTrueColor
 gdImageCrop
 gdImageCropAuto
 gdImageCropThreshold
 gdImageDashedLine
 gdImageDestroy
 gdImageEdgeDetectQuick
 gdImageEllipse
 gdImageEmboss
 gdImageFile
 gdImageFill
 gdImageFilledArc
 gdImageFilledEllipse
 gdImageFilledPolygon
 gdImageFilledRectangle
 gdImageFillToBorder
 gdImageFlipBoth
 gdImageFlipHorizontal
 gdImageFlipVertical
 gdImageGaussianBlur
 gdImageGd
 gdImageGd2
 gdImageGd2Ptr
 gdImageGdPtr
 gdImageGetClip
 gdImageGetInterpolationMethod
 gdImageGetPixel
 gdImageGetTrueColorPixel
 gdImageGif
 gdImageGifAnimAdd
 gdImageGifAnimAddCtx
 gdImageGifAnimAddPtr
 gdImageGifAnimBegin
 gdImageGifAnimBeginCtx
 gdImageGifAnimBeginPtr
 gdImageGifAnimEnd
 gdImageGifAnimEndCtx
 gdImageGifAnimEndPtr
 gdImageGifCtx
 gdImageGifPtr
 gdImageGrayScale
 gdImageInterlace
 gdImageJpeg
 gdImageJpegCtx
 gdImageJpegPtr
 gdImageLine
 gdImageMeanRemoval
 gdImageNegate
 gdImageNeuQuant
 gdImageOpenPolygon
 gdImagePaletteCopy
 gdImagePaletteToTrueColor
 gdImagePixelate
 gdImagePng
 gdImagePngCtx
 gdImagePngCtxEx
 gdImagePngEx
 gdImagePngPtr
 gdImagePngPtrEx
 gdImagePngToSink
 gdImagePolygon
 gdImageRectangle
 gdImageRotateInterpolated
 gdImageSaveAlpha
 gdImageScale
 gdImageScatter
 gdImageScatterColor
 gdImageScatterEx
 gdImageSelectiveBlur
 gdImageSetAntiAliased
 gdImageSetAntiAliasedDontBlend
 gdImageSetBrush
 gdImageSetClip
 gdImageSetInterpolationMethod
 gdImageSetPixel
 gdImageSetResolution
 gdImageSetStyle
 gdImageSetThickness
 gdImageSetTile
 gdImageSharpen
 gdImageSmooth
 gdImageSquareToCircle
 gdImageString
 gdImageString16
 gdImageStringFT
 gdImageStringFTCircle
 gdImageStringFTEx
 gdImageStringTTF
 gdImageStringUp
 gdImageStringUp16
 gdImageTiff
 gdImageTiffCtx
 gdImageTiffPtr
 gdImageTrueColorToPalette
 gdImageTrueColorToPaletteSetMethod
 gdImageTrueColorToPaletteSetQuality
 gdImageWBMP
 gdImageWBMPCtx
 gdImageWBMPPtr
 gdImageWebp
 gdImageWebpCtx
 gdImageWebpEx
 gdImageWebpPtr
 gdImageWebpPtrEx
 gdImageXbmCtx
 gdLayerMultiply
 gdLayerOverlay
 gdMajorVersion
 gdMinorVersion
 gdNewDynamicCtx
 gdNewDynamicCtxEx
 gdNewFileCtx
 gdNewSSCtx
 gdReleaseVersion
 gdSetErrorMethod
 gdSupportsFileType
 gdTransformAffineBoundingBox
 gdTransformAffineCopy
 gdTransformAffineGetImage
 gdVersionString
+ +
int gdAffineApplyToPointF (gdPointFPtr dst,
const gdPointFPtr src,
const double affine[6])
Applies an affine transformation to a point (floating point gdPointF)
int gdAffineConcat (double dst[6],
const double m1[6],
const double m2[6])
Concat (Multiply) two affine transformation matrices.
int gdAffineEqual (const double m1[6],
const double m2[6])
Determines whether two affine transformations are equal.
int gdAffineFlip (double dst[6],
const double src[6],
const int flip_h,
const int flip_v)
Flip an affine transformation horizontally or vertically.
int gdAffineIdentity (double dst[6])
Set up the identity matrix.
int gdAffineInvert (double dst[6],
const double src[6])
Find the inverse of an affine transformation.
int gdAffineRectilinear (const double m[6])
Determines whether the affine transformation is axis aligned.
int gdAffineRotate (double dst[6],
const double angle)
Set up a rotation affine transform.
int gdAffineScale (double dst[6],
const double scale_x,
const double scale_y)
Set up a scaling matrix.
int gdAffineShearHorizontal(double dst[6],
const double angle)
Set up a horizontal shearing matrix || becomes \\.
int gdAffineShearVertical(double dst[6],
const double angle)
Set up a vertical shearing matrix, columns are untouched.
int gdAffineTranslate (double dst[6],
const double offset_x,
const double offset_y)
Set up a translation matrix.
int gdAlphaBlend (int dst,
int src)
Blend two colors
void gdClearErrorMethod(void)
int gdColorMapLookup(const gdColorMap color_map,
const char *color_name,
int *r,
int *g,
int *b)
void * gdDPExtractData (struct gdIOCtx *ctx,
int *size)
const char * gdExtraVersion()
int gdFontCacheSetup (void)
Set up the font cache.
void gdFontCacheShutdown ()
Shut down the font cache and free the allocated resources.
gdFontPtr gdFontGetGiant (void)
Returns the built-in giant font.
gdFontPtr gdFontGetLarge (void)
Returns the built-in large font.
gdFontPtr gdFontGetMediumBold (void)
Returns the built-in medium bold font.
gdFontPtr gdFontGetSmall (void)
Returns the built-in small font.
gdFontPtr gdFontGetTiny (void)
Returns the built-in tiny font.
void gdFree (void *ptr)
Frees memory that has been allocated by libgd functions.
void gdFreeFontCache ()
Alias of gdFontCacheShutdown.
int gdFTUseFontConfig(int flag)
Enable or disable fontconfig by default.
void gdImageAABlend (gdImagePtr im)
NO-OP, kept for library compatibility.
void gdImageAlphaBlending (gdImagePtr im,
int alphaBlendingArg)
Set the effect for subsequent drawing operations
void gdImageArc (gdImagePtr im,
int cx,
int cy,
int w,
int h,
int s,
int e,
int color)
void gdImageBmp(gdImagePtr im,
FILE *outFile,
int compression)
gdImageBmp outputs the specified image to the specified file in BMP format.
void gdImageBmpCtx(gdImagePtr im,
gdIOCtxPtr out,
int compression)
Outputs the given image as BMP data, but using a gdIOCtx instead of a file.
void * gdImageBmpPtr(gdImagePtr im,
int *size,
int compression)
Outputs the given image as BMP data, but using a gdIOCtx instead of a file.
int gdImageBoundsSafe (gdImagePtr im,
int x,
int y)
int gdImageBrightness(gdImagePtr src,
int brightness)
Change the brightness of an image
void gdImageChar (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
Draws a single character.
void gdImageCharUp (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
gdImagePtr gdImageClone (gdImagePtr src)
Clones an image
int gdImageColor(gdImagePtr src,
const int red,
const int green,
const int blue,
const int alpha)
Change channel values of an image
int gdImageColorAllocate (gdImagePtr im,
int r,
int g,
int b)
Allocates a color
int gdImageColorAllocateAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Allocates a color
int gdImageColorClosest (gdImagePtr im,
int r,
int g,
int b)
Gets the closest color of the image
int gdImageColorClosestAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Gets the closest color of the image
int gdImageColorClosestHWB (gdImagePtr im,
int r,
int g,
int b)
void gdImageColorDeallocate (gdImagePtr im,
int color)
Removes a palette entry
int gdImageColorExact (gdImagePtr im,
int r,
int g,
int b)
Gets the exact color of the image
int gdImageColorExactAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Gets the exact color of the image
int gdImageColorMatch (gdImagePtr im1,
gdImagePtr im2)
Bring the palette colors in im2 to be closer to im1.
int gdImageColorReplace (gdImagePtr im,
int src,
int dst)
int gdImageColorReplaceArray (gdImagePtr im,
int len,
int *src,
int *dst)
int gdImageColorReplaceCallback (gdImagePtr im,
gdCallbackImageColor callback)
int gdImageColorReplaceThreshold (gdImagePtr im,
int src,
int dst,
float threshold)
int gdImageColorResolve (gdImagePtr im,
int r,
int g,
int b)
gdImageColorResolve is an alternative for the code fragment
int gdImageColorResolveAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
void gdImageColorTransparent (gdImagePtr im,
int color)
Sets the transparent color of the image
int gdImageCompare (gdImagePtr im1,
gdImagePtr im2)
Compare two images
int gdImageContrast(gdImagePtr src,
double contrast)
Change the contrast of an image
int gdImageConvolution(gdImagePtr src,
float filter[3][3],
float filter_div,
float offset)
Apply a convolution matrix to an image
void gdImageCopy (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h)
Copy an area of an image to another image
Return a copy of the source image src blurred according to the parameters using the Gaussian Blur algorithm.
void gdImageCopyMerge (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h,
int pct)
Copy an area of an image to another image ignoring alpha
void gdImageCopyMergeGray (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h,
int pct)
Copy an area of an image to another image ignoring alpha
void gdImageCopyResampled (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int dstW,
int dstH,
int srcW,
int srcH)
Copy a resampled area from an image to another image
void gdImageCopyResized (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int dstW,
int dstH,
int srcW,
int srcH)
Copy a resized area from an image to another image
void gdImageCopyRotated (gdImagePtr dst,
gdImagePtr src,
double dstX,
double dstY,
int srcX,
int srcY,
int srcWidth,
int srcHeight,
int angle)
Copy a rotated area from an image to another image
gdImagePtr gdImageCreate (int sx,
int sy)
gdImageCreate is called to create palette-based images, with no more than 256 colors.
gdImagePtr gdImageCreateFromBmp(FILE *inFile)
gdImagePtr gdImageCreateFromBmpCtx(gdIOCtxPtr infile)
gdImagePtr gdImageCreateFromBmpPtr(int size,
void *data)
gdImagePtr gdImageCreateFromFile(const char *filename)
Read an image file of any supported.
gdImagePtr gdImageCreateFromGd (FILE *inFile)
gdImageCreateFromGd is called to load images from gd format files.
gdImagePtr gdImageCreateFromGd2 (FILE *inFile)
gdImageCreateFromGd2 is called to load images from gd2 format files.
gdImagePtr gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
Reads in a GD2 image via a gdIOCtx struct.
gdImagePtr gdImageCreateFromGd2Part (FILE *inFile,
int srcx,
int srcy,
int w,
int h)
gdImageCreateFromGd2Part is called to load parts of images from gd2 format files.
gdImagePtr gdImageCreateFromGd2PartCtx (gdIOCtx *in,
int srcx,
int srcy,
int w,
int h)
gdImagePtr gdImageCreateFromGd2PartPtr (int size,
void *data,
int srcx,
int srcy,
int w,
int h)
gdImagePtr gdImageCreateFromGd2Ptr (int size,
void *data)
gdImagePtr gdImageCreateFromGdCtx (gdIOCtxPtr in)
Reads in a GD image via a gdIOCtx struct.
gdImagePtr gdImageCreateFromGdPtr (int size,
void *data)
gdImagePtr gdImageCreateFromGif(FILE *fdFile)
gdImageCreateFromGif is called to load images from GIF format files.
gdImagePtr gdImageCreateFromGifCtx(gdIOCtxPtr fd)
See gdImageCreateFromGif.
gdImagePtr gdImageCreateFromGifPtr (int size,
void *data)
gdImagePtr gdImageCreateFromJpeg(FILE *inFile)
See gdImageCreateFromJpegEx.
gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile)
See gdImageCreateFromJpeg.
gdImagePtr gdImageCreateFromJpegCtxEx(gdIOCtx *infile,
int ignore_warning)
See gdImageCreateFromJpeg.
gdImagePtr gdImageCreateFromJpegEx(FILE *inFile,
int ignore_warning)
gdImageCreateFromJpegEx is called to load truecolor images from JPEG format files.
gdImagePtr gdImageCreateFromJpegPtr(int size,
void *data)
gdImagePtr gdImageCreateFromJpegPtrEx(int size,
void *data,
int ignore_warning)
gdImagePtr gdImageCreateFromPng (FILE *inFile)
gdImageCreateFromPng is called to load images from PNG format files.
gdImagePtr gdImageCreateFromPngCtx (gdIOCtx *infile)
See gdImageCreateFromPng.
gdImagePtr gdImageCreateFromPngPtr (int size,
void *data)
See gdImageCreateFromPng.
gdImagePtr gdImageCreateFromPngSource (gdSourcePtr inSource)
See gdImageCreateFromPng for documentation.
gdImagePtr gdImageCreateFromTga(FILE *fp)
Creates a gdImage from a TGA file
gdImagePtr gdImageCreateFromTgaCtx(gdIOCtx *ctx)
Creates a gdImage from a gdIOCtx referencing a TGA binary file.
gdImagePtr gdImageCreateFromTgaPtr(int size,
void *data)
gdImagePtr gdImageCreateFromTiffCtx(gdIOCtx *infile)
Create a gdImage from a TIFF file input from an gdIOCtx.
gdImagePtr gdImageCreateFromTiffPtr(int size,
void *data)
gdImagePtr gdImageCreateFromWBMP(FILE *inFile)
gdImageCreateFromWBMP is called to load images from WBMP format files.
gdImagePtr gdImageCreateFromWBMPCtx(gdIOCtx *infile)
Reads in a WBMP image via a gdIOCtx struct.
gdImagePtr gdImageCreateFromWBMPPtr(int size,
void *data)
gdImagePtr gdImageCreateFromWebp (FILE *inFile)
gdImageCreateFromWebp is called to load truecolor images from WebP format files.
gdImagePtr gdImageCreateFromWebpCtx (gdIOCtx *infile)
See gdImageCreateFromWebp.
gdImagePtr gdImageCreateFromWebpPtr (int size,
void *data)
See gdImageCreateFromWebp.
gdImagePtr gdImageCreateFromXbm(FILE *fd)
gdImageCreateFromXbm is called to load images from X bitmap format files.
gdImagePtr gdImageCreateFromXpm(char *filename)
gdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files.
gdImagePtr gdImageCreatePaletteFromTrueColor (gdImagePtr im,
int dither,
int colorsWanted)
Creates a new palette image from a truecolor image
gdImagePtr gdImageCreateTrueColor (int sx,
int sy)
gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors.
gdImagePtr gdImageCrop(gdImagePtr src,
const gdRect *crop)
Crop an image to a given rectangle
gdImagePtr gdImageCropAuto(gdImagePtr im,
const unsigned int mode)
Crop an image automatically
gdImagePtr gdImageCropThreshold(gdImagePtr im,
const unsigned int color,
const float threshold)
Crop an image using a given color
void gdImageDashedLine (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
int gdImageEdgeDetectQuick(gdImagePtr src)
Edge detection of an image
void gdImageEllipse(gdImagePtr im,
int mx,
int my,
int w,
int h,
int c)
int gdImageEmboss(gdImagePtr im)
Emboss an image
int gdImageFile(gdImagePtr im,
const char *filename)
Writes an image to a file in the format indicated by the filename.
void gdImageFill(gdImagePtr im,
int x,
int y,
int nc)
void gdImageFilledArc (gdImagePtr im,
int cx,
int cy,
int w,
int h,
int s,
int e,
int color,
int style)
void gdImageFilledEllipse (gdImagePtr im,
int mx,
int my,
int w,
int h,
int c)
void gdImageFilledPolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws a filled polygon
void gdImageFilledRectangle (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
void gdImageFillToBorder (gdImagePtr im,
int x,
int y,
int border,
int color)
void gdImageFlipBoth(gdImagePtr im)
Flip an image vertically and horizontally
void gdImageFlipHorizontal(gdImagePtr im)
Flip an image horizontally
void gdImageFlipVertical(gdImagePtr im)
Flip an image vertically
int gdImageGaussianBlur(gdImagePtr im)
gdImageGaussianBlur performs a Gaussian blur of radius 1 on the image.
void gdImageGd (gdImagePtr im,
FILE *outFile)
void gdImageGd2 (gdImagePtr im,
FILE *outFile,
int cs,
int fmt)
void * gdImageGd2Ptr (gdImagePtr im,
int cs,
int fmt,
int *size)
void * gdImageGdPtr (gdImagePtr im,
int *size)
void gdImageGetClip (gdImagePtr im,
int *x1P,
int *y1P,
int *x2P,
int *y2P)
Gets the current clipping rectangle
gdInterpolationMethod gdImageGetInterpolationMethod(gdImagePtr im)
Get the current interpolation method
int gdImageGetPixel (gdImagePtr im,
int x,
int y)
Gets a pixel color as stored in the image.
int gdImageGetTrueColorPixel (gdImagePtr im,
int x,
int y)
Gets a pixel color always as truecolor value.
void gdImageGif(gdImagePtr im,
FILE *outFile)
gdImageGif outputs the specified image to the specified file in GIF format.
void gdImageGifAnimAdd(gdImagePtr im,
FILE *outFile,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)
This function writes GIF animation frames to GIF animation, which was initialized with gdImageGifAnimBegin.
void gdImageGifAnimAddCtx(gdImagePtr im,
gdIOCtxPtr out,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)
Adds an animation frame via a gdIOCtxPtr.
void * gdImageGifAnimAddPtr(gdImagePtr im,
int *size,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)
Like gdImageGifAnimAdd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.
void gdImageGifAnimBegin(gdImagePtr im,
FILE *outFile,
int GlobalCM,
int Loops)
This function must be called as the first function when creating a GIF animation.
void gdImageGifAnimBeginCtx(gdImagePtr im,
gdIOCtxPtr out,
int GlobalCM,
int Loops)
Like gdImageGifAnimBegin except that it outputs to gdIOCtx.
void * gdImageGifAnimBeginPtr(gdImagePtr im,
int *size,
int GlobalCM,
int Loops)
Like gdImageGifAnimBegin except that it outputs to a memory buffer.
void gdImageGifAnimEnd(FILE *outFile)
Terminates the GIF file properly.
void gdImageGifAnimEndCtx(gdIOCtx *out)
Like gdImageGifAnimEnd, but writes its data via a gdIOCtx.
void * gdImageGifAnimEndPtr(int *size)
Like gdImageGifAnimEnd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.
void gdImageGifCtx(gdImagePtr im,
gdIOCtxPtr out)
Writes a GIF image via a gdIOCtx.
void * gdImageGifPtr(gdImagePtr im,
int *size)
Identical to gdImageGif except that it returns a pointer to a memory area with the GIF data.
int gdImageGrayScale(gdImagePtr src)
Convert an image to grayscale
void gdImageInterlace (gdImagePtr im,
int interlaceArg)
Sets whether an image is interlaced
void gdImageJpeg(gdImagePtr im,
FILE *outFile,
int quality)
gdImageJpeg outputs the specified image to the specified file in JPEG format.
void gdImageJpegCtx(gdImagePtr im,
gdIOCtx *outfile,
int quality)
Write the image as JPEG data via a gdIOCtx.
void * gdImageJpegPtr(gdImagePtr im,
int *size,
int quality)
Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data.
void gdImageLine (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
Bresenham as presented in Foley & Van Dam.
int gdImageMeanRemoval(gdImagePtr im)
Mean removal of an image
int gdImageNegate(gdImagePtr src)
Invert an image
gdImagePtr gdImageNeuQuant(gdImagePtr im,
const int max_color,
int sample_factor)
Creates a new palette image from a truecolor image
void gdImageOpenPolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws an open polygon
void gdImagePaletteCopy (gdImagePtr to,
gdImagePtr from)
int gdImagePaletteToTrueColor(gdImagePtr src)
Convert a palette image to true color
int gdImagePixelate(gdImagePtr im,
int block_size,
const unsigned int mode)
void gdImagePng (gdImagePtr im,
FILE *outFile)
Equivalent to calling gdImagePngEx with compression of -1.
void gdImagePngCtx (gdImagePtr im,
gdIOCtx *outfile)
Equivalent to calling gdImagePngCtxEx with compression of -1.
void gdImagePngCtxEx (gdImagePtr im,
gdIOCtx *outfile,
int level)
Outputs the given image as PNG data, but using a gdIOCtx instead of a file.
void gdImagePngEx (gdImagePtr im,
FILE *outFile,
int level)
gdImagePngEx outputs the specified image to the specified file in PNG format.
void * gdImagePngPtr (gdImagePtr im,
int *size)
Equivalent to calling gdImagePngPtrEx with compression of -1.
void * gdImagePngPtrEx (gdImagePtr im,
int *size,
int level)
Identical to gdImagePngEx except that it returns a pointer to a memory area with the PNG data.
void gdImagePngToSink (gdImagePtr im,
gdSinkPtr outSink)
void gdImagePolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws a closed polygon
void gdImageRectangle (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
Draws a rectangle.
gdImagePtr gdImageRotateInterpolated(const gdImagePtr src,
const float angle,
int bgcolor)
Rotate an image
void gdImageSaveAlpha (gdImagePtr im,
int saveAlphaArg)
Sets the save alpha flag
gdImagePtr gdImageScale(const gdImagePtr src,
const unsigned int new_width,
const unsigned int new_height)
Scale an image
int gdImageScatter(gdImagePtr im,
int sub,
int plus)
int gdImageScatterColor(gdImagePtr im,
int sub,
int plus,
int colors[],
unsigned int num_colors)
int gdImageScatterEx(gdImagePtr im,
gdScatterPtr scatter)
int gdImageSelectiveBlur(gdImagePtr src)
void gdImageSetAntiAliased (gdImagePtr im,
int c)
Set the color for subsequent anti-aliased drawing
void gdImageSetAntiAliasedDontBlend (gdImagePtr im,
int c,
int dont_blend)
Set the color and “dont_blend” color for subsequent anti-aliased drawing
void gdImageSetBrush (gdImagePtr im,
gdImagePtr brush)
Sets the brush for following drawing operations
void gdImageSetClip (gdImagePtr im,
int x1,
int y1,
int x2,
int y2)
Sets the clipping rectangle
int gdImageSetInterpolationMethod(gdImagePtr im,
gdInterpolationMethod id)
Set the interpolation method for subsequent operations
void gdImageSetPixel (gdImagePtr im,
int x,
int y,
int color)
void gdImageSetResolution(gdImagePtr im,
const unsigned int res_x,
const unsigned int res_y)
Sets the resolution of an image.
void gdImageSetStyle (gdImagePtr im,
int *style,
int noOfPixels)
Sets the style for following drawing operations
void gdImageSetThickness (gdImagePtr im,
int thickness)
Sets the thickness for following drawing operations
void gdImageSetTile (gdImagePtr im,
gdImagePtr tile)
void gdImageSharpen (gdImagePtr im,
int pct)
Sharpen an image.
int gdImageSmooth(gdImagePtr im,
float weight)
Smooth an image
gdImagePtr gdImageSquareToCircle (gdImagePtr im,
int radius)
Apply polar coordinate transformation to an image.
void gdImageString (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
Draws a character string.
void gdImageString16 (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned short *s,
int color)
char * gdImageStringFT (gdImage *im,
int *brect,
int fg,
char *fontlist,
double ptsize,
double angle,
int x,
int y,
char *string)
Render an UTF-8 string onto a gd image.
char* gdImageStringFTCircle (gdImagePtr im,
int cx,
int cy,
double radius,
double textRadius,
double fillPortion,
char *font,
double points,
char *top,
char *bottom,
int fgcolor)
Draw text curved along the top and bottom of a circular area of an image.
gdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.
char * gdImageStringTTF (gdImage *im,
int *brect,
int fg,
char *fontlist,
double ptsize,
double angle,
int x,
int y,
char *string)
Alias of gdImageStringFT.
void gdImageStringUp (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
void gdImageStringUp16 (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned short *s,
int color)
void gdImageTiff(gdImagePtr im,
FILE *outFile)
void gdImageTiffCtx(gdImagePtr image,
gdIOCtx *out)
Write the gd image as a tiff file.
void * gdImageTiffPtr(gdImagePtr im,
int *size)
int gdImageTrueColorToPalette (gdImagePtr im,
int dither,
int colorsWanted)
Converts a truecolor image to a palette image
int gdImageTrueColorToPaletteSetMethod (gdImagePtr im,
int method,
int speed)
Selects the quantization method
void gdImageTrueColorToPaletteSetQuality (gdImagePtr im,
int min_quality,
int max_quality)
Chooses a quality range for quantization
void gdImageWBMP(gdImagePtr im,
int fg,
FILE *outFile)
void gdImageWBMPCtx(gdImagePtr image,
int fg,
gdIOCtx *out)
Write the image as a wbmp file
void * gdImageWBMPPtr(gdImagePtr im,
int *size,
int fg)
void gdImageWebp (gdImagePtr im,
FILE *outFile)
Variant of gdImageWebpEx which uses the default quality (-1).
void gdImageWebpCtx (gdImagePtr im,
gdIOCtx *outfile,
int quality)
Write the image as WebP data via a gdIOCtx.
void gdImageWebpEx (gdImagePtr im,
FILE *outFile,
int quality)
gdImageWebpEx outputs the specified image to the specified file in WebP format.
void * gdImageWebpPtr (gdImagePtr im,
int *size)
See gdImageWebpEx.
void * gdImageWebpPtrEx (gdImagePtr im,
int *size,
int quality)
See gdImageWebpEx.
void gdImageXbmCtx(gdImagePtr image,
char *file_name,
int fg,
gdIOCtx *out)
Writes an image to an IO context in X11 bitmap format.
int gdLayerMultiply (int dst,
int src)
Overlay two colors with multiply effect
int gdLayerOverlay (int dst,
int src)
Overlay two colors
int gdMajorVersion()
int gdMinorVersion()
gdIOCtx * gdNewDynamicCtx(int initialSize,
void *data)
Return data as a dynamic pointer.
gdIOCtx * gdNewDynamicCtxEx(int initialSize,
void *data,
int freeOKFlag)
gdIOCtx * gdNewFileCtx(FILE *f)
Return data as a dynamic pointer.
gdIOCtx * gdNewSSCtx(gdSourcePtr src,
gdSinkPtr snk)
Return data as a dynamic pointer.
int gdReleaseVersion()
void gdSetErrorMethod(gdErrorMethod error_method)
int gdSupportsFileType(const char *filename,
int writing)
Tests if a given file type is supported by GD.
int gdTransformAffineBoundingBox(gdRectPtr src,
const double affine[6],
gdRectPtr bbox)
Returns the bounding box of an affine transformation applied to a rectangular area gdRect
int gdTransformAffineCopy(gdImagePtr dst,
int dst_x,
int dst_y,
const gdImagePtr src,
gdRectPtr src_region,
const double affine[6])
Applies an affine transformation to a region and copy the result in a destination to the given position.
int gdTransformAffineGetImage(gdImagePtr *dst,
const gdImagePtr src,
gdRectPtr src_area,
const double affine[6])
Applies an affine transformation to a region and return an image containing the complete transformation.
const char * gdVersionString()
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General.html new file mode 100644 index 00000000000..8eddc8fa1d4 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General.html @@ -0,0 +1,54 @@ + + +Index + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
0-9
 5, About LibGD 2::2
A
 Accessor Macros
 Affine Transformation
B
 BMP IO
C
 Cloning and Copying
 Color
 Color Composition
 Color Decomposition
 Color Quantization
 Colors
 Creation and Destruction
 Crop
 Cropping
E
 Effects
 Error Handling
F
 FreeType font rendering
 Functions
+ +
gd is a graphics library.
+ + + + + + + +
Read and write BMP images.
+ + + +
Functions for truecolor to palette conversion
Colors are always of type int which is supposed to be at least 32 bit large.
Crop an image
+ + + +
The layering effect
+ + + + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General2.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General2.html new file mode 100644 index 00000000000..3e6d3eb4f3f --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General2.html @@ -0,0 +1,34 @@ + + +Index + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 GD IO
 gd.c
 gd.h
 GD_BELL
 GD_BESSEL
 GD_BICUBIC
 GD_BICUBIC_FIXED
 GD_BILINEAR_FIXED
 GD_BLACKMAN
 GD_BOX
 GD_BSPLINE
 GD_CATMULLROM
 GD_CROP_BLACK
 GD_CROP_DEFAULT
 GD_CROP_SIDES
 GD_CROP_TRANSPARENT
 GD_CROP_WHITE
 gd_filename.c
 GD_GAUSSIAN
 GD_GENERALIZED_CUBIC
 GD_HAMMING
 GD_HANNING
 GD_HERMITE
 gd_interpolation.c
 gd_io.h
 gd_io_dp.c
 GD_LINEAR
 GD_MITCHELL
 GD_NEAREST_NEIGHBOUR
 GD_POWER
 GD_QUADRATIC
 GD_QUANT_DEFAULT
 GD_QUANT_JQUANT
 GD_QUANT_LIQ
 GD_QUANT_NEUQUANT
 GD_SINC
 gd_ss.c
 GD_TRIANGLE
 gd_version.c
 GD_WEIGHTED4
 GD2 IO
 gdAffineApplyToPointF
 gdAffineConcat
 gdAffineEqual
 gdAffineFlip
 gdAffineIdentity
 gdAffineInvert
 gdAffineRectilinear
 gdAffineRotate
 gdAffineScale
 gdAffineShearHorizontal
 gdAffineShearVertical
 gdAffineTranslate
 gdAlphaBlend
 gdAntiAliased
 gdBrushed
 gdClearErrorMethod
 gdColorMapLookup
 gdCropMode
 gdDisposalNone
 gdDisposalRestoreBackground
 gdDisposalRestorePrevious
 gdDisposalUnknown
 gdDPExtractData
 gdExtraVersion
 gdFont
 gdFontCacheSetup
 gdFontCacheShutdown
 gdFontGetGiant
 gdFontGetLarge
 gdFontGetMediumBold
 gdFontGetSmall
 gdFontGetTiny
 gdFontPtr
 gdFree
 gdFreeFontCache
 gdFTStringExtra
 gdFTStringExtraPtr
 gdFTUseFontConfig
 gdfx.c
 gdImage
 gdImageAABlend
 gdImageAlpha
 gdImageAlphaBlending
 gdImageArc
 gdImageBlue
 gdImageBmp
 gdImageBmpCtx
 gdImageBmpPtr
 gdImageBoundsSafe
 gdImageBrightness
 gdImageChar
 gdImageCharUp
 gdImageClone
 gdImageColor
 gdImageColorAllocate
 gdImageColorAllocateAlpha
 gdImageColorClosest
 gdImageColorClosestAlpha
 gdImageColorClosestHWB
 gdImageColorDeallocate
 gdImageColorExact
 gdImageColorExactAlpha
 gdImageColorMatch
 gdImageColorReplace
 gdImageColorReplaceArray
 gdImageColorReplaceCallback
 gdImageColorReplaceThreshold
 gdImageColorResolve
 gdImageColorResolveAlpha
 gdImageColorsTotal
 gdImageColorTransparent
 gdImageCompare
 gdImageContrast
 gdImageConvolution
 gdImageCopy
 gdImageCopyGaussianBlurred
 gdImageCopyMerge
 gdImageCopyMergeGray
 gdImageCopyResampled
 gdImageCopyResized
 gdImageCopyRotated
 gdImageCreate
 gdImageCreateFromBmp
 gdImageCreateFromBmpCtx
 gdImageCreateFromBmpPtr
 gdImageCreateFromFile
 gdImageCreateFromGd
 gdImageCreateFromGd2
 gdImageCreateFromGd2Ctx
 gdImageCreateFromGd2Part
 gdImageCreateFromGd2PartCtx
 gdImageCreateFromGd2PartPtr
 gdImageCreateFromGd2Ptr
 gdImageCreateFromGdCtx
 gdImageCreateFromGdPtr
 gdImageCreateFromGif
 gdImageCreateFromGifCtx
 gdImageCreateFromGifPtr
 gdImageCreateFromJpeg
 gdImageCreateFromJpegCtx
 gdImageCreateFromJpegCtxEx
 gdImageCreateFromJpegEx
 gdImageCreateFromJpegPtr
 gdImageCreateFromJpegPtrEx
 gdImageCreateFromPng
 gdImageCreateFromPngCtx
 gdImageCreateFromPngPtr
 gdImageCreateFromPngSource
 gdImageCreateFromTga
 gdImageCreateFromTgaCtx
 gdImageCreateFromTgaPtr
 gdImageCreateFromTIFF
 gdImageCreateFromTiffCtx
 gdImageCreateFromTiffPtr
 gdImageCreateFromWBMP
 gdImageCreateFromWBMPCtx
 gdImageCreateFromWBMPPtr
 gdImageCreateFromWebp
 gdImageCreateFromWebpCtx
 gdImageCreateFromWebpPtr
 gdImageCreateFromXbm
 gdImageCreateFromXpm
 gdImageCreatePaletteFromTrueColor
 gdImageCreateTrueColor
 gdImageCrop
 gdImageCropAuto
 gdImageCropThreshold
 gdImageDashedLine
 gdImageDestroy
 gdImageEdgeDetectQuick
 gdImageEllipse
 gdImageEmboss
 gdImageFile
 gdImageFill
 gdImageFilledArc
 gdImageFilledEllipse
 gdImageFilledPolygon
 gdImageFilledRectangle
 gdImageFillToBorder
 gdImageFlipBoth
 gdImageFlipHorizontal
 gdImageFlipVertical
 gdImageGaussianBlur
 gdImageGd
 gdImageGd2
 gdImageGd2Ptr
 gdImageGdPtr
 gdImageGetClip
 gdImageGetInterlaced
 gdImageGetInterpolationMethod
 gdImageGetPixel
 gdImageGetTransparent
 gdImageGetTrueColorPixel
 gdImageGif
 gdImageGifAnim
 gdImageGifAnimAdd
 gdImageGifAnimAddCtx
 gdImageGifAnimAddPtr
 gdImageGifAnimBegin
 gdImageGifAnimBeginCtx
 gdImageGifAnimBeginPtr
 gdImageGifAnimEnd
 gdImageGifAnimEndCtx
 gdImageGifAnimEndPtr
 gdImageGifCtx
 gdImageGifPtr
 gdImageGrayScale
 gdImageGreen
 gdImageInterlace
 gdImageJpeg
 gdImageJpegCtx
 gdImageJpegPtr
 gdImageLine
 gdImageMeanRemoval
 gdImageNegate
 gdImageNeuQuant
 gdImageOpenPolygon
 gdImagePaletteCopy
 gdImagePalettePixel
 gdImagePaletteToTrueColor
 gdImagePixelate
 gdImagePng
 gdImagePngCtx
 gdImagePngCtxEx
 gdImagePngEx
 gdImagePngPtr
 gdImagePngPtrEx
 gdImagePngToSink
 gdImagePolygon
 gdImagePtr
 gdImageRectangle
 gdImageRed
 gdImageResolutionX
 gdImageResolutionY
 gdImageRotateInterpolated
 gdImageSaveAlpha
 gdImageScale
 gdImageScatter
 gdImageScatterColor
 gdImageScatterEx
 gdImageSelectiveBlur
 gdImageSetAntiAliased
 gdImageSetAntiAliasedDontBlend
 gdImageSetBrush
 gdImageSetClip
 gdImageSetInterpolationMethod
 gdImageSetPixel
 gdImageSetResolution
 gdImageSetStyle
 gdImageSetThickness
 gdImageSetTile
 gdImageSharpen
 gdImageSmooth
 gdImageSquareToCircle
 gdImageString
 gdImageString16
 gdImageStringFT
 gdImageStringFTCircle
 gdImageStringFTEx
 gdImageStringTTF
 gdImageStringUp
 gdImageStringUp16
 gdImageSX
 gdImageSY
 gdImageTiff
 gdImageTiffCtx
 gdImageTiffPtr
 gdImageTrueColor
 gdImageTrueColorPixel
 gdImageTrueColorToPalette
 gdImageTrueColorToPaletteSetMethod
 gdImageTrueColorToPaletteSetQuality
 gdImageWBMP
 gdImageWBMPCtx
 gdImageWBMPPtr
 gdImageWebp
 gdImageWebpCtx
 gdImageWebpEx
 gdImageWebpPtr
 gdImageWebpPtrEx
 gdImageXbmCtx
 gdInterpolationMethod
 gdIOCtx
 gdLayerMultiply
 gdLayerOverlay
 gdMajorVersion
 gdMinorVersion
 gdNewDynamicCtx
 gdNewDynamicCtxEx
 gdNewFileCtx
 gdNewSSCtx
 gdPaletteQuantizationMethod
 gdPoint
 gdPointF
 gdPointFPtr
 gdPointPtr
 gdRect
 gdRectPtr
 gdReleaseVersion
 gdSetErrorMethod
 gdSink
 gdSinkPtr
 gdSource
 gdSourcePtr
 gdStyled
 gdStyledBrushed
 gdSupportsFileType
 gdTiled
 gdTransformAffineBoundingBox
 gdTransformAffineCopy
 gdTransformAffineGetImage
 gdTransparent
 gdTrueColorAlpha
 gdTrueColorGetAlpha
 gdTrueColorGetBlue
 gdTrueColorGetGreen
 gdTrueColorGetRed
 gdVersionString
 Giant Font
 GIF Input
 GIF Output
 GifAnim
+ +
Read and write GD images.
Bell
Bessel
Bicubic
fixed point bicubic integer
fixed point bilinear
Blackman
Box
BSpline
Catmullrom
Crop black borders
Default crop mode (4 corners or background)
Crop using colors of the 4 corners
Crop using the transparent color
Crop white borders
Gaussian
Generalized cubic
Hamming
Hannig
Hermite
bilinear interpolation
Mitchell
Nearest neighbour interpolation
Power
Quadratic
GD_QUANT_LIQ if libimagequant is available, GD_QUANT_JQUANT otherwise.
libjpeg’s old median cut.
A combination of algorithms used in libimagequant aiming for the highest quality at cost of speed.
NeuQuant - approximation using Kohonen neural network.
Sinc
Triangle
4 pixels weighted bilinear interpolation
Read and write GD2 images.
int gdAffineApplyToPointF (gdPointFPtr dst,
const gdPointFPtr src,
const double affine[6])
Applies an affine transformation to a point (floating point gdPointF)
int gdAffineConcat (double dst[6],
const double m1[6],
const double m2[6])
Concat (Multiply) two affine transformation matrices.
int gdAffineEqual (const double m1[6],
const double m2[6])
Determines whether two affine transformations are equal.
int gdAffineFlip (double dst[6],
const double src[6],
const int flip_h,
const int flip_v)
Flip an affine transformation horizontally or vertically.
int gdAffineIdentity (double dst[6])
Set up the identity matrix.
int gdAffineInvert (double dst[6],
const double src[6])
Find the inverse of an affine transformation.
int gdAffineRectilinear (const double m[6])
Determines whether the affine transformation is axis aligned.
int gdAffineRotate (double dst[6],
const double angle)
Set up a rotation affine transform.
int gdAffineScale (double dst[6],
const double scale_x,
const double scale_y)
Set up a scaling matrix.
int gdAffineShearHorizontal(double dst[6],
const double angle)
Set up a horizontal shearing matrix || becomes \\.
int gdAffineShearVertical(double dst[6],
const double angle)
Set up a vertical shearing matrix, columns are untouched.
int gdAffineTranslate (double dst[6],
const double offset_x,
const double offset_y)
Set up a translation matrix.
int gdAlphaBlend (int dst,
int src)
Blend two colors
draw anti aliased
use the current brush, see gdImageSetBrush
void gdClearErrorMethod(void)
int gdColorMapLookup(const gdColorMap color_map,
const char *color_name,
int *r,
int *g,
int *b)
Preserve previous frame
First allocated color of palette
Restore to before start of frame
Not recommended
void * gdDPExtractData (struct gdIOCtx *ctx,
int *size)
const char * gdExtraVersion()
int gdFontCacheSetup (void)
Set up the font cache.
void gdFontCacheShutdown ()
Shut down the font cache and free the allocated resources.
gdFontPtr gdFontGetGiant (void)
Returns the built-in giant font.
gdFontPtr gdFontGetLarge (void)
Returns the built-in large font.
gdFontPtr gdFontGetMediumBold (void)
Returns the built-in medium bold font.
gdFontPtr gdFontGetSmall (void)
Returns the built-in small font.
gdFontPtr gdFontGetTiny (void)
Returns the built-in tiny font.
A font structure, containing the bitmaps of all characters in a font.
void gdFree (void *ptr)
Frees memory that has been allocated by libgd functions.
void gdFreeFontCache ()
Alias of gdFontCacheShutdown.
A structure and associated pointer type used to pass additional parameters to the gdImageStringFTEx function.
int gdFTUseFontConfig(int flag)
Enable or disable fontconfig by default.
void gdImageAABlend (gdImagePtr im)
NO-OP, kept for library compatibility.
Gets the alpha component value of a given color.
void gdImageAlphaBlending (gdImagePtr im,
int alphaBlendingArg)
Set the effect for subsequent drawing operations
void gdImageArc (gdImagePtr im,
int cx,
int cy,
int w,
int h,
int s,
int e,
int color)
Gets the blue component value of a given color.
void gdImageBmp(gdImagePtr im,
FILE *outFile,
int compression)
gdImageBmp outputs the specified image to the specified file in BMP format.
void gdImageBmpCtx(gdImagePtr im,
gdIOCtxPtr out,
int compression)
Outputs the given image as BMP data, but using a gdIOCtx instead of a file.
void * gdImageBmpPtr(gdImagePtr im,
int *size,
int compression)
Outputs the given image as BMP data, but using a gdIOCtx instead of a file.
int gdImageBoundsSafe (gdImagePtr im,
int x,
int y)
int gdImageBrightness(gdImagePtr src,
int brightness)
Change the brightness of an image
void gdImageChar (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
Draws a single character.
void gdImageCharUp (gdImagePtr im,
gdFontPtr f,
int x,
int y,
int c,
int color)
gdImagePtr gdImageClone (gdImagePtr src)
Clones an image
int gdImageColor(gdImagePtr src,
const int red,
const int green,
const int blue,
const int alpha)
Change channel values of an image
int gdImageColorAllocate (gdImagePtr im,
int r,
int g,
int b)
Allocates a color
int gdImageColorAllocateAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Allocates a color
int gdImageColorClosest (gdImagePtr im,
int r,
int g,
int b)
Gets the closest color of the image
int gdImageColorClosestAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Gets the closest color of the image
int gdImageColorClosestHWB (gdImagePtr im,
int r,
int g,
int b)
void gdImageColorDeallocate (gdImagePtr im,
int color)
Removes a palette entry
int gdImageColorExact (gdImagePtr im,
int r,
int g,
int b)
Gets the exact color of the image
int gdImageColorExactAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Gets the exact color of the image
int gdImageColorMatch (gdImagePtr im1,
gdImagePtr im2)
Bring the palette colors in im2 to be closer to im1.
int gdImageColorReplace (gdImagePtr im,
int src,
int dst)
int gdImageColorReplaceArray (gdImagePtr im,
int len,
int *src,
int *dst)
int gdImageColorReplaceCallback (gdImagePtr im,
gdCallbackImageColor callback)
int gdImageColorReplaceThreshold (gdImagePtr im,
int src,
int dst,
float threshold)
int gdImageColorResolve (gdImagePtr im,
int r,
int g,
int b)
gdImageColorResolve is an alternative for the code fragment
int gdImageColorResolveAlpha (gdImagePtr im,
int r,
int g,
int b,
int a)
Gets the number of colors in the palette.
void gdImageColorTransparent (gdImagePtr im,
int color)
Sets the transparent color of the image
int gdImageCompare (gdImagePtr im1,
gdImagePtr im2)
Compare two images
int gdImageContrast(gdImagePtr src,
double contrast)
Change the contrast of an image
int gdImageConvolution(gdImagePtr src,
float filter[3][3],
float filter_div,
float offset)
Apply a convolution matrix to an image
void gdImageCopy (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h)
Copy an area of an image to another image
Return a copy of the source image src blurred according to the parameters using the Gaussian Blur algorithm.
void gdImageCopyMerge (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h,
int pct)
Copy an area of an image to another image ignoring alpha
void gdImageCopyMergeGray (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int w,
int h,
int pct)
Copy an area of an image to another image ignoring alpha
void gdImageCopyResampled (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int dstW,
int dstH,
int srcW,
int srcH)
Copy a resampled area from an image to another image
void gdImageCopyResized (gdImagePtr dst,
gdImagePtr src,
int dstX,
int dstY,
int srcX,
int srcY,
int dstW,
int dstH,
int srcW,
int srcH)
Copy a resized area from an image to another image
void gdImageCopyRotated (gdImagePtr dst,
gdImagePtr src,
double dstX,
double dstY,
int srcX,
int srcY,
int srcWidth,
int srcHeight,
int angle)
Copy a rotated area from an image to another image
gdImagePtr gdImageCreate (int sx,
int sy)
gdImageCreate is called to create palette-based images, with no more than 256 colors.
gdImagePtr gdImageCreateFromBmp(FILE *inFile)
gdImagePtr gdImageCreateFromBmpCtx(gdIOCtxPtr infile)
gdImagePtr gdImageCreateFromBmpPtr(int size,
void *data)
gdImagePtr gdImageCreateFromFile(const char *filename)
Read an image file of any supported.
gdImagePtr gdImageCreateFromGd (FILE *inFile)
gdImageCreateFromGd is called to load images from gd format files.
gdImagePtr gdImageCreateFromGd2 (FILE *inFile)
gdImageCreateFromGd2 is called to load images from gd2 format files.
gdImagePtr gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
Reads in a GD2 image via a gdIOCtx struct.
gdImagePtr gdImageCreateFromGd2Part (FILE *inFile,
int srcx,
int srcy,
int w,
int h)
gdImageCreateFromGd2Part is called to load parts of images from gd2 format files.
gdImagePtr gdImageCreateFromGd2PartCtx (gdIOCtx *in,
int srcx,
int srcy,
int w,
int h)
gdImagePtr gdImageCreateFromGd2PartPtr (int size,
void *data,
int srcx,
int srcy,
int w,
int h)
gdImagePtr gdImageCreateFromGd2Ptr (int size,
void *data)
gdImagePtr gdImageCreateFromGdCtx (gdIOCtxPtr in)
Reads in a GD image via a gdIOCtx struct.
gdImagePtr gdImageCreateFromGdPtr (int size,
void *data)
gdImagePtr gdImageCreateFromGif(FILE *fdFile)
gdImageCreateFromGif is called to load images from GIF format files.
gdImagePtr gdImageCreateFromGifCtx(gdIOCtxPtr fd)
See gdImageCreateFromGif.
gdImagePtr gdImageCreateFromGifPtr (int size,
void *data)
gdImagePtr gdImageCreateFromJpeg(FILE *inFile)
See gdImageCreateFromJpegEx.
gdImagePtr gdImageCreateFromJpegCtx(gdIOCtx *infile)
See gdImageCreateFromJpeg.
gdImagePtr gdImageCreateFromJpegCtxEx(gdIOCtx *infile,
int ignore_warning)
See gdImageCreateFromJpeg.
gdImagePtr gdImageCreateFromJpegEx(FILE *inFile,
int ignore_warning)
gdImageCreateFromJpegEx is called to load truecolor images from JPEG format files.
gdImagePtr gdImageCreateFromJpegPtr(int size,
void *data)
gdImagePtr gdImageCreateFromJpegPtrEx(int size,
void *data,
int ignore_warning)
gdImagePtr gdImageCreateFromPng (FILE *inFile)
gdImageCreateFromPng is called to load images from PNG format files.
gdImagePtr gdImageCreateFromPngCtx (gdIOCtx *infile)
See gdImageCreateFromPng.
gdImagePtr gdImageCreateFromPngPtr (int size,
void *data)
See gdImageCreateFromPng.
gdImagePtr gdImageCreateFromPngSource (gdSourcePtr inSource)
See gdImageCreateFromPng for documentation.
gdImagePtr gdImageCreateFromTga(FILE *fp)
Creates a gdImage from a TGA file
gdImagePtr gdImageCreateFromTgaCtx(gdIOCtx *ctx)
Creates a gdImage from a gdIOCtx referencing a TGA binary file.
gdImagePtr gdImageCreateFromTgaPtr(int size,
void *data)
gdImagePtr gdImageCreateFromTiffCtx(gdIOCtx *infile)
Create a gdImage from a TIFF file input from an gdIOCtx.
gdImagePtr gdImageCreateFromTiffPtr(int size,
void *data)
gdImagePtr gdImageCreateFromWBMP(FILE *inFile)
gdImageCreateFromWBMP is called to load images from WBMP format files.
gdImagePtr gdImageCreateFromWBMPCtx(gdIOCtx *infile)
Reads in a WBMP image via a gdIOCtx struct.
gdImagePtr gdImageCreateFromWBMPPtr(int size,
void *data)
gdImagePtr gdImageCreateFromWebp (FILE *inFile)
gdImageCreateFromWebp is called to load truecolor images from WebP format files.
gdImagePtr gdImageCreateFromWebpCtx (gdIOCtx *infile)
See gdImageCreateFromWebp.
gdImagePtr gdImageCreateFromWebpPtr (int size,
void *data)
See gdImageCreateFromWebp.
gdImagePtr gdImageCreateFromXbm(FILE *fd)
gdImageCreateFromXbm is called to load images from X bitmap format files.
gdImagePtr gdImageCreateFromXpm(char *filename)
gdImageCreateFromXbm is called to load images from XPM X Window System color bitmap format files.
gdImagePtr gdImageCreatePaletteFromTrueColor (gdImagePtr im,
int dither,
int colorsWanted)
Creates a new palette image from a truecolor image
gdImagePtr gdImageCreateTrueColor (int sx,
int sy)
gdImageCreateTrueColor is called to create truecolor images, with an essentially unlimited number of colors.
gdImagePtr gdImageCrop(gdImagePtr src,
const gdRect *crop)
Crop an image to a given rectangle
gdImagePtr gdImageCropAuto(gdImagePtr im,
const unsigned int mode)
Crop an image automatically
gdImagePtr gdImageCropThreshold(gdImagePtr im,
const unsigned int color,
const float threshold)
Crop an image using a given color
void gdImageDashedLine (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
void gdImageDestroy (gdImagePtr im)
gdImageDestroy is used to free the memory associated with an image.
int gdImageEdgeDetectQuick(gdImagePtr src)
Edge detection of an image
void gdImageEllipse(gdImagePtr im,
int mx,
int my,
int w,
int h,
int c)
int gdImageEmboss(gdImagePtr im)
Emboss an image
int gdImageFile(gdImagePtr im,
const char *filename)
Writes an image to a file in the format indicated by the filename.
void gdImageFill(gdImagePtr im,
int x,
int y,
int nc)
void gdImageFilledArc (gdImagePtr im,
int cx,
int cy,
int w,
int h,
int s,
int e,
int color,
int style)
void gdImageFilledEllipse (gdImagePtr im,
int mx,
int my,
int w,
int h,
int c)
void gdImageFilledPolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws a filled polygon
void gdImageFilledRectangle (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
void gdImageFillToBorder (gdImagePtr im,
int x,
int y,
int border,
int color)
void gdImageFlipBoth(gdImagePtr im)
Flip an image vertically and horizontally
void gdImageFlipHorizontal(gdImagePtr im)
Flip an image horizontally
void gdImageFlipVertical(gdImagePtr im)
Flip an image vertically
int gdImageGaussianBlur(gdImagePtr im)
gdImageGaussianBlur performs a Gaussian blur of radius 1 on the image.
void gdImageGd (gdImagePtr im,
FILE *outFile)
void gdImageGd2 (gdImagePtr im,
FILE *outFile,
int cs,
int fmt)
void * gdImageGd2Ptr (gdImagePtr im,
int cs,
int fmt,
int *size)
void * gdImageGdPtr (gdImagePtr im,
int *size)
void gdImageGetClip (gdImagePtr im,
int *x1P,
int *y1P,
int *x2P,
int *y2P)
Gets the current clipping rectangle
Whether an image is interlaced.
gdInterpolationMethod gdImageGetInterpolationMethod(gdImagePtr im)
Get the current interpolation method
int gdImageGetPixel (gdImagePtr im,
int x,
int y)
Gets a pixel color as stored in the image.
Gets the transparent color of the image.
int gdImageGetTrueColorPixel (gdImagePtr im,
int x,
int y)
Gets a pixel color always as truecolor value.
void gdImageGif(gdImagePtr im,
FILE *outFile)
gdImageGif outputs the specified image to the specified file in GIF format.
void gdImageGifAnimAdd(gdImagePtr im,
FILE *outFile,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)
This function writes GIF animation frames to GIF animation, which was initialized with gdImageGifAnimBegin.
void gdImageGifAnimAddCtx(gdImagePtr im,
gdIOCtxPtr out,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)
Adds an animation frame via a gdIOCtxPtr.
void * gdImageGifAnimAddPtr(gdImagePtr im,
int *size,
int LocalCM,
int LeftOfs,
int TopOfs,
int Delay,
int Disposal,
gdImagePtr previm)
Like gdImageGifAnimAdd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.
void gdImageGifAnimBegin(gdImagePtr im,
FILE *outFile,
int GlobalCM,
int Loops)
This function must be called as the first function when creating a GIF animation.
void gdImageGifAnimBeginCtx(gdImagePtr im,
gdIOCtxPtr out,
int GlobalCM,
int Loops)
Like gdImageGifAnimBegin except that it outputs to gdIOCtx.
void * gdImageGifAnimBeginPtr(gdImagePtr im,
int *size,
int GlobalCM,
int Loops)
Like gdImageGifAnimBegin except that it outputs to a memory buffer.
void gdImageGifAnimEnd(FILE *outFile)
Terminates the GIF file properly.
void gdImageGifAnimEndCtx(gdIOCtx *out)
Like gdImageGifAnimEnd, but writes its data via a gdIOCtx.
void * gdImageGifAnimEndPtr(int *size)
Like gdImageGifAnimEnd (which contains more information) except that it stores the data to write into memory and returns a pointer to it.
void gdImageGifCtx(gdImagePtr im,
gdIOCtxPtr out)
Writes a GIF image via a gdIOCtx.
void * gdImageGifPtr(gdImagePtr im,
int *size)
Identical to gdImageGif except that it returns a pointer to a memory area with the GIF data.
int gdImageGrayScale(gdImagePtr src)
Convert an image to grayscale
Gets the green component value of a given color.
void gdImageInterlace (gdImagePtr im,
int interlaceArg)
Sets whether an image is interlaced
void gdImageJpeg(gdImagePtr im,
FILE *outFile,
int quality)
gdImageJpeg outputs the specified image to the specified file in JPEG format.
void gdImageJpegCtx(gdImagePtr im,
gdIOCtx *outfile,
int quality)
Write the image as JPEG data via a gdIOCtx.
void * gdImageJpegPtr(gdImagePtr im,
int *size,
int quality)
Identical to gdImageJpeg except that it returns a pointer to a memory area with the JPEG data.
void gdImageLine (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
Bresenham as presented in Foley & Van Dam.
int gdImageMeanRemoval(gdImagePtr im)
Mean removal of an image
int gdImageNegate(gdImagePtr src)
Invert an image
gdImagePtr gdImageNeuQuant(gdImagePtr im,
const int max_color,
int sample_factor)
Creates a new palette image from a truecolor image
void gdImageOpenPolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws an open polygon
void gdImagePaletteCopy (gdImagePtr to,
gdImagePtr from)
Gets the color of a pixel.
int gdImagePaletteToTrueColor(gdImagePtr src)
Convert a palette image to true color
int gdImagePixelate(gdImagePtr im,
int block_size,
const unsigned int mode)
void gdImagePng (gdImagePtr im,
FILE *outFile)
Equivalent to calling gdImagePngEx with compression of -1.
void gdImagePngCtx (gdImagePtr im,
gdIOCtx *outfile)
Equivalent to calling gdImagePngCtxEx with compression of -1.
void gdImagePngCtxEx (gdImagePtr im,
gdIOCtx *outfile,
int level)
Outputs the given image as PNG data, but using a gdIOCtx instead of a file.
void gdImagePngEx (gdImagePtr im,
FILE *outFile,
int level)
gdImagePngEx outputs the specified image to the specified file in PNG format.
void * gdImagePngPtr (gdImagePtr im,
int *size)
Equivalent to calling gdImagePngPtrEx with compression of -1.
void * gdImagePngPtrEx (gdImagePtr im,
int *size,
int level)
Identical to gdImagePngEx except that it returns a pointer to a memory area with the PNG data.
void gdImagePngToSink (gdImagePtr im,
gdSinkPtr outSink)
void gdImagePolygon (gdImagePtr im,
gdPointPtr p,
int n,
int c)
Draws a closed polygon
The data structure in which gd stores images.
void gdImageRectangle (gdImagePtr im,
int x1,
int y1,
int x2,
int y2,
int color)
Draws a rectangle.
Gets the red component value of a given color.
Gets the horizontal resolution in DPI.
Gets the vertical resolution in DPI.
gdImagePtr gdImageRotateInterpolated(const gdImagePtr src,
const float angle,
int bgcolor)
Rotate an image
void gdImageSaveAlpha (gdImagePtr im,
int saveAlphaArg)
Sets the save alpha flag
gdImagePtr gdImageScale(const gdImagePtr src,
const unsigned int new_width,
const unsigned int new_height)
Scale an image
int gdImageScatter(gdImagePtr im,
int sub,
int plus)
int gdImageScatterColor(gdImagePtr im,
int sub,
int plus,
int colors[],
unsigned int num_colors)
int gdImageScatterEx(gdImagePtr im,
gdScatterPtr scatter)
int gdImageSelectiveBlur(gdImagePtr src)
void gdImageSetAntiAliased (gdImagePtr im,
int c)
Set the color for subsequent anti-aliased drawing
void gdImageSetAntiAliasedDontBlend (gdImagePtr im,
int c,
int dont_blend)
Set the color and “dont_blend” color for subsequent anti-aliased drawing
void gdImageSetBrush (gdImagePtr im,
gdImagePtr brush)
Sets the brush for following drawing operations
void gdImageSetClip (gdImagePtr im,
int x1,
int y1,
int x2,
int y2)
Sets the clipping rectangle
int gdImageSetInterpolationMethod(gdImagePtr im,
gdInterpolationMethod id)
Set the interpolation method for subsequent operations
void gdImageSetPixel (gdImagePtr im,
int x,
int y,
int color)
void gdImageSetResolution(gdImagePtr im,
const unsigned int res_x,
const unsigned int res_y)
Sets the resolution of an image.
void gdImageSetStyle (gdImagePtr im,
int *style,
int noOfPixels)
Sets the style for following drawing operations
void gdImageSetThickness (gdImagePtr im,
int thickness)
Sets the thickness for following drawing operations
void gdImageSetTile (gdImagePtr im,
gdImagePtr tile)
void gdImageSharpen (gdImagePtr im,
int pct)
Sharpen an image.
int gdImageSmooth(gdImagePtr im,
float weight)
Smooth an image
gdImagePtr gdImageSquareToCircle (gdImagePtr im,
int radius)
Apply polar coordinate transformation to an image.
void gdImageString (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
Draws a character string.
void gdImageString16 (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned short *s,
int color)
char * gdImageStringFT (gdImage *im,
int *brect,
int fg,
char *fontlist,
double ptsize,
double angle,
int x,
int y,
char *string)
Render an UTF-8 string onto a gd image.
char* gdImageStringFTCircle (gdImagePtr im,
int cx,
int cy,
double radius,
double textRadius,
double fillPortion,
char *font,
double points,
char *top,
char *bottom,
int fgcolor)
Draw text curved along the top and bottom of a circular area of an image.
gdImageStringFTEx extends the capabilities of gdImageStringFT by providing a way to pass additional parameters.
char * gdImageStringTTF (gdImage *im,
int *brect,
int fg,
char *fontlist,
double ptsize,
double angle,
int x,
int y,
char *string)
Alias of gdImageStringFT.
void gdImageStringUp (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned char *s,
int color)
void gdImageStringUp16 (gdImagePtr im,
gdFontPtr f,
int x,
int y,
unsigned short *s,
int color)
Gets the width (in pixels) of an image.
Gets the height (in pixels) of an image.
void gdImageTiff(gdImagePtr im,
FILE *outFile)
void gdImageTiffCtx(gdImagePtr image,
gdIOCtx *out)
Write the gd image as a tiff file.
void * gdImageTiffPtr(gdImagePtr im,
int *size)
Whether an image is a truecolor image.
Gets the color of a pixel.
int gdImageTrueColorToPalette (gdImagePtr im,
int dither,
int colorsWanted)
Converts a truecolor image to a palette image
int gdImageTrueColorToPaletteSetMethod (gdImagePtr im,
int method,
int speed)
Selects the quantization method
void gdImageTrueColorToPaletteSetQuality (gdImagePtr im,
int min_quality,
int max_quality)
Chooses a quality range for quantization
void gdImageWBMP(gdImagePtr im,
int fg,
FILE *outFile)
void gdImageWBMPCtx(gdImagePtr image,
int fg,
gdIOCtx *out)
Write the image as a wbmp file
void * gdImageWBMPPtr(gdImagePtr im,
int *size,
int fg)
void gdImageWebp (gdImagePtr im,
FILE *outFile)
Variant of gdImageWebpEx which uses the default quality (-1).
void gdImageWebpCtx (gdImagePtr im,
gdIOCtx *outfile,
int quality)
Write the image as WebP data via a gdIOCtx.
void gdImageWebpEx (gdImagePtr im,
FILE *outFile,
int quality)
gdImageWebpEx outputs the specified image to the specified file in WebP format.
void * gdImageWebpPtr (gdImagePtr im,
int *size)
See gdImageWebpEx.
void * gdImageWebpPtrEx (gdImagePtr im,
int *size,
int quality)
See gdImageWebpEx.
void gdImageXbmCtx(gdImagePtr image,
char *file_name,
int fg,
gdIOCtx *out)
Writes an image to an IO context in X11 bitmap format.
gdIOCtx structures hold function pointers for doing image IO.
int gdLayerMultiply (int dst,
int src)
Overlay two colors with multiply effect
int gdLayerOverlay (int dst,
int src)
Overlay two colors
int gdMajorVersion()
int gdMinorVersion()
gdIOCtx * gdNewDynamicCtx(int initialSize,
void *data)
Return data as a dynamic pointer.
gdIOCtx * gdNewDynamicCtxEx(int initialSize,
void *data,
int freeOKFlag)
gdIOCtx * gdNewFileCtx(FILE *f)
Return data as a dynamic pointer.
gdIOCtx * gdNewSSCtx(gdSourcePtr src,
gdSinkPtr snk)
Return data as a dynamic pointer.
Defines a point in a 2D coordinate system using floating point values.
Pointer to a gdPointF
Represents a point in the coordinate space of the image; used by gdImagePolygon, gdImageOpenPolygon and gdImageFilledPolygon for polygon drawing.
A rectangle in the coordinate space of the image
A pointer to a gdRect
int gdReleaseVersion()
void gdSetErrorMethod(gdErrorMethod error_method)
Note: This interface is obsolete and kept only for compatibility.
Note: This interface is obsolete and kept only for *compatibility.
use the current style, see gdImageSetStyle
use the current style and brush
int gdSupportsFileType(const char *filename,
int writing)
Tests if a given file type is supported by GD.
use the current tile, see gdImageSetTile
int gdTransformAffineBoundingBox(gdRectPtr src,
const double affine[6],
gdRectPtr bbox)
Returns the bounding box of an affine transformation applied to a rectangular area gdRect
int gdTransformAffineCopy(gdImagePtr dst,
int dst_x,
int dst_y,
const gdImagePtr src,
gdRectPtr src_region,
const double affine[6])
Applies an affine transformation to a region and copy the result in a destination to the given position.
int gdTransformAffineGetImage(gdImagePtr *dst,
const gdImagePtr src,
gdRectPtr src_area,
const double affine[6])
Applies an affine transformation to a region and return an image containing the complete transformation.
indicate transparency, what is not the same as the transparent color index; used for lines only
Compose a truecolor value from its components
Gets the alpha channel value
Gets the blue channel value
Gets the green channel value
Gets the red channel value
const char * gdVersionString()
A very large ISO-8859-2 raster font (9x15 pixels).
Read GIF images.
Write GIF images.
Legal values for Disposal.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General3.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General3.html new file mode 100644 index 00000000000..c627ff0107e --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General3.html @@ -0,0 +1,70 @@ + + +Index + + + + + + + + + +
Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
I
 Image Comparison
 Image Filters
 Interpolation Method
J
 JPEG IO
L
 Large Font
 License
M
 Matrix
 Medium Bold Font
O
 other
P
 Pixels
 PNG IO
 Polygons
 Primitives
S
 Small Font
 Special Colors
T
 TGA Input
 TIFF IO
 Tiny Font
 Transform
 Transformations
 Types
W
 WBMP IO
 WebP IO
X
 XBM IO
 XPM Input
+ + + + + +
Read and write JPEG images.
+ + + +
A large ISO-8859-2 raster font (8x16 pixels).
In order to resolve any possible confusion regarding the authorship of gd, the following copyright statement covers all of the authors who have required such a statement.
+ + + +
Group: Affine Matrix
A medium bold ISO-8859-2 raster font (7x13 pixels).
+ + + + + + + +
Read and write PNG images.
+ + + +
A small ISO-8859-2 raster font (7x13 pixels).
+ + + +
Read TGA images.
Read and write TIFF images.
A very small ISO-8859-2 raster font (5x8 pixels).
+ + + +
Read and write WBMP images.
Read and write WebP images.
+ + + +
Read and write XBM images.
Read XPM images.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Macros.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Macros.html new file mode 100644 index 00000000000..ada5078fa5e --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Macros.html @@ -0,0 +1,34 @@ + + +Macro Index + + + + + + + + + +
Macro Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 gdImageAlpha
 gdImageBlue
 gdImageColorsTotal
 gdImageGetInterlaced
 gdImageGetTransparent
 gdImageGreen
 gdImagePalettePixel
 gdImageRed
 gdImageResolutionX
 gdImageResolutionY
 gdImageSX
 gdImageSY
 gdImageTrueColor
 gdImageTrueColorPixel
 gdTrueColorAlpha
 gdTrueColorGetAlpha
 gdTrueColorGetBlue
 gdTrueColorGetGreen
 gdTrueColorGetRed
+ +
Gets the alpha component value of a given color.
Gets the blue component value of a given color.
Gets the number of colors in the palette.
Whether an image is interlaced.
Gets the transparent color of the image.
Gets the green component value of a given color.
Gets the color of a pixel.
Gets the red component value of a given color.
Gets the horizontal resolution in DPI.
Gets the vertical resolution in DPI.
Gets the width (in pixels) of an image.
Gets the height (in pixels) of an image.
Whether an image is a truecolor image.
Gets the color of a pixel.
Compose a truecolor value from its components
Gets the alpha channel value
Gets the blue channel value
Gets the green channel value
Gets the red channel value
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Types.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Types.html new file mode 100644 index 00000000000..96efb6765be --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Types.html @@ -0,0 +1,34 @@ + + +Type Index + + + + + + + + + +
Type Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
G
 gdFont
 gdFontPtr
 gdFTStringExtra
 gdFTStringExtraPtr
 gdImage
 gdImagePtr
 gdIOCtx
 gdPaletteQuantizationMethod
 gdPoint
 gdPointF
 gdPointFPtr
 gdPointPtr
 gdRect
 gdRectPtr
 gdSink
 gdSinkPtr
 gdSource
 gdSourcePtr
+ +
A font structure, containing the bitmaps of all characters in a font.
A structure and associated pointer type used to pass additional parameters to the gdImageStringFTEx function.
The data structure in which gd stores images.
gdIOCtx structures hold function pointers for doing image IO.
Defines a point in a 2D coordinate system using floating point values.
Pointer to a gdPointF
Represents a point in the coordinate space of the image; used by gdImagePolygon, gdImageOpenPolygon and gdImageFilledPolygon for polygon drawing.
A rectangle in the coordinate space of the image
A pointer to a gdRect
Note: This interface is obsolete and kept only for compatibility.
Note: This interface is obsolete and kept only for *compatibility.
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/main.js b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/main.js new file mode 100644 index 00000000000..3f42acde648 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/main.js @@ -0,0 +1,841 @@ +// This file is part of Natural Docs, which is Copyright © 2003-2010 Greg Valure +// Natural Docs is licensed under version 3 of the GNU Affero General Public License (AGPL) +// Refer to License.txt for the complete details + +// This file may be distributed with documentation files generated by Natural Docs. +// Such documentation is not covered by Natural Docs' copyright and licensing, +// and may have its own copyright and distribution terms as decided by its author. + + +// +// Browser Styles +// ____________________________________________________________________________ + +var agt=navigator.userAgent.toLowerCase(); +var browserType; +var browserVer; + +if (agt.indexOf("opera") != -1) + { + browserType = "Opera"; + + if (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1) + { browserVer = "Opera7"; } + else if (agt.indexOf("opera 8") != -1 || agt.indexOf("opera/8") != -1) + { browserVer = "Opera8"; } + else if (agt.indexOf("opera 9") != -1 || agt.indexOf("opera/9") != -1) + { browserVer = "Opera9"; } + } + +else if (agt.indexOf("applewebkit") != -1) + { + browserType = "Safari"; + + if (agt.indexOf("version/3") != -1) + { browserVer = "Safari3"; } + else if (agt.indexOf("safari/4") != -1) + { browserVer = "Safari2"; } + } + +else if (agt.indexOf("khtml") != -1) + { + browserType = "Konqueror"; + } + +else if (agt.indexOf("msie") != -1) + { + browserType = "IE"; + + if (agt.indexOf("msie 6") != -1) + { browserVer = "IE6"; } + else if (agt.indexOf("msie 7") != -1) + { browserVer = "IE7"; } + } + +else if (agt.indexOf("gecko") != -1) + { + browserType = "Firefox"; + + if (agt.indexOf("rv:1.7") != -1) + { browserVer = "Firefox1"; } + else if (agt.indexOf("rv:1.8)") != -1 || agt.indexOf("rv:1.8.0") != -1) + { browserVer = "Firefox15"; } + else if (agt.indexOf("rv:1.8.1") != -1) + { browserVer = "Firefox2"; } + } + + +// +// Support Functions +// ____________________________________________________________________________ + + +function GetXPosition(item) + { + var position = 0; + + if (item.offsetWidth != null) + { + while (item != document.body && item != null) + { + position += item.offsetLeft; + item = item.offsetParent; + }; + }; + + return position; + }; + + +function GetYPosition(item) + { + var position = 0; + + if (item.offsetWidth != null) + { + while (item != document.body && item != null) + { + position += item.offsetTop; + item = item.offsetParent; + }; + }; + + return position; + }; + + +function MoveToPosition(item, x, y) + { + // Opera 5 chokes on the px extension, so it can use the Microsoft one instead. + + if (item.style.left != null) + { + item.style.left = x + "px"; + item.style.top = y + "px"; + } + else if (item.style.pixelLeft != null) + { + item.style.pixelLeft = x; + item.style.pixelTop = y; + }; + }; + + +// +// Menu +// ____________________________________________________________________________ + + +function ToggleMenu(id) + { + if (!window.document.getElementById) + { return; }; + + var display = window.document.getElementById(id).style.display; + + if (display == "none") + { display = "block"; } + else + { display = "none"; } + + window.document.getElementById(id).style.display = display; + } + +function HideAllBut(ids, max) + { + if (document.getElementById) + { + ids.sort( function(a,b) { return a - b; } ); + var number = 1; + + while (number < max) + { + if (ids.length > 0 && number == ids[0]) + { ids.shift(); } + else + { + document.getElementById("MGroupContent" + number).style.display = "none"; + }; + + number++; + }; + }; + } + + +// +// Tooltips +// ____________________________________________________________________________ + + +var tooltipTimer = 0; + +function ShowTip(event, tooltipID, linkID) + { + if (tooltipTimer) + { clearTimeout(tooltipTimer); }; + + var docX = event.clientX + window.pageXOffset; + var docY = event.clientY + window.pageYOffset; + + var showCommand = "ReallyShowTip('" + tooltipID + "', '" + linkID + "', " + docX + ", " + docY + ")"; + + tooltipTimer = setTimeout(showCommand, 1000); + } + +function ReallyShowTip(tooltipID, linkID, docX, docY) + { + tooltipTimer = 0; + + var tooltip; + var link; + + if (document.getElementById) + { + tooltip = document.getElementById(tooltipID); + link = document.getElementById(linkID); + } +/* else if (document.all) + { + tooltip = eval("document.all['" + tooltipID + "']"); + link = eval("document.all['" + linkID + "']"); + } +*/ + if (tooltip) + { + var left = GetXPosition(link); + var top = GetYPosition(link); + top += link.offsetHeight; + + + // The fallback method is to use the mouse X and Y relative to the document. We use a separate if and test if its a number + // in case some browser snuck through the above if statement but didn't support everything. + + if (!isFinite(top) || top == 0) + { + left = docX; + top = docY; + } + + // Some spacing to get it out from under the cursor. + + top += 10; + + // Make sure the tooltip doesnt get smushed by being too close to the edge, or in some browsers, go off the edge of the + // page. We do it here because Konqueror does get offsetWidth right even if it doesnt get the positioning right. + + if (tooltip.offsetWidth != null) + { + var width = tooltip.offsetWidth; + var docWidth = document.body.clientWidth; + + if (left + width > docWidth) + { left = docWidth - width - 1; } + + // If there's a horizontal scroll bar we could go past zero because it's using the page width, not the window width. + if (left < 0) + { left = 0; }; + } + + MoveToPosition(tooltip, left, top); + tooltip.style.visibility = "visible"; + } + } + +function HideTip(tooltipID) + { + if (tooltipTimer) + { + clearTimeout(tooltipTimer); + tooltipTimer = 0; + } + + var tooltip; + + if (document.getElementById) + { tooltip = document.getElementById(tooltipID); } + else if (document.all) + { tooltip = eval("document.all['" + tooltipID + "']"); } + + if (tooltip) + { tooltip.style.visibility = "hidden"; } + } + + +// +// Blockquote fix for IE +// ____________________________________________________________________________ + + +function NDOnLoad() + { + if (browserVer == "IE6") + { + var scrollboxes = document.getElementsByTagName('blockquote'); + + if (scrollboxes.item(0)) + { + NDDoResize(); + window.onresize=NDOnResize; + }; + }; + }; + + +var resizeTimer = 0; + +function NDOnResize() + { + if (resizeTimer != 0) + { clearTimeout(resizeTimer); }; + + resizeTimer = setTimeout(NDDoResize, 250); + }; + + +function NDDoResize() + { + var scrollboxes = document.getElementsByTagName('blockquote'); + + var i; + var item; + + i = 0; + while (item = scrollboxes.item(i)) + { + item.style.width = 100; + i++; + }; + + i = 0; + while (item = scrollboxes.item(i)) + { + item.style.width = item.parentNode.offsetWidth; + i++; + }; + + clearTimeout(resizeTimer); + resizeTimer = 0; + } + + + +/* ________________________________________________________________________________________________________ + + Class: SearchPanel + ________________________________________________________________________________________________________ + + A class handling everything associated with the search panel. + + Parameters: + + name - The name of the global variable that will be storing this instance. Is needed to be able to set timeouts. + mode - The mode the search is going to work in. Pass CommandLineOption()>, so the + value will be something like "HTML" or "FramedHTML". + + ________________________________________________________________________________________________________ +*/ + + +function SearchPanel(name, mode, resultsPath) + { + if (!name || !mode || !resultsPath) + { alert("Incorrect parameters to SearchPanel."); }; + + + // Group: Variables + // ________________________________________________________________________ + + /* + var: name + The name of the global variable that will be storing this instance of the class. + */ + this.name = name; + + /* + var: mode + The mode the search is going to work in, such as "HTML" or "FramedHTML". + */ + this.mode = mode; + + /* + var: resultsPath + The relative path from the current HTML page to the results page directory. + */ + this.resultsPath = resultsPath; + + /* + var: keyTimeout + The timeout used between a keystroke and when a search is performed. + */ + this.keyTimeout = 0; + + /* + var: keyTimeoutLength + The length of in thousandths of a second. + */ + this.keyTimeoutLength = 500; + + /* + var: lastSearchValue + The last search string executed, or an empty string if none. + */ + this.lastSearchValue = ""; + + /* + var: lastResultsPage + The last results page. The value is only relevant if is set. + */ + this.lastResultsPage = ""; + + /* + var: deactivateTimeout + + The timeout used between when a control is deactivated and when the entire panel is deactivated. Is necessary + because a control may be deactivated in favor of another control in the same panel, in which case it should stay + active. + */ + this.deactivateTimout = 0; + + /* + var: deactivateTimeoutLength + The length of in thousandths of a second. + */ + this.deactivateTimeoutLength = 200; + + + + + // Group: DOM Elements + // ________________________________________________________________________ + + + // Function: DOMSearchField + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); }; + + // Function: DOMSearchType + this.DOMSearchType = function() + { return document.getElementById("MSearchType"); }; + + // Function: DOMPopupSearchResults + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); }; + + // Function: DOMPopupSearchResultsWindow + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); }; + + // Function: DOMSearchPanel + this.DOMSearchPanel = function() + { return document.getElementById("MSearchPanel"); }; + + + + + // Group: Event Handlers + // ________________________________________________________________________ + + + /* + Function: OnSearchFieldFocus + Called when focus is added or removed from the search field. + */ + this.OnSearchFieldFocus = function(isActive) + { + this.Activate(isActive); + }; + + + /* + Function: OnSearchFieldChange + Called when the content of the search field is changed. + */ + this.OnSearchFieldChange = function() + { + if (this.keyTimeout) + { + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + }; + + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != this.lastSearchValue) + { + if (searchValue != "") + { + this.keyTimeout = setTimeout(this.name + ".Search()", this.keyTimeoutLength); + } + else + { + if (this.mode == "HTML") + { this.DOMPopupSearchResultsWindow().style.display = "none"; }; + this.lastSearchValue = ""; + }; + }; + }; + + + /* + Function: OnSearchTypeFocus + Called when focus is added or removed from the search type. + */ + this.OnSearchTypeFocus = function(isActive) + { + this.Activate(isActive); + }; + + + /* + Function: OnSearchTypeChange + Called when the search type is changed. + */ + this.OnSearchTypeChange = function() + { + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != "") + { + this.Search(); + }; + }; + + + + // Group: Action Functions + // ________________________________________________________________________ + + + /* + Function: CloseResultsWindow + Closes the results window. + */ + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = "none"; + this.Activate(false, true); + }; + + + /* + Function: Search + Performs a search. + */ + this.Search = function() + { + this.keyTimeout = 0; + + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + var searchTopic = this.DOMSearchType().value; + + var pageExtension = searchValue.substr(0,1); + + if (pageExtension.match(/^[a-z]/i)) + { pageExtension = pageExtension.toUpperCase(); } + else if (pageExtension.match(/^[0-9]/)) + { pageExtension = 'Numbers'; } + else + { pageExtension = "Symbols"; }; + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + // indexSectionsWithContent is defined in searchdata.js + if (indexSectionsWithContent[searchTopic][pageExtension] == true) + { + resultsPage = this.resultsPath + '/' + searchTopic + pageExtension + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else + { + resultsPage = this.resultsPath + '/NoResults.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + }; + + var resultsFrame; + if (this.mode == "HTML") + { resultsFrame = window.frames.MSearchResults; } + else if (this.mode == "FramedHTML") + { resultsFrame = window.top.frames['Content']; }; + + + if (resultsPage != this.lastResultsPage || + + // Bug in IE. If everything becomes hidden in a run, none of them will be able to be reshown in the next for some + // reason. It counts the right number of results, and you can even read the display as "block" after setting it, but it + // just doesn't work in IE 6 or IE 7. So if we're on the right page but the previous search had no results, reload the + // page anyway to get around the bug. + (browserType == "IE" && hasResultsPage && + (!resultsFrame.searchResults || resultsFrame.searchResults.lastMatchCount == 0)) ) + + { + resultsFrame.location.href = resultsPageWithSearch; + } + + // So if the results page is right and there's no IE bug, reperform the search on the existing page. We have to check if there + // are results because NoResults.html doesn't have any JavaScript, and it would be useless to do anything on that page even + // if it did. + else if (hasResultsPage) + { + // We need to check if this exists in case the frame is present but didn't finish loading. + if (resultsFrame.searchResults) + { resultsFrame.searchResults.Search(searchValue); } + + // Otherwise just reload instead of waiting. + else + { resultsFrame.location.href = resultsPageWithSearch; }; + }; + + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (this.mode == "HTML" && domPopupSearchResultsWindow.style.display != "block") + { + var domSearchType = this.DOMSearchType(); + + var left = GetXPosition(domSearchType); + var top = GetYPosition(domSearchType) + domSearchType.offsetHeight; + + MoveToPosition(domPopupSearchResultsWindow, left, top); + domPopupSearchResultsWindow.style.display = 'block'; + }; + + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + }; + + + + // Group: Activation Functions + // Functions that handle whether the entire panel is active or not. + // ________________________________________________________________________ + + + /* + Function: Activate + + Activates or deactivates the search panel, resetting things to their default values if necessary. You can call this on every + control's OnBlur() and it will handle not deactivating the entire panel when focus is just switching between them transparently. + + Parameters: + + isActive - Whether you're activating or deactivating the panel. + ignoreDeactivateDelay - Set if you're positive the action will deactivate the panel and thus want to skip the delay. + */ + this.Activate = function(isActive, ignoreDeactivateDelay) + { + // We want to ignore isActive being false while the results window is open. + if (isActive || (this.mode == "HTML" && this.DOMPopupSearchResultsWindow().style.display == "block")) + { + if (this.inactivateTimeout) + { + clearTimeout(this.inactivateTimeout); + this.inactivateTimeout = 0; + }; + + this.DOMSearchPanel().className = 'MSearchPanelActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == 'Search') + { searchField.value = ""; } + } + else if (!ignoreDeactivateDelay) + { + this.inactivateTimeout = setTimeout(this.name + ".InactivateAfterTimeout()", this.inactivateTimeoutLength); + } + else + { + this.InactivateAfterTimeout(); + }; + }; + + + /* + Function: InactivateAfterTimeout + + Called by , which is set by . Inactivation occurs on a timeout because a control may + receive OnBlur() when focus is really transferring to another control in the search panel. In this case we don't want to + actually deactivate the panel because not only would that cause a visible flicker but it could also reset the search value. + So by doing it on a timeout instead, there's a short period where the second control's OnFocus() can cancel the deactivation. + */ + this.InactivateAfterTimeout = function() + { + this.inactivateTimeout = 0; + + this.DOMSearchPanel().className = 'MSearchPanelInactive'; + this.DOMSearchField().value = "Search"; + + this.lastSearchValue = ""; + this.lastResultsPage = ""; + }; + }; + + + + +/* ________________________________________________________________________________________________________ + + Class: SearchResults + _________________________________________________________________________________________________________ + + The class that handles everything on the search results page. + _________________________________________________________________________________________________________ +*/ + + +function SearchResults(name, mode) + { + /* + var: mode + The mode the search is going to work in, such as "HTML" or "FramedHTML". + */ + this.mode = mode; + + /* + var: lastMatchCount + The number of matches from the last run of . + */ + this.lastMatchCount = 0; + + + /* + Function: Toggle + Toggles the visibility of the passed element ID. + */ + this.Toggle = function(id) + { + if (this.mode == "FramedHTML") + { return; }; + + var parentElement = document.getElementById(id); + + var element = parentElement.firstChild; + + while (element && element != parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'ISubIndex') + { + if (element.style.display == 'block') + { element.style.display = "none"; } + else + { element.style.display = 'block'; } + }; + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { element = element.firstChild; } + else if (element.nextSibling) + { element = element.nextSibling; } + else + { + do + { + element = element.parentNode; + } + while (element && element != parentElement && !element.nextSibling); + + if (element && element != parentElement) + { element = element.nextSibling; }; + }; + }; + }; + + + /* + Function: Search + + Searches for the passed string. If there is no parameter, it takes it from the URL query. + + Always returns true, since other documents may try to call it and that may or may not be possible. + */ + this.Search = function(search) + { + if (!search) + { + search = window.location.search; + search = search.substring(1); // Remove the leading ? + search = unescape(search); + }; + + search = search.replace(/^ +/, ""); + search = search.replace(/ +$/, ""); + search = search.toLowerCase(); + + if (search.match(/[^a-z0-9]/)) // Just a little speedup so it doesn't have to go through the below unnecessarily. + { + search = search.replace(/\_/g, "_und"); + search = search.replace(/\ +/gi, "_spc"); + search = search.replace(/\~/g, "_til"); + search = search.replace(/\!/g, "_exc"); + search = search.replace(/\@/g, "_att"); + search = search.replace(/\#/g, "_num"); + search = search.replace(/\$/g, "_dol"); + search = search.replace(/\%/g, "_pct"); + search = search.replace(/\^/g, "_car"); + search = search.replace(/\&/g, "_amp"); + search = search.replace(/\*/g, "_ast"); + search = search.replace(/\(/g, "_lpa"); + search = search.replace(/\)/g, "_rpa"); + search = search.replace(/\-/g, "_min"); + search = search.replace(/\+/g, "_plu"); + search = search.replace(/\=/g, "_equ"); + search = search.replace(/\{/g, "_lbc"); + search = search.replace(/\}/g, "_rbc"); + search = search.replace(/\[/g, "_lbk"); + search = search.replace(/\]/g, "_rbk"); + search = search.replace(/\:/g, "_col"); + search = search.replace(/\;/g, "_sco"); + search = search.replace(/\"/g, "_quo"); + search = search.replace(/\'/g, "_apo"); + search = search.replace(/\/g, "_ran"); + search = search.replace(/\,/g, "_com"); + search = search.replace(/\./g, "_per"); + search = search.replace(/\?/g, "_que"); + search = search.replace(/\//g, "_sla"); + search = search.replace(/[^a-z0-9\_]i/gi, "_zzz"); + }; + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); + + if (search.length <= rowMatchName.length && rowMatchName.substr(0, search.length) == search) + { + row.style.display = "block"; + matches++; + } + else + { row.style.display = "none"; }; + }; + + i++; + }; + + document.getElementById("Searching").style.display="none"; + + if (matches == 0) + { document.getElementById("NoMatches").style.display="block"; } + else + { document.getElementById("NoMatches").style.display="none"; } + + this.lastMatchCount = matches; + + return true; + }; + }; + diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/prettify.js b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/prettify.js new file mode 100644 index 00000000000..fda4bf1eda7 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/prettify.js @@ -0,0 +1,1526 @@ + +// This code comes from the December 2009 release of Google Prettify, which is Copyright © 2006 Google Inc. +// Minor modifications are marked with "ND Change" comments. +// As part of Natural Docs, this code is licensed under version 3 of the GNU Affero General Public License (AGPL.) +// However, it may also be obtained separately under version 2.0 of the Apache License. +// Refer to License.txt for the complete details + + +// Main code +// ____________________________________________________________________________ + +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * some functions for browser-side pretty printing of code contained in html. + *

+ * + * For a fairly comprehensive set of languages see the + * README + * file that came with this source. At a minimum, the lexer should work on a + * number of languages including C and friends, Java, Python, Bash, SQL, HTML, + * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk + * and a subset of Perl, but, because of commenting conventions, doesn't work on + * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. + *

+ * Usage:

    + *
  1. include this source file in an html page via + * {@code } + *
  2. define style rules. See the example page for examples. + *
  3. mark the {@code
    } and {@code } tags in your source with
    + *    {@code class=prettyprint.}
    + *    You can also use the (html deprecated) {@code } tag, but the pretty
    + *    printer needs to do more substantial DOM manipulations to support that, so
    + *    some css styles may not be preserved.
    + * </ol>
    + * That's it.  I wanted to keep the API as simple as possible, so there's no
    + * need to specify which language the code is in, but if you wish, you can add
    + * another class to the {@code <pre>} or {@code <code>} element to specify the
    + * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
    + * starts with "lang-" followed by a file extension, specifies the file type.
    + * See the "lang-*.js" files in this directory for code that implements
    + * per-language file handlers.
    + * <p>
    + * Change log:<br>
    + * cbeust, 2006/08/22
    + * <blockquote>
    + *   Java annotations (start with "@") are now captured as literals ("lit")
    + * </blockquote>
    + * @requires console
    + * @overrides window
    + */
    +
    +// JSLint declarations
    +/*global console, document, navigator, setTimeout, window */
    +
    +/**
    + * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
    + * UI events.
    + * If set to {@code false}, {@code prettyPrint()} is synchronous.
    + */
    +window['PR_SHOULD_USE_CONTINUATION'] = true;
    +
    +/** the number of characters between tab columns */
    +window['PR_TAB_WIDTH'] = 8;
    +
    +/** Walks the DOM returning a properly escaped version of innerHTML.
    +  * @param {Node} node
    +  * @param {Array.<string>} out output buffer that receives chunks of HTML.
    +  */
    +window['PR_normalizedHtml']
    +
    +/** Contains functions for creating and registering new language handlers.
    +  * @type {Object}
    +  */
    +  = window['PR']
    +
    +/** Pretty print a chunk of code.
    +  *
    +  * @param {string} sourceCodeHtml code as html
    +  * @return {string} code as html, but prettier
    +  */
    +  = window['prettyPrintOne']
    +/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
    +  * {@code class=prettyprint} and prettify them.
    +  * @param {Function?} opt_whenDone if specified, called when the last entry
    +  *     has been finished.
    +  */
    +  = window['prettyPrint'] = void 0;
    +
    +/** browser detection. @extern @returns false if not IE, otherwise the major version. */
    +window['_pr_isIE6'] = function () {
    +  var ieVersion = navigator && navigator.userAgent &&
    +      navigator.userAgent.match(/\bMSIE ([678])\./);
    +  ieVersion = ieVersion ? +ieVersion[1] : false;
    +  window['_pr_isIE6'] = function () { return ieVersion; };
    +  return ieVersion;
    +};
    +
    +
    +(function () {
    +  // Keyword lists for various languages.
    +  var FLOW_CONTROL_KEYWORDS =
    +      "break continue do else for if return while ";
    +  var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
    +      "double enum extern float goto int long register short signed sizeof " +
    +      "static struct switch typedef union unsigned void volatile ";
    +  var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
    +      "new operator private protected public this throw true try typeof ";
    +  var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
    +      "concept concept_map const_cast constexpr decltype " +
    +      "dynamic_cast explicit export friend inline late_check " +
    +      "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
    +      "template typeid typename using virtual wchar_t where ";
    +  var JAVA_KEYWORDS = COMMON_KEYWORDS +
    +      "abstract boolean byte extends final finally implements import " +
    +      "instanceof null native package strictfp super synchronized throws " +
    +      "transient ";
    +  var CSHARP_KEYWORDS = JAVA_KEYWORDS +
    +      "as base by checked decimal delegate descending event " +
    +      "fixed foreach from group implicit in interface internal into is lock " +
    +      "object out override orderby params partial readonly ref sbyte sealed " +
    +      "stackalloc string select uint ulong unchecked unsafe ushort var ";
    +  var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
    +      "debugger eval export function get null set undefined var with " +
    +      "Infinity NaN ";
    +  var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
    +      "goto if import last local my next no our print package redo require " +
    +      "sub undef unless until use wantarray while BEGIN END ";
    +  var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
    +      "elif except exec finally from global import in is lambda " +
    +      "nonlocal not or pass print raise try with yield " +
    +      "False True None ";
    +  var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
    +      " defined elsif end ensure false in module next nil not or redo rescue " +
    +      "retry self super then true undef unless until when yield BEGIN END ";
    +  var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
    +      "function in local set then until ";
    +  var ALL_KEYWORDS = (
    +      CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
    +      PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
    +
    +  // token style names.  correspond to css classes
    +  /** token style for a string literal */
    +  var PR_STRING = 'str';
    +  /** token style for a keyword */
    +  var PR_KEYWORD = 'kwd';
    +  /** token style for a comment */
    +  var PR_COMMENT = 'com';
    +  /** token style for a type */
    +  var PR_TYPE = 'typ';
    +  /** token style for a literal value.  e.g. 1, null, true. */
    +  var PR_LITERAL = 'lit';
    +  /** token style for a punctuation string. */
    +  var PR_PUNCTUATION = 'pun';
    +  /** token style for a punctuation string. */
    +  var PR_PLAIN = 'pln';
    +
    +  /** token style for an sgml tag. */
    +  var PR_TAG = 'tag';
    +  /** token style for a markup declaration such as a DOCTYPE. */
    +  var PR_DECLARATION = 'dec';
    +  /** token style for embedded source. */
    +  var PR_SOURCE = 'src';
    +  /** token style for an sgml attribute name. */
    +  var PR_ATTRIB_NAME = 'atn';
    +  /** token style for an sgml attribute value. */
    +  var PR_ATTRIB_VALUE = 'atv';
    +
    +  /**
    +   * A class that indicates a section of markup that is not code, e.g. to allow
    +   * embedding of line numbers within code listings.
    +   */
    +  var PR_NOCODE = 'nocode';
    +
    +  /** A set of tokens that can precede a regular expression literal in
    +    * javascript.
    +    * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
    +    * list, but I've removed ones that might be problematic when seen in
    +    * languages that don't support regular expression literals.
    +    *
    +    * <p>Specifically, I've removed any keywords that can't precede a regexp
    +    * literal in a syntactically legal javascript program, and I've removed the
    +    * "in" keyword since it's not a keyword in many languages, and might be used
    +    * as a count of inches.
    +    *
    +    * <p>The link a above does not accurately describe EcmaScript rules since
    +    * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
    +    * very well in practice.
    +    *
    +    * @private
    +    */
    +  var REGEXP_PRECEDER_PATTERN = function () {
    +      var preceders = [
    +          "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
    +          "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
    +          "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
    +          "<", "<<", "<<=", "<=", "=", "==", "===", ">",
    +          ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
    +          "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
    +          "||=", "~" /* handles =~ and !~ */,
    +          "break", "case", "continue", "delete",
    +          "do", "else", "finally", "instanceof",
    +          "return", "throw", "try", "typeof"
    +          ];
    +      var pattern = '(?:^^|[+-]';
    +      for (var i = 0; i < preceders.length; ++i) {
    +        pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
    +      }
    +      pattern += ')\\s*';  // matches at end, and matches empty string
    +      return pattern;
    +      // CAVEAT: this does not properly handle the case where a regular
    +      // expression immediately follows another since a regular expression may
    +      // have flags for case-sensitivity and the like.  Having regexp tokens
    +      // adjacent is not valid in any language I'm aware of, so I'm punting.
    +      // TODO: maybe style special characters inside a regexp as punctuation.
    +    }();
    +
    +  // Define regexps here so that the interpreter doesn't have to create an
    +  // object each time the function containing them is called.
    +  // The language spec requires a new object created even if you don't access
    +  // the $1 members.
    +  var pr_amp = /&/g;
    +  var pr_lt = /</g;
    +  var pr_gt = />/g;
    +  var pr_quot = /\"/g;
    +  /** like textToHtml but escapes double quotes to be attribute safe. */
    +  function attribToHtml(str) {
    +    return str.replace(pr_amp, '&amp;')
    +        .replace(pr_lt, '&lt;')
    +        .replace(pr_gt, '&gt;')
    +        .replace(pr_quot, '&quot;');
    +  }
    +
    +  /** escapest html special characters to html. */
    +  function textToHtml(str) {
    +    return str.replace(pr_amp, '&amp;')
    +        .replace(pr_lt, '&lt;')
    +        .replace(pr_gt, '&gt;');
    +  }
    +
    +
    +  var pr_ltEnt = /&lt;/g;
    +  var pr_gtEnt = /&gt;/g;
    +  var pr_aposEnt = /&apos;/g;
    +  var pr_quotEnt = /&quot;/g;
    +  var pr_ampEnt = /&amp;/g;
    +  var pr_nbspEnt = /&nbsp;/g;
    +  /** unescapes html to plain text. */
    +  function htmlToText(html) {
    +    var pos = html.indexOf('&');
    +    if (pos < 0) { return html; }
    +    // Handle numeric entities specially.  We can't use functional substitution
    +    // since that doesn't work in older versions of Safari.
    +    // These should be rare since most browsers convert them to normal chars.
    +    for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
    +      var end = html.indexOf(';', pos);
    +      if (end >= 0) {
    +        var num = html.substring(pos + 3, end);
    +        var radix = 10;
    +        if (num && num.charAt(0) === 'x') {
    +          num = num.substring(1);
    +          radix = 16;
    +        }
    +        var codePoint = parseInt(num, radix);
    +        if (!isNaN(codePoint)) {
    +          html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
    +                  html.substring(end + 1));
    +        }
    +      }
    +    }
    +
    +    return html.replace(pr_ltEnt, '<')
    +        .replace(pr_gtEnt, '>')
    +        .replace(pr_aposEnt, "'")
    +        .replace(pr_quotEnt, '"')
    +        .replace(pr_nbspEnt, ' ')
    +        .replace(pr_ampEnt, '&');
    +  }
    +
    +  /** is the given node's innerHTML normally unescaped? */
    +  function isRawContent(node) {
    +    return 'XMP' === node.tagName;
    +  }
    +
    +  var newlineRe = /[\r\n]/g;
    +  /**
    +   * Are newlines and adjacent spaces significant in the given node's innerHTML?
    +   */
    +  function isPreformatted(node, content) {
    +    // PRE means preformatted, and is a very common case, so don't create
    +    // unnecessary computed style objects.
    +    if ('PRE' === node.tagName) { return true; }
    +    if (!newlineRe.test(content)) { return true; }  // Don't care
    +    var whitespace = '';
    +    // For disconnected nodes, IE has no currentStyle.
    +    if (node.currentStyle) {
    +      whitespace = node.currentStyle.whiteSpace;
    +    } else if (window.getComputedStyle) {
    +      // Firefox makes a best guess if node is disconnected whereas Safari
    +      // returns the empty string.
    +      whitespace = window.getComputedStyle(node, null).whiteSpace;
    +    }
    +    return !whitespace || whitespace === 'pre';
    +  }
    +
    +  function normalizedHtml(node, out) {
    +    switch (node.nodeType) {
    +      case 1:  // an element
    +        var name = node.tagName.toLowerCase();
    +        out.push('<', name);
    +        for (var i = 0; i < node.attributes.length; ++i) {
    +          var attr = node.attributes[i];
    +          if (!attr.specified) { continue; }
    +          out.push(' ');
    +          normalizedHtml(attr, out);
    +        }
    +        out.push('>');
    +        for (var child = node.firstChild; child; child = child.nextSibling) {
    +          normalizedHtml(child, out);
    +        }
    +        if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
    +          out.push('<\/', name, '>');
    +        }
    +        break;
    +      case 2: // an attribute
    +        out.push(node.name.toLowerCase(), '="', attribToHtml(node.value), '"');
    +        break;
    +      case 3: case 4: // text
    +        out.push(textToHtml(node.nodeValue));
    +        break;
    +    }
    +  }
    +
    +  /**
    +   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
    +   * matches the union o the sets o strings matched d by the input RegExp.
    +   * Since it matches globally, if the input strings have a start-of-input
    +   * anchor (/^.../), it is ignored for the purposes of unioning.
    +   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
    +   * @return {RegExp} a global regex.
    +   */
    +  function combinePrefixPatterns(regexs) {
    +    var capturedGroupIndex = 0;
    +
    +    var needToFoldCase = false;
    +    var ignoreCase = false;
    +    for (var i = 0, n = regexs.length; i < n; ++i) {
    +      var regex = regexs[i];
    +      if (regex.ignoreCase) {
    +        ignoreCase = true;
    +      } else if (/[a-z]/i.test(regex.source.replace(
    +                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
    +        needToFoldCase = true;
    +        ignoreCase = false;
    +        break;
    +      }
    +    }
    +
    +    function decodeEscape(charsetPart) {
    +      if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
    +      switch (charsetPart.charAt(1)) {
    +        case 'b': return 8;
    +        case 't': return 9;
    +        case 'n': return 0xa;
    +        case 'v': return 0xb;
    +        case 'f': return 0xc;
    +        case 'r': return 0xd;
    +        case 'u': case 'x':
    +          return parseInt(charsetPart.substring(2), 16)
    +              || charsetPart.charCodeAt(1);
    +        case '0': case '1': case '2': case '3': case '4':
    +        case '5': case '6': case '7':
    +          return parseInt(charsetPart.substring(1), 8);
    +        default: return charsetPart.charCodeAt(1);
    +      }
    +    }
    +
    +    function encodeEscape(charCode) {
    +      if (charCode < 0x20) {
    +        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
    +      }
    +      var ch = String.fromCharCode(charCode);
    +      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
    +        ch = '\\' + ch;
    +      }
    +      return ch;
    +    }
    +
    +    function caseFoldCharset(charSet) {
    +      var charsetParts = charSet.substring(1, charSet.length - 1).match(
    +          new RegExp(
    +              '\\\\u[0-9A-Fa-f]{4}'
    +              + '|\\\\x[0-9A-Fa-f]{2}'
    +              + '|\\\\[0-3][0-7]{0,2}'
    +              + '|\\\\[0-7]{1,2}'
    +              + '|\\\\[\\s\\S]'
    +              + '|-'
    +              + '|[^-\\\\]',
    +              'g'));
    +      var groups = [];
    +      var ranges = [];
    +      var inverse = charsetParts[0] === '^';
    +      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
    +        var p = charsetParts[i];
    +        switch (p) {
    +          case '\\B': case '\\b':
    +          case '\\D': case '\\d':
    +          case '\\S': case '\\s':
    +          case '\\W': case '\\w':
    +            groups.push(p);
    +            continue;
    +        }
    +        var start = decodeEscape(p);
    +        var end;
    +        if (i + 2 < n && '-' === charsetParts[i + 1]) {
    +          end = decodeEscape(charsetParts[i + 2]);
    +          i += 2;
    +        } else {
    +          end = start;
    +        }
    +        ranges.push([start, end]);
    +        // If the range might intersect letters, then expand it.
    +        if (!(end < 65 || start > 122)) {
    +          if (!(end < 65 || start > 90)) {
    +            ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
    +          }
    +          if (!(end < 97 || start > 122)) {
    +            ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
    +          }
    +        }
    +      }
    +
    +      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
    +      // -> [[1, 12], [14, 14], [16, 17]]
    +      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
    +      var consolidatedRanges = [];
    +      var lastRange = [NaN, NaN];
    +      for (var i = 0; i < ranges.length; ++i) {
    +        var range = ranges[i];
    +        if (range[0] <= lastRange[1] + 1) {
    +          lastRange[1] = Math.max(lastRange[1], range[1]);
    +        } else {
    +          consolidatedRanges.push(lastRange = range);
    +        }
    +      }
    +
    +      var out = ['['];
    +      if (inverse) { out.push('^'); }
    +      out.push.apply(out, groups);
    +      for (var i = 0; i < consolidatedRanges.length; ++i) {
    +        var range = consolidatedRanges[i];
    +        out.push(encodeEscape(range[0]));
    +        if (range[1] > range[0]) {
    +          if (range[1] + 1 > range[0]) { out.push('-'); }
    +          out.push(encodeEscape(range[1]));
    +        }
    +      }
    +      out.push(']');
    +      return out.join('');
    +    }
    +
    +    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
    +      // Split into character sets, escape sequences, punctuation strings
    +      // like ('(', '(?:', ')', '^'), and runs of characters that do not
    +      // include any of the above.
    +      var parts = regex.source.match(
    +          new RegExp(
    +              '(?:'
    +              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
    +              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
    +              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
    +              + '|\\\\[0-9]+'  // a back-reference or octal escape
    +              + '|\\\\[^ux0-9]'  // other escape sequence
    +              + '|\\(\\?[:!=]'  // start of a non-capturing group
    +              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
    +              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
    +              + ')',
    +              'g'));
    +      var n = parts.length;
    +
    +      // Maps captured group numbers to the number they will occupy in
    +      // the output or to -1 if that has not been determined, or to
    +      // undefined if they need not be capturing in the output.
    +      var capturedGroups = [];
    +
    +      // Walk over and identify back references to build the capturedGroups
    +      // mapping.
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        var p = parts[i];
    +        if (p === '(') {
    +          // groups are 1-indexed, so max group index is count of '('
    +          ++groupIndex;
    +        } else if ('\\' === p.charAt(0)) {
    +          var decimalValue = +p.substring(1);
    +          if (decimalValue && decimalValue <= groupIndex) {
    +            capturedGroups[decimalValue] = -1;
    +          }
    +        }
    +      }
    +
    +      // Renumber groups and reduce capturing groups to non-capturing groups
    +      // where possible.
    +      for (var i = 1; i < capturedGroups.length; ++i) {
    +        if (-1 === capturedGroups[i]) {
    +          capturedGroups[i] = ++capturedGroupIndex;
    +        }
    +      }
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        var p = parts[i];
    +        if (p === '(') {
    +          ++groupIndex;
    +          if (capturedGroups[groupIndex] === undefined) {
    +            parts[i] = '(?:';
    +          }
    +        } else if ('\\' === p.charAt(0)) {
    +          var decimalValue = +p.substring(1);
    +          if (decimalValue && decimalValue <= groupIndex) {
    +            parts[i] = '\\' + capturedGroups[groupIndex];
    +          }
    +        }
    +      }
    +
    +      // Remove any prefix anchors so that the output will match anywhere.
    +      // ^^ really does mean an anchored match though.
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
    +      }
    +
    +      // Expand letters to groupts to handle mixing of case-sensitive and
    +      // case-insensitive patterns if necessary.
    +      if (regex.ignoreCase && needToFoldCase) {
    +        for (var i = 0; i < n; ++i) {
    +          var p = parts[i];
    +          var ch0 = p.charAt(0);
    +          if (p.length >= 2 && ch0 === '[') {
    +            parts[i] = caseFoldCharset(p);
    +          } else if (ch0 !== '\\') {
    +            // TODO: handle letters in numeric escapes.
    +            parts[i] = p.replace(
    +                /[a-zA-Z]/g,
    +                function (ch) {
    +                  var cc = ch.charCodeAt(0);
    +                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
    +                });
    +          }
    +        }
    +      }
    +
    +      return parts.join('');
    +    }
    +
    +    var rewritten = [];
    +    for (var i = 0, n = regexs.length; i < n; ++i) {
    +      var regex = regexs[i];
    +      if (regex.global || regex.multiline) { throw new Error('' + regex); }
    +      rewritten.push(
    +          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
    +    }
    +
    +    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
    +  }
    +
    +  var PR_innerHtmlWorks = null;
    +  function getInnerHtml(node) {
    +    // inner html is hopelessly broken in Safari 2.0.4 when the content is
    +    // an html description of well formed XML and the containing tag is a PRE
    +    // tag, so we detect that case and emulate innerHTML.
    +    if (null === PR_innerHtmlWorks) {
    +      var testNode = document.createElement('PRE');
    +      testNode.appendChild(
    +          document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
    +      PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
    +    }
    +
    +    if (PR_innerHtmlWorks) {
    +      var content = node.innerHTML;
    +      // XMP tags contain unescaped entities so require special handling.
    +      if (isRawContent(node)) {
    +        content = textToHtml(content);
    +      } else if (!isPreformatted(node, content)) {
    +        content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
    +            .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
    +      }
    +      return content;
    +    }
    +
    +    var out = [];
    +    for (var child = node.firstChild; child; child = child.nextSibling) {
    +      normalizedHtml(child, out);
    +    }
    +    return out.join('');
    +  }
    +
    +  /** returns a function that expand tabs to spaces.  This function can be fed
    +    * successive chunks of text, and will maintain its own internal state to
    +    * keep track of how tabs are expanded.
    +    * @return {function (string) : string} a function that takes
    +    *   plain text and return the text with tabs expanded.
    +    * @private
    +    */
    +  function makeTabExpander(tabWidth) {
    +    var SPACES = '                ';
    +    var charInLine = 0;
    +
    +    return function (plainText) {
    +      // walk over each character looking for tabs and newlines.
    +      // On tabs, expand them.  On newlines, reset charInLine.
    +      // Otherwise increment charInLine
    +      var out = null;
    +      var pos = 0;
    +      for (var i = 0, n = plainText.length; i < n; ++i) {
    +        var ch = plainText.charAt(i);
    +
    +        switch (ch) {
    +          case '\t':
    +            if (!out) { out = []; }
    +            out.push(plainText.substring(pos, i));
    +            // calculate how much space we need in front of this part
    +            // nSpaces is the amount of padding -- the number of spaces needed
    +            // to move us to the next column, where columns occur at factors of
    +            // tabWidth.
    +            var nSpaces = tabWidth - (charInLine % tabWidth);
    +            charInLine += nSpaces;
    +            for (; nSpaces >= 0; nSpaces -= SPACES.length) {
    +              out.push(SPACES.substring(0, nSpaces));
    +            }
    +            pos = i + 1;
    +            break;
    +          case '\n':
    +            charInLine = 0;
    +            break;
    +          default:
    +            ++charInLine;
    +        }
    +      }
    +      if (!out) { return plainText; }
    +      out.push(plainText.substring(pos));
    +      return out.join('');
    +    };
    +  }
    +
    +  var pr_chunkPattern = new RegExp(
    +      '[^<]+'  // A run of characters other than '<'
    +      + '|<\!--[\\s\\S]*?--\>'  // an HTML comment
    +      + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'  // a CDATA section
    +      // a probable tag that should not be highlighted
    +      + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
    +      + '|<',  // A '<' that does not begin a larger chunk
    +      'g');
    +  var pr_commentPrefix = /^<\!--/;
    +  var pr_cdataPrefix = /^<!\[CDATA\[/;
    +  var pr_brPrefix = /^<br\b/i;
    +  var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
    +
    +  /** split markup into chunks of html tags (style null) and
    +    * plain text (style {@link #PR_PLAIN}), converting tags which are
    +    * significant for tokenization (<br>) into their textual equivalent.
    +    *
    +    * @param {string} s html where whitespace is considered significant.
    +    * @return {Object} source code and extracted tags.
    +    * @private
    +    */
    +  function extractTags(s) {
    +    // since the pattern has the 'g' modifier and defines no capturing groups,
    +    // this will return a list of all chunks which we then classify and wrap as
    +    // PR_Tokens
    +    var matches = s.match(pr_chunkPattern);
    +    var sourceBuf = [];
    +    var sourceBufLen = 0;
    +    var extractedTags = [];
    +    if (matches) {
    +      for (var i = 0, n = matches.length; i < n; ++i) {
    +        var match = matches[i];
    +        if (match.length > 1 && match.charAt(0) === '<') {
    +          if (pr_commentPrefix.test(match)) { continue; }
    +          if (pr_cdataPrefix.test(match)) {
    +            // strip CDATA prefix and suffix.  Don't unescape since it's CDATA
    +            sourceBuf.push(match.substring(9, match.length - 3));
    +            sourceBufLen += match.length - 12;
    +          } else if (pr_brPrefix.test(match)) {
    +            // <br> tags are lexically significant so convert them to text.
    +            // This is undone later.
    +            sourceBuf.push('\n');
    +            ++sourceBufLen;
    +          } else {
    +            if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
    +              // A <span class="nocode"> will start a section that should be
    +              // ignored.  Continue walking the list until we see a matching end
    +              // tag.
    +              var name = match.match(pr_tagNameRe)[2];
    +              var depth = 1;
    +              var j;
    +              end_tag_loop:
    +              for (j = i + 1; j < n; ++j) {
    +                var name2 = matches[j].match(pr_tagNameRe);
    +                if (name2 && name2[2] === name) {
    +                  if (name2[1] === '/') {
    +                    if (--depth === 0) { break end_tag_loop; }
    +                  } else {
    +                    ++depth;
    +                  }
    +                }
    +              }
    +              if (j < n) {
    +                extractedTags.push(
    +                    sourceBufLen, matches.slice(i, j + 1).join(''));
    +                i = j;
    +              } else {  // Ignore unclosed sections.
    +                extractedTags.push(sourceBufLen, match);
    +              }
    +            } else {
    +              extractedTags.push(sourceBufLen, match);
    +            }
    +          }
    +        } else {
    +          var literalText = htmlToText(match);
    +          sourceBuf.push(literalText);
    +          sourceBufLen += literalText.length;
    +        }
    +      }
    +    }
    +    return { source: sourceBuf.join(''), tags: extractedTags };
    +  }
    +
    +  /** True if the given tag contains a class attribute with the nocode class. */
    +  function isNoCodeTag(tag) {
    +    return !!tag
    +        // First canonicalize the representation of attributes
    +        .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
    +                 ' $1="$2$3$4"')
    +        // Then look for the attribute we want.
    +        .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
    +  }
    +
    +  /**
    +   * Apply the given language handler to sourceCode and add the resulting
    +   * decorations to out.
    +   * @param {number} basePos the index of sourceCode within the chunk of source
    +   *    whose decorations are already present on out.
    +   */
    +  function appendDecorations(basePos, sourceCode, langHandler, out) {
    +    if (!sourceCode) { return; }
    +    var job = {
    +      source: sourceCode,
    +      basePos: basePos
    +    };
    +    langHandler(job);
    +    out.push.apply(out, job.decorations);
    +  }
    +
    +  /** Given triples of [style, pattern, context] returns a lexing function,
    +    * The lexing function interprets the patterns to find token boundaries and
    +    * returns a decoration list of the form
    +    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
    +    * where index_n is an index into the sourceCode, and style_n is a style
    +    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
    +    * all characters in sourceCode[index_n-1:index_n].
    +    *
    +    * The stylePatterns is a list whose elements have the form
    +    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
    +    *
    +    * Style is a style constant like PR_PLAIN, or can be a string of the
    +    * form 'lang-FOO', where FOO is a language extension describing the
    +    * language of the portion of the token in $1 after pattern executes.
    +    * E.g., if style is 'lang-lisp', and group 1 contains the text
    +    * '(hello (world))', then that portion of the token will be passed to the
    +    * registered lisp handler for formatting.
    +    * The text before and after group 1 will be restyled using this decorator
    +    * so decorators should take care that this doesn't result in infinite
    +    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
    +    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
    +    * '<script>foo()<\/script>', which would cause the current decorator to
    +    * be called with '<script>' which would not match the same rule since
    +    * group 1 must not be empty, so it would be instead styled as PR_TAG by
    +    * the generic tag rule.  The handler registered for the 'js' extension would
    +    * then be called with 'foo()', and finally, the current decorator would
    +    * be called with '<\/script>' which would not match the original rule and
    +    * so the generic tag rule would identify it as a tag.
    +    *
    +    * Pattern must only match prefixes, and if it matches a prefix, then that
    +    * match is considered a token with the same style.
    +    *
    +    * Context is applied to the last non-whitespace, non-comment token
    +    * recognized.
    +    *
    +    * Shortcut is an optional string of characters, any of which, if the first
    +    * character, gurantee that this pattern and only this pattern matches.
    +    *
    +    * @param {Array} shortcutStylePatterns patterns that always start with
    +    *   a known character.  Must have a shortcut string.
    +    * @param {Array} fallthroughStylePatterns patterns that will be tried in
    +    *   order if the shortcut ones fail.  May have shortcuts.
    +    *
    +    * @return {function (Object)} a
    +    *   function that takes source code and returns a list of decorations.
    +    */
    +  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
    +    var shortcuts = {};
    +    var tokenizer;
    +    (function () {
    +      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
    +      var allRegexs = [];
    +      var regexKeys = {};
    +      for (var i = 0, n = allPatterns.length; i < n; ++i) {
    +        var patternParts = allPatterns[i];
    +        var shortcutChars = patternParts[3];
    +        if (shortcutChars) {
    +          for (var c = shortcutChars.length; --c >= 0;) {
    +            shortcuts[shortcutChars.charAt(c)] = patternParts;
    +          }
    +        }
    +        var regex = patternParts[1];
    +        var k = '' + regex;
    +        if (!regexKeys.hasOwnProperty(k)) {
    +          allRegexs.push(regex);
    +          regexKeys[k] = null;
    +        }
    +      }
    +      allRegexs.push(/[\0-\uffff]/);
    +      tokenizer = combinePrefixPatterns(allRegexs);
    +    })();
    +
    +    var nPatterns = fallthroughStylePatterns.length;
    +    var notWs = /\S/;
    +
    +    /**
    +     * Lexes job.source and produces an output array job.decorations of style
    +     * classes preceded by the position at which they start in job.source in
    +     * order.
    +     *
    +     * @param {Object} job an object like {@code
    +     *    source: {string} sourceText plain text,
    +     *    basePos: {int} position of job.source in the larger chunk of
    +     *        sourceCode.
    +     * }
    +     */
    +    var decorate = function (job) {
    +      var sourceCode = job.source, basePos = job.basePos;
    +      /** Even entries are positions in source in ascending order.  Odd enties
    +        * are style markers (e.g., PR_COMMENT) that run from that position until
    +        * the end.
    +        * @type {Array.<number|string>}
    +        */
    +      var decorations = [basePos, PR_PLAIN];
    +      var pos = 0;  // index into sourceCode
    +      var tokens = sourceCode.match(tokenizer) || [];
    +      var styleCache = {};
    +
    +      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
    +        var token = tokens[ti];
    +        var style = styleCache[token];
    +        var match = void 0;
    +
    +        var isEmbedded;
    +        if (typeof style === 'string') {
    +          isEmbedded = false;
    +        } else {
    +          var patternParts = shortcuts[token.charAt(0)];
    +          if (patternParts) {
    +            match = token.match(patternParts[1]);
    +            style = patternParts[0];
    +          } else {
    +            for (var i = 0; i < nPatterns; ++i) {
    +              patternParts = fallthroughStylePatterns[i];
    +              match = token.match(patternParts[1]);
    +              if (match) {
    +                style = patternParts[0];
    +                break;
    +              }
    +            }
    +
    +            if (!match) {  // make sure that we make progress
    +              style = PR_PLAIN;
    +            }
    +          }
    +
    +          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
    +          if (isEmbedded && !(match && typeof match[1] === 'string')) {
    +            isEmbedded = false;
    +            style = PR_SOURCE;
    +          }
    +
    +          if (!isEmbedded) { styleCache[token] = style; }
    +        }
    +
    +        var tokenStart = pos;
    +        pos += token.length;
    +
    +        if (!isEmbedded) {
    +          decorations.push(basePos + tokenStart, style);
    +        } else {  // Treat group 1 as an embedded block of source code.
    +          var embeddedSource = match[1];
    +          var embeddedSourceStart = token.indexOf(embeddedSource);
    +          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
    +          if (match[2]) {
    +            // If embeddedSource can be blank, then it would match at the
    +            // beginning which would cause us to infinitely recurse on the
    +            // entire token, so we catch the right context in match[2].
    +            embeddedSourceEnd = token.length - match[2].length;
    +            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
    +          }
    +          var lang = style.substring(5);
    +          // Decorate the left of the embedded source
    +          appendDecorations(
    +              basePos + tokenStart,
    +              token.substring(0, embeddedSourceStart),
    +              decorate, decorations);
    +          // Decorate the embedded source
    +          appendDecorations(
    +              basePos + tokenStart + embeddedSourceStart,
    +              embeddedSource,
    +              langHandlerForExtension(lang, embeddedSource),
    +              decorations);
    +          // Decorate the right of the embedded section
    +          appendDecorations(
    +              basePos + tokenStart + embeddedSourceEnd,
    +              token.substring(embeddedSourceEnd),
    +              decorate, decorations);
    +        }
    +      }
    +      job.decorations = decorations;
    +    };
    +    return decorate;
    +  }
    +
    +  /** returns a function that produces a list of decorations from source text.
    +    *
    +    * This code treats ", ', and ` as string delimiters, and \ as a string
    +    * escape.  It does not recognize perl's qq() style strings.
    +    * It has no special handling for double delimiter escapes as in basic, or
    +    * the tripled delimiters used in python, but should work on those regardless
    +    * although in those cases a single string literal may be broken up into
    +    * multiple adjacent string literals.
    +    *
    +    * It recognizes C, C++, and shell style comments.
    +    *
    +    * @param {Object} options a set of optional parameters.
    +    * @return {function (Object)} a function that examines the source code
    +    *     in the input job and builds the decoration list.
    +    */
    +  function sourceDecorator(options) {
    +    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
    +    if (options['tripleQuotedStrings']) {
    +      // '''multi-line-string''', 'single-line-string', and double-quoted
    +      shortcutStylePatterns.push(
    +          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
    +           null, '\'"']);
    +    } else if (options['multiLineStrings']) {
    +      // 'multi-line-string', "multi-line-string"
    +      shortcutStylePatterns.push(
    +          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
    +           null, '\'"`']);
    +    } else {
    +      // 'single-line-string', "single-line-string"
    +      shortcutStylePatterns.push(
    +          [PR_STRING,
    +           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
    +           null, '"\'']);
    +    }
    +    if (options['verbatimStrings']) {
    +      // verbatim-string-literal production from the C# grammar.  See issue 93.
    +      fallthroughStylePatterns.push(
    +          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
    +    }
    +    if (options['hashComments']) {
    +      if (options['cStyleComments']) {
    +        // Stop C preprocessor declarations at an unclosed open comment
    +        shortcutStylePatterns.push(
    +            [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
    +             null, '#']);
    +        fallthroughStylePatterns.push(
    +            [PR_STRING,
    +             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
    +             null]);
    +      } else {
    +        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
    +      }
    +    }
    +    if (options['cStyleComments']) {
    +      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
    +      fallthroughStylePatterns.push(
    +          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
    +    }
    +    if (options['regexLiterals']) {
    +      var REGEX_LITERAL = (
    +          // A regular expression literal starts with a slash that is
    +          // not followed by * or / so that it is not confused with
    +          // comments.
    +          '/(?=[^/*])'
    +          // and then contains any number of raw characters,
    +          + '(?:[^/\\x5B\\x5C]'
    +          // escape sequences (\x5C),
    +          +    '|\\x5C[\\s\\S]'
    +          // or non-nesting character sets (\x5B\x5D);
    +          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
    +          // finally closed by a /.
    +          + '/');
    +      fallthroughStylePatterns.push(
    +          ['lang-regex',
    +           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
    +           ]);
    +    }
    +
    +    var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
    +    if (keywords.length) {
    +      fallthroughStylePatterns.push(
    +          [PR_KEYWORD,
    +           new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
    +    }
    +
    +    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
    +    fallthroughStylePatterns.push(
    +        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
    +        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
    +        [PR_TYPE,        /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
    +        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
    +        [PR_LITERAL,
    +         new RegExp(
    +             '^(?:'
    +             // A hex number
    +             + '0x[a-f0-9]+'
    +             // or an octal or decimal number,
    +             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
    +             // possibly in scientific notation
    +             + '(?:e[+\\-]?\\d+)?'
    +             + ')'
    +             // with an optional modifier like UL for unsigned long
    +             + '[a-z]*', 'i'),
    +         null, '0123456789'],
    +        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
    +
    +    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
    +  }
    +
    +  var decorateSource = sourceDecorator({
    +        'keywords': ALL_KEYWORDS,
    +        'hashComments': true,
    +        'cStyleComments': true,
    +        'multiLineStrings': true,
    +        'regexLiterals': true
    +      });
    +
    +  /** Breaks {@code job.source} around style boundaries in
    +    * {@code job.decorations} while re-interleaving {@code job.extractedTags},
    +    * and leaves the result in {@code job.prettyPrintedHtml}.
    +    * @param {Object} job like {
    +    *    source: {string} source as plain text,
    +    *    extractedTags: {Array.<number|string>} extractedTags chunks of raw
    +    *                   html preceded by their position in {@code job.source}
    +    *                   in order
    +    *    decorations: {Array.<number|string} an array of style classes preceded
    +    *                 by the position at which they start in job.source in order
    +    * }
    +    * @private
    +    */
    +  function recombineTagsAndDecorations(job) {
    +    var sourceText = job.source;
    +    var extractedTags = job.extractedTags;
    +    var decorations = job.decorations;
    +
    +    var html = [];
    +    // index past the last char in sourceText written to html
    +    var outputIdx = 0;
    +
    +    var openDecoration = null;
    +    var currentDecoration = null;
    +    var tagPos = 0;  // index into extractedTags
    +    var decPos = 0;  // index into decorations
    +    var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
    +
    +    var adjacentSpaceRe = /([\r\n ]) /g;
    +    var startOrSpaceRe = /(^| ) /gm;
    +    var newlineRe = /\r\n?|\n/g;
    +    var trailingSpaceRe = /[ \r\n]$/;
    +    var lastWasSpace = true;  // the last text chunk emitted ended with a space.
    +
    +    // A helper function that is responsible for opening sections of decoration
    +    // and outputing properly escaped chunks of source
    +    function emitTextUpTo(sourceIdx) {
    +      if (sourceIdx > outputIdx) {
    +        if (openDecoration && openDecoration !== currentDecoration) {
    +          // Close the current decoration
    +          html.push('</span>');
    +          openDecoration = null;
    +        }
    +        if (!openDecoration && currentDecoration) {
    +          openDecoration = currentDecoration;
    +          html.push('<span class="', openDecoration, '">');
    +        }
    +        // This interacts badly with some wikis which introduces paragraph tags
    +        // into pre blocks for some strange reason.
    +        // It's necessary for IE though which seems to lose the preformattedness
    +        // of <pre> tags when their innerHTML is assigned.
    +        // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
    +        // and it serves to undo the conversion of <br>s to newlines done in
    +        // chunkify.
    +        var htmlChunk = textToHtml(
    +            tabExpander(sourceText.substring(outputIdx, sourceIdx)))
    +            .replace(lastWasSpace
    +                     ? startOrSpaceRe
    +                     : adjacentSpaceRe, '$1&nbsp;');
    +        // Keep track of whether we need to escape space at the beginning of the
    +        // next chunk.
    +        lastWasSpace = trailingSpaceRe.test(htmlChunk);
    +        // IE collapses multiple adjacient <br>s into 1 line break.
    +        // Prefix every <br> with '&nbsp;' can prevent such IE's behavior.
    +        var lineBreakHtml = window['_pr_isIE6']() ? '&nbsp;<br />' : '<br />';
    +        html.push(htmlChunk.replace(newlineRe, lineBreakHtml));
    +        outputIdx = sourceIdx;
    +      }
    +    }
    +
    +    while (true) {
    +      // Determine if we're going to consume a tag this time around.  Otherwise
    +      // we consume a decoration or exit.
    +      var outputTag;
    +      if (tagPos < extractedTags.length) {
    +        if (decPos < decorations.length) {
    +          // Pick one giving preference to extractedTags since we shouldn't open
    +          // a new style that we're going to have to immediately close in order
    +          // to output a tag.
    +          outputTag = extractedTags[tagPos] <= decorations[decPos];
    +        } else {
    +          outputTag = true;
    +        }
    +      } else {
    +        outputTag = false;
    +      }
    +      // Consume either a decoration or a tag or exit.
    +      if (outputTag) {
    +        emitTextUpTo(extractedTags[tagPos]);
    +        if (openDecoration) {
    +          // Close the current decoration
    +          html.push('</span>');
    +          openDecoration = null;
    +        }
    +        html.push(extractedTags[tagPos + 1]);
    +        tagPos += 2;
    +      } else if (decPos < decorations.length) {
    +        emitTextUpTo(decorations[decPos]);
    +        currentDecoration = decorations[decPos + 1];
    +        decPos += 2;
    +      } else {
    +        break;
    +      }
    +    }
    +    emitTextUpTo(sourceText.length);
    +    if (openDecoration) {
    +      html.push('</span>');
    +    }
    +    job.prettyPrintedHtml = html.join('');
    +  }
    +
    +  /** Maps language-specific file extensions to handlers. */
    +  var langHandlerRegistry = {};
    +  /** Register a language handler for the given file extensions.
    +    * @param {function (Object)} handler a function from source code to a list
    +    *      of decorations.  Takes a single argument job which describes the
    +    *      state of the computation.   The single parameter has the form
    +    *      {@code {
    +    *        source: {string} as plain text.
    +    *        decorations: {Array.<number|string>} an array of style classes
    +    *                     preceded by the position at which they start in
    +    *                     job.source in order.
    +    *                     The language handler should assigned this field.
    +    *        basePos: {int} the position of source in the larger source chunk.
    +    *                 All positions in the output decorations array are relative
    +    *                 to the larger source chunk.
    +    *      } }
    +    * @param {Array.<string>} fileExtensions
    +    */
    +  function registerLangHandler(handler, fileExtensions) {
    +    for (var i = fileExtensions.length; --i >= 0;) {
    +      var ext = fileExtensions[i];
    +      if (!langHandlerRegistry.hasOwnProperty(ext)) {
    +        langHandlerRegistry[ext] = handler;
    +      } else if ('console' in window) {
    +        console.warn('cannot override language handler %s', ext);
    +      }
    +    }
    +  }
    +  function langHandlerForExtension(extension, source) {
    +    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
    +      // Treat it as markup if the first non whitespace character is a < and
    +      // the last non-whitespace character is a >.
    +      extension = /^\s*</.test(source)
    +          ? 'default-markup'
    +          : 'default-code';
    +    }
    +    return langHandlerRegistry[extension];
    +  }
    +  registerLangHandler(decorateSource, ['default-code']);
    +  registerLangHandler(
    +      createSimpleLexer(
    +          [],
    +          [
    +           [PR_PLAIN,       /^[^<?]+/],
    +           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
    +           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
    +           // Unescaped content in an unknown language
    +           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
    +           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
    +           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
    +           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
    +           // Unescaped content in javascript.  (Or possibly vbscript).
    +           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
    +           // Contains unescaped stylesheet content
    +           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
    +           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
    +          ]),
    +      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
    +  registerLangHandler(
    +      createSimpleLexer(
    +          [
    +           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
    +           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
    +           ],
    +          [
    +           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
    +           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
    +           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
    +           [PR_PUNCTUATION,  /^[=<>\/]+/],
    +           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
    +           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
    +           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
    +           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
    +           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
    +           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
    +           ]),
    +      ['in.tag']);
    +  registerLangHandler(
    +      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': CPP_KEYWORDS,
    +          'hashComments': true,
    +          'cStyleComments': true
    +        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': 'null true false'
    +        }), ['json']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': CSHARP_KEYWORDS,
    +          'hashComments': true,
    +          'cStyleComments': true,
    +          'verbatimStrings': true
    +        }), ['cs']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': JAVA_KEYWORDS,
    +          'cStyleComments': true
    +        }), ['java']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': SH_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true
    +        }), ['bsh', 'csh', 'sh']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': PYTHON_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'tripleQuotedStrings': true
    +        }), ['cv', 'py']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': PERL_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'regexLiterals': true
    +        }), ['perl', 'pl', 'pm']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': RUBY_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'regexLiterals': true
    +        }), ['rb']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': JSCRIPT_KEYWORDS,
    +          'cStyleComments': true,
    +          'regexLiterals': true
    +        }), ['js']);
    +  registerLangHandler(
    +      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
    +
    +  function applyDecorator(job) {
    +    var sourceCodeHtml = job.sourceCodeHtml;
    +    var opt_langExtension = job.langExtension;
    +
    +    // Prepopulate output in case processing fails with an exception.
    +    job.prettyPrintedHtml = sourceCodeHtml;
    +
    +    try {
    +      // Extract tags, and convert the source code to plain text.
    +      var sourceAndExtractedTags = extractTags(sourceCodeHtml);
    +      /** Plain text. @type {string} */
    +      var source = sourceAndExtractedTags.source;
    +      job.source = source;
    +      job.basePos = 0;
    +
    +      /** Even entries are positions in source in ascending order.  Odd entries
    +        * are tags that were extracted at that position.
    +        * @type {Array.<number|string>}
    +        */
    +      job.extractedTags = sourceAndExtractedTags.tags;
    +
    +      // Apply the appropriate language handler
    +      langHandlerForExtension(opt_langExtension, source)(job);
    +      // Integrate the decorations and tags back into the source code to produce
    +      // a decorated html string which is left in job.prettyPrintedHtml.
    +      recombineTagsAndDecorations(job);
    +    } catch (e) {
    +      if ('console' in window) {
    +        console.log(e);
    +        console.trace();
    +      }
    +    }
    +  }
    +
    +  function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
    +    var job = {
    +      sourceCodeHtml: sourceCodeHtml,
    +      langExtension: opt_langExtension
    +    };
    +    applyDecorator(job);
    +    return job.prettyPrintedHtml;
    +  }
    +
    +  function prettyPrint(opt_whenDone) {
    +    var isIE678 = window['_pr_isIE6']();
    +    var ieNewline = isIE678 === 6 ? '\r\n' : '\r';
    +    // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
    +
    +    // fetch a list of nodes to rewrite
    +    var codeSegments = [
    +        document.getElementsByTagName('pre'),
    +        document.getElementsByTagName('code'),
    +        document.getElementsByTagName('td'),  /* ND Change: Add tables to support prototypes. */
    +        document.getElementsByTagName('xmp') ];
    +    var elements = [];
    +    for (var i = 0; i < codeSegments.length; ++i) {
    +      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
    +        elements.push(codeSegments[i][j]);
    +      }
    +    }
    +    codeSegments = null;
    +
    +    var clock = Date;
    +    if (!clock['now']) {
    +      clock = { 'now': function () { return (new Date).getTime(); } };
    +    }
    +
    +    // The loop is broken into a series of continuations to make sure that we
    +    // don't make the browser unresponsive when rewriting a large page.
    +    var k = 0;
    +    var prettyPrintingJob;
    +
    +    function doWork() {
    +      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
    +                     clock.now() + 250 /* ms */ :
    +                     Infinity);
    +      for (; k < elements.length && clock.now() < endTime; k++) {
    +        var cs = elements[k];
    +        if (cs.className && cs.className.indexOf('prettyprint') >= 0) {
    +          // If the classes includes a language extensions, use it.
    +          // Language extensions can be specified like
    +          //     <pre class="prettyprint lang-cpp">
    +          // the language extension "cpp" is used to find a language handler as
    +          // passed to PR_registerLangHandler.
    +          var langExtension = cs.className.match(/\blang-(\w+)\b/);
    +          if (langExtension) { langExtension = langExtension[1]; }
    +
    +          // make sure this is not nested in an already prettified element
    +          var nested = false;
    +          for (var p = cs.parentNode; p; p = p.parentNode) {
    +            if ((p.tagName === 'pre' || p.tagName === 'code' ||
    +                 p.tagName === 'xmp' || p.tagName === 'td') &&  /* ND Change: Add tables to support prototypes */
    +                p.className && p.className.indexOf('prettyprint') >= 0) {
    +              nested = true;
    +              break;
    +            }
    +          }
    +          if (!nested) {
    +            // fetch the content as a snippet of properly escaped HTML.
    +            // Firefox adds newlines at the end.
    +            var content = getInnerHtml(cs);
    +            content = content.replace(/(?:\r\n?|\n)$/, '');
    +
    +	  		/* ND Change: we need to preserve &nbsp;s so change them to a special character instead of a space. */
    +			content = content.replace(/&nbsp;/g, '\x11');
    +
    +            // do the pretty printing
    +            prettyPrintingJob = {
    +              sourceCodeHtml: content,
    +              langExtension: langExtension,
    +              sourceNode: cs
    +            };
    +            applyDecorator(prettyPrintingJob);
    +            replaceWithPrettyPrintedHtml();
    +          }
    +        }
    +      }
    +      if (k < elements.length) {
    +        // finish up in a continuation
    +        setTimeout(doWork, 250);
    +      } else if (opt_whenDone) {
    +        opt_whenDone();
    +      }
    +    }
    +
    +    function replaceWithPrettyPrintedHtml() {
    +      var newContent = prettyPrintingJob.prettyPrintedHtml;
    +      if (!newContent) { return; }
    +
    +      /* ND Change: Restore the preserved &nbsp;s.  */
    +	  newContent = newContent.replace(/\x11/g, '&nbsp;');
    +
    +      var cs = prettyPrintingJob.sourceNode;
    +
    +      // push the prettified html back into the tag.
    +      if (!isRawContent(cs)) {
    +        // just replace the old html with the new
    +        cs.innerHTML = newContent;
    +      } else {
    +        // we need to change the tag to a <pre> since <xmp>s do not allow
    +        // embedded tags such as the span tags used to attach styles to
    +        // sections of source code.
    +        var pre = document.createElement('PRE');
    +        for (var i = 0; i < cs.attributes.length; ++i) {
    +          var a = cs.attributes[i];
    +          if (a.specified) {
    +            var aname = a.name.toLowerCase();
    +            if (aname === 'class') {
    +              pre.className = a.value;  // For IE 6
    +            } else {
    +              pre.setAttribute(a.name, a.value);
    +            }
    +          }
    +        }
    +        pre.innerHTML = newContent;
    +
    +        // remove the old
    +        cs.parentNode.replaceChild(pre, cs);
    +        cs = pre;
    +      }
    +
    +      // Replace <br>s with line-feeds so that copying and pasting works
    +      // on IE 6.
    +      // Doing this on other browsers breaks lots of stuff since \r\n is
    +      // treated as two newlines on Firefox, and doing this also slows
    +      // down rendering.
    +      if (isIE678 && cs.tagName === 'PRE') {
    +        var lineBreaks = cs.getElementsByTagName('br');
    +        for (var j = lineBreaks.length; --j >= 0;) {
    +          var lineBreak = lineBreaks[j];
    +          lineBreak.parentNode.replaceChild(
    +              document.createTextNode(ieNewline), lineBreak);
    +        }
    +      }
    +    }
    +
    +    doWork();
    +  }
    +
    +  window['PR_normalizedHtml'] = normalizedHtml;
    +  window['prettyPrintOne'] = prettyPrintOne;
    +  window['prettyPrint'] = prettyPrint;
    +  window['PR'] = {
    +        'combinePrefixPatterns': combinePrefixPatterns,
    +        'createSimpleLexer': createSimpleLexer,
    +        'registerLangHandler': registerLangHandler,
    +        'sourceDecorator': sourceDecorator,
    +        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
    +        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
    +        'PR_COMMENT': PR_COMMENT,
    +        'PR_DECLARATION': PR_DECLARATION,
    +        'PR_KEYWORD': PR_KEYWORD,
    +        'PR_LITERAL': PR_LITERAL,
    +        'PR_NOCODE': PR_NOCODE,
    +        'PR_PLAIN': PR_PLAIN,
    +        'PR_PUNCTUATION': PR_PUNCTUATION,
    +        'PR_SOURCE': PR_SOURCE,
    +        'PR_STRING': PR_STRING,
    +        'PR_TAG': PR_TAG,
    +        'PR_TYPE': PR_TYPE
    +      };
    +})();
    +
    +
    +// ____________________________________________________________________________
    +
    +
    +
    +// Lua extension
    +
    +PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,'	\n\r \xa0'],[PR.PR_STRING,/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,'\"\'']],[[PR.PR_COMMENT,/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],[PR.PR_STRING,/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],[PR.PR_KEYWORD,/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],[PR.PR_LITERAL,/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^[a-z_]\w*/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),['lua'])
    +
    +
    +// Haskell extension
    +
    +PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\x0B\x0C\r ]+/,null,'	\n\r '],[PR.PR_STRING,/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'\"'],[PR.PR_STRING,/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,'\''],[PR.PR_LITERAL,/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,'0123456789']],[[PR.PR_COMMENT,/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],[PR.PR_KEYWORD,/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/,null],[PR.PR_PLAIN,/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],[PR.PR_PUNCTUATION,/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),['hs'])
    +
    +
    +// ML extension
    +
    +PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,'	\n\r \xa0'],[PR.PR_COMMENT,/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,'#'],[PR.PR_STRING,/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,'\"\'']],[[PR.PR_COMMENT,/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],[PR.PR_KEYWORD,/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/],[PR.PR_LITERAL,/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^(?:[a-z_]\w*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],[PR.PR_PUNCTUATION,/^[^\t\n\r \xA0\"\'\w]+/]]),['fs','ml'])
    +
    +
    +// SQL extension
    +
    +PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0]+/,null,'	\n\r \xa0'],[PR.PR_STRING,/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,'\"\'']],[[PR.PR_COMMENT,/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],[PR.PR_KEYWORD,/^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i,null],[PR.PR_LITERAL,/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],[PR.PR_PLAIN,/^[a-z_][\w-]*/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),['sql'])
    +
    +
    +// VB extension
    +
    +PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[\t\n\r \xA0\u2028\u2029]+/,null,'	\n\r \xa0\u2028\u2029'],[PR.PR_STRING,/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'\"\u201c\u201d'],[PR.PR_COMMENT,/^[\'\u2018\u2019][^\r\n\u2028\u2029]*/,null,'\'\u2018\u2019']],[[PR.PR_KEYWORD,/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i,null],[PR.PR_COMMENT,/^REM[^\r\n\u2028\u2029]*/i],[PR.PR_LITERAL,/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],[PR.PR_PLAIN,/^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],[PR.PR_PUNCTUATION,/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],[PR.PR_PUNCTUATION,/^(?:\[|\])/]]),['vb','vbs'])
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/searchdata.js b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/searchdata.js
    new file mode 100644
    index 00000000000..6424cb22543
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/searchdata.js
    @@ -0,0 +1,182 @@
    +var indexSectionsWithContent = {
    +   "Files": {
    +      "Symbols": false,
    +      "Numbers": false,
    +      "A": false,
    +      "B": true,
    +      "C": true,
    +      "D": false,
    +      "E": false,
    +      "F": true,
    +      "G": true,
    +      "H": false,
    +      "I": true,
    +      "J": true,
    +      "K": false,
    +      "L": true,
    +      "M": true,
    +      "N": false,
    +      "O": false,
    +      "P": true,
    +      "Q": false,
    +      "R": false,
    +      "S": true,
    +      "T": true,
    +      "U": false,
    +      "V": false,
    +      "W": true,
    +      "X": true,
    +      "Y": false,
    +      "Z": false
    +      },
    +   "Constants": {
    +      "Symbols": false,
    +      "Numbers": false,
    +      "A": false,
    +      "B": false,
    +      "C": false,
    +      "D": false,
    +      "E": false,
    +      "F": false,
    +      "G": true,
    +      "H": false,
    +      "I": false,
    +      "J": false,
    +      "K": false,
    +      "L": false,
    +      "M": false,
    +      "N": false,
    +      "O": false,
    +      "P": false,
    +      "Q": false,
    +      "R": false,
    +      "S": true,
    +      "T": false,
    +      "U": false,
    +      "V": false,
    +      "W": false,
    +      "X": false,
    +      "Y": false,
    +      "Z": false
    +      },
    +   "Types": {
    +      "Symbols": false,
    +      "Numbers": false,
    +      "A": false,
    +      "B": false,
    +      "C": false,
    +      "D": false,
    +      "E": false,
    +      "F": false,
    +      "G": true,
    +      "H": false,
    +      "I": false,
    +      "J": false,
    +      "K": false,
    +      "L": false,
    +      "M": false,
    +      "N": false,
    +      "O": false,
    +      "P": false,
    +      "Q": false,
    +      "R": false,
    +      "S": false,
    +      "T": false,
    +      "U": false,
    +      "V": false,
    +      "W": false,
    +      "X": false,
    +      "Y": false,
    +      "Z": false
    +      },
    +   "Functions": {
    +      "Symbols": false,
    +      "Numbers": false,
    +      "A": false,
    +      "B": false,
    +      "C": false,
    +      "D": false,
    +      "E": false,
    +      "F": false,
    +      "G": true,
    +      "H": false,
    +      "I": false,
    +      "J": false,
    +      "K": false,
    +      "L": false,
    +      "M": false,
    +      "N": false,
    +      "O": false,
    +      "P": false,
    +      "Q": false,
    +      "R": false,
    +      "S": false,
    +      "T": false,
    +      "U": false,
    +      "V": false,
    +      "W": false,
    +      "X": false,
    +      "Y": false,
    +      "Z": false
    +      },
    +   "Macros": {
    +      "Symbols": false,
    +      "Numbers": false,
    +      "A": false,
    +      "B": false,
    +      "C": false,
    +      "D": false,
    +      "E": false,
    +      "F": false,
    +      "G": true,
    +      "H": false,
    +      "I": false,
    +      "J": false,
    +      "K": false,
    +      "L": false,
    +      "M": false,
    +      "N": false,
    +      "O": false,
    +      "P": false,
    +      "Q": false,
    +      "R": false,
    +      "S": false,
    +      "T": false,
    +      "U": false,
    +      "V": false,
    +      "W": false,
    +      "X": false,
    +      "Y": false,
    +      "Z": false
    +      },
    +   "General": {
    +      "Symbols": false,
    +      "Numbers": true,
    +      "A": true,
    +      "B": true,
    +      "C": true,
    +      "D": false,
    +      "E": true,
    +      "F": true,
    +      "G": true,
    +      "H": false,
    +      "I": true,
    +      "J": true,
    +      "K": false,
    +      "L": true,
    +      "M": true,
    +      "N": false,
    +      "O": true,
    +      "P": true,
    +      "Q": false,
    +      "R": false,
    +      "S": true,
    +      "T": true,
    +      "U": false,
    +      "V": false,
    +      "W": true,
    +      "X": true,
    +      "Y": false,
    +      "Z": false
    +      }
    +   }
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsG.html
    new file mode 100644
    index 00000000000..262a81cf028
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsG.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_GD_undBELL><div class=IEntry><a href="../files/gd-h.html#GD_BELL" target=_parent class=ISymbol>GD_BELL</a></div></div><div class=SRResult id=SR_GD_undBESSEL><div class=IEntry><a href="../files/gd-h.html#GD_BESSEL" target=_parent class=ISymbol>GD_BESSEL</a></div></div><div class=SRResult id=SR_GD_undBICUBIC><div class=IEntry><a href="../files/gd-h.html#GD_BICUBIC" target=_parent class=ISymbol>GD_BICUBIC</a></div></div><div class=SRResult id=SR_GD_undBICUBIC_undFIXED><div class=IEntry><a href="../files/gd-h.html#GD_BICUBIC_FIXED" target=_parent class=ISymbol>GD_BICUBIC_FIXED</a></div></div><div class=SRResult id=SR_GD_undBILINEAR_undFIXED><div class=IEntry><a href="../files/gd-h.html#GD_BILINEAR_FIXED" target=_parent class=ISymbol>GD_BILINEAR_FIXED</a></div></div><div class=SRResult id=SR_GD_undBLACKMAN><div class=IEntry><a href="../files/gd-h.html#GD_BLACKMAN" target=_parent class=ISymbol>GD_BLACKMAN</a></div></div><div class=SRResult id=SR_GD_undBOX><div class=IEntry><a href="../files/gd-h.html#GD_BOX" target=_parent class=ISymbol>GD_BOX</a></div></div><div class=SRResult id=SR_GD_undBSPLINE><div class=IEntry><a href="../files/gd-h.html#GD_BSPLINE" target=_parent class=ISymbol>GD_BSPLINE</a></div></div><div class=SRResult id=SR_GD_undCATMULLROM><div class=IEntry><a href="../files/gd-h.html#GD_CATMULLROM" target=_parent class=ISymbol>GD_CATMULLROM</a></div></div><div class=SRResult id=SR_GD_undCROP_undBLACK><div class=IEntry><a href="../files/gd-h.html#GD_CROP_BLACK" target=_parent class=ISymbol>GD_CROP_BLACK</a></div></div><div class=SRResult id=SR_GD_undCROP_undDEFAULT><div class=IEntry><a href="../files/gd-h.html#GD_CROP_DEFAULT" target=_parent class=ISymbol>GD_CROP_DEFAULT</a></div></div><div class=SRResult id=SR_GD_undCROP_undSIDES><div class=IEntry><a href="../files/gd-h.html#GD_CROP_SIDES" target=_parent class=ISymbol>GD_CROP_SIDES</a></div></div><div class=SRResult id=SR_GD_undCROP_undTRANSPARENT><div class=IEntry><a href="../files/gd-h.html#GD_CROP_TRANSPARENT" target=_parent class=ISymbol>GD_CROP_TRANSPARENT</a></div></div><div class=SRResult id=SR_GD_undCROP_undWHITE><div class=IEntry><a href="../files/gd-h.html#GD_CROP_WHITE" target=_parent class=ISymbol>GD_CROP_WHITE</a></div></div><div class=SRResult id=SR_GD_undGAUSSIAN><div class=IEntry><a href="../files/gd-h.html#GD_GAUSSIAN" target=_parent class=ISymbol>GD_GAUSSIAN</a></div></div><div class=SRResult id=SR_GD_undGENERALIZED_undCUBIC><div class=IEntry><a href="../files/gd-h.html#GD_GENERALIZED_CUBIC" target=_parent class=ISymbol>GD_GENERALIZED_CUBIC</a></div></div><div class=SRResult id=SR_GD_undHAMMING><div class=IEntry><a href="../files/gd-h.html#GD_HAMMING" target=_parent class=ISymbol>GD_HAMMING</a></div></div><div class=SRResult id=SR_GD_undHANNING><div class=IEntry><a href="../files/gd-h.html#GD_HANNING" target=_parent class=ISymbol>GD_HANNING</a></div></div><div class=SRResult id=SR_GD_undHERMITE><div class=IEntry><a href="../files/gd-h.html#GD_HERMITE" target=_parent class=ISymbol>GD_HERMITE</a></div></div><div class=SRResult id=SR_GD_undLINEAR><div class=IEntry><a href="../files/gd-h.html#GD_LINEAR" target=_parent class=ISymbol>GD_LINEAR</a></div></div><div class=SRResult id=SR_GD_undMITCHELL><div class=IEntry><a href="../files/gd-h.html#GD_MITCHELL" target=_parent class=ISymbol>GD_MITCHELL</a></div></div><div class=SRResult id=SR_GD_undNEAREST_undNEIGHBOUR><div class=IEntry><a href="../files/gd-h.html#GD_NEAREST_NEIGHBOUR" target=_parent class=ISymbol>GD_NEAREST_NEIGHBOUR</a></div></div><div class=SRResult id=SR_GD_undPOWER><div class=IEntry><a href="../files/gd-h.html#GD_POWER" target=_parent class=ISymbol>GD_POWER</a></div></div><div class=SRResult id=SR_GD_undQUADRATIC><div class=IEntry><a href="../files/gd-h.html#GD_QUADRATIC" target=_parent class=ISymbol>GD_QUADRATIC</a></div></div><div class=SRResult id=SR_GD_undQUANT_undDEFAULT><div class=IEntry><a href="../files/gd-h.html#GD_QUANT_DEFAULT" target=_parent class=ISymbol>GD_QUANT_DEFAULT</a></div></div><div class=SRResult id=SR_GD_undQUANT_undJQUANT><div class=IEntry><a href="../files/gd-h.html#GD_QUANT_JQUANT" target=_parent class=ISymbol>GD_QUANT_JQUANT</a></div></div><div class=SRResult id=SR_GD_undQUANT_undLIQ><div class=IEntry><a href="../files/gd-h.html#GD_QUANT_LIQ" target=_parent class=ISymbol>GD_QUANT_LIQ</a></div></div><div class=SRResult id=SR_GD_undQUANT_undNEUQUANT><div class=IEntry><a href="../files/gd-h.html#GD_QUANT_NEUQUANT" target=_parent class=ISymbol>GD_QUANT_NEUQUANT</a></div></div><div class=SRResult id=SR_GD_undSINC><div class=IEntry><a href="../files/gd-h.html#GD_SINC" target=_parent class=ISymbol>GD_SINC</a></div></div><div class=SRResult id=SR_GD_undTRIANGLE><div class=IEntry><a href="../files/gd-h.html#GD_TRIANGLE" target=_parent class=ISymbol>GD_TRIANGLE</a></div></div><div class=SRResult id=SR_GD_undWEIGHTED4><div class=IEntry><a href="../files/gd-h.html#GD_WEIGHTED4" target=_parent class=ISymbol>GD_WEIGHTED4</a></div></div><div class=SRResult id=SR_gdAntiAliased><div class=IEntry><a href="../files/gd-h.html#gdAntiAliased" target=_parent class=ISymbol>gdAntiAliased</a></div></div><div class=SRResult id=SR_gdBrushed><div class=IEntry><a href="../files/gd-h.html#gdBrushed" target=_parent class=ISymbol>gdBrushed</a></div></div><div class=SRResult id=SR_gdCropMode><div class=IEntry><a href="../files/gd-h.html#gdCropMode" target=_parent class=ISymbol>gdCropMode</a></div></div><div class=SRResult id=SR_gdDisposalNone><div class=IEntry><a href="../files/gd-h.html#gdDisposalNone" target=_parent class=ISymbol>gdDisposalNone</a></div></div><div class=SRResult id=SR_gdDisposalRestoreBackground><div class=IEntry><a href="../files/gd-h.html#gdDisposalRestoreBackground" target=_parent class=ISymbol>gdDisposalRestoreBackground</a></div></div><div class=SRResult id=SR_gdDisposalRestorePrevious><div class=IEntry><a href="../files/gd-h.html#gdDisposalRestorePrevious" target=_parent class=ISymbol>gdDisposalRestorePrevious</a></div></div><div class=SRResult id=SR_gdDisposalUnknown><div class=IEntry><a href="../files/gd-h.html#gdDisposalUnknown" target=_parent class=ISymbol>gdDisposalUnknown</a></div></div><div class=SRResult id=SR_gdImageGifAnim><div class=IEntry><a href="../files/gd-h.html#gdImageGifAnim" target=_parent class=ISymbol>gdImageGifAnim</a></div></div><div class=SRResult id=SR_gdInterpolationMethod><div class=IEntry><a href="../files/gd-h.html#gdInterpolationMethod" target=_parent class=ISymbol>gdInterpolationMethod</a></div></div><div class=SRResult id=SR_gdStyled><div class=IEntry><a href="../files/gd-h.html#gdStyled" target=_parent class=ISymbol>gdStyled</a></div></div><div class=SRResult id=SR_gdStyledBrushed><div class=IEntry><a href="../files/gd-h.html#gdStyledBrushed" target=_parent class=ISymbol>gdStyledBrushed</a></div></div><div class=SRResult id=SR_gdTiled><div class=IEntry><a href="../files/gd-h.html#gdTiled" target=_parent class=ISymbol>gdTiled</a></div></div><div class=SRResult id=SR_gdTransparent><div class=IEntry><a href="../files/gd-h.html#gdTransparent" target=_parent class=ISymbol>gdTransparent</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsS.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsS.html
    new file mode 100644
    index 00000000000..20a148f56e9
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsS.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Special_spcColors><div class=IEntry><a href="../files/gd-h.html#Special_Colors" target=_parent class=ISymbol>Special Colors</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesB.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesB.html
    new file mode 100644
    index 00000000000..42f9d2e4399
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesB.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_BMP_spcIO><div class=IEntry><a href="../files/gd_bmp-c.html#BMP_IO" target=_parent class=ISymbol>BMP IO</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesC.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesC.html
    new file mode 100644
    index 00000000000..ca704a1d332
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesC.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Color_spcQuantization><div class=IEntry><a href="../files/gd_topal-c.html#Color_Quantization" target=_parent class=ISymbol>Color Quantization</a></div></div><div class=SRResult id=SR_Cropping><div class=IEntry><a href="../files/gd_crop-c.html#Cropping" target=_parent class=ISymbol>Cropping</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesF.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesF.html
    new file mode 100644
    index 00000000000..e079370e1ea
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesF.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_FreeType_spcfont_spcrendering><div class=IEntry><a href="../files/gdft-c.html#FreeType_font_rendering" target=_parent class=ISymbol>FreeType font rendering</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesG.html
    new file mode 100644
    index 00000000000..d1fd7e00a48
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesG.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_GD_spcIO><div class=IEntry><a href="../files/gd_gd-c.html#GD_IO" target=_parent class=ISymbol>GD IO</a></div></div><div class=SRResult id=SR_gd_perc><div class=IEntry><a href="../files/gd-c.html#gd.c" target=_parent class=ISymbol>gd.c</a></div></div><div class=SRResult id=SR_gd_perh><div class=IEntry><a href="../files/gd-h.html#gd.h" target=_parent class=ISymbol>gd.h</a></div></div><div class=SRResult id=SR_gd_undfilename_perc><div class=IEntry><a href="../files/gd_filename-c.html#gd_filename.c" target=_parent class=ISymbol>gd_filename.c</a></div></div><div class=SRResult id=SR_gd_undinterpolation_perc><div class=IEntry><a href="../files/gd_interpolation-c.html#gd_interpolation.c" target=_parent class=ISymbol>gd_interpolation.c</a></div></div><div class=SRResult id=SR_gd_undio_perh><div class=IEntry><a href="../files/gd_io-h.html#gd_io.h" target=_parent class=ISymbol>gd_io.h</a></div></div><div class=SRResult id=SR_gd_undio_unddp_perc><div class=IEntry><a href="../files/gd_io_dp-c.html#gd_io_dp.c" target=_parent class=ISymbol>gd_io_dp.c</a></div></div><div class=SRResult id=SR_gd_undss_perc><div class=IEntry><a href="../files/gd_ss-c.html#gd_ss.c" target=_parent class=ISymbol>gd_ss.c</a></div></div><div class=SRResult id=SR_gd_undversion_perc><div class=IEntry><a href="../files/gd_version-c.html#gd_version.c" target=_parent class=ISymbol>gd_version.c</a></div></div><div class=SRResult id=SR_GD2_spcIO><div class=IEntry><a href="../files/gd_gd2-c.html#GD2_IO" target=_parent class=ISymbol>GD2 IO</a></div></div><div class=SRResult id=SR_gdfx_perc><div class=IEntry><a href="../files/gdfx-c.html#gdfx.c" target=_parent class=ISymbol>gdfx.c</a></div></div><div class=SRResult id=SR_Giant_spcFont><div class=IEntry><a href="../files/gdfontg-c.html#Giant_Font" target=_parent class=ISymbol>Giant Font</a></div></div><div class=SRResult id=SR_GIF_spcInput><div class=IEntry><a href="../files/gd_gif_in-c.html#GIF_Input" target=_parent class=ISymbol>GIF Input</a></div></div><div class=SRResult id=SR_GIF_spcOutput><div class=IEntry><a href="../files/gd_gif_out-c.html#GIF_Output" target=_parent class=ISymbol>GIF Output</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesI.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesI.html
    new file mode 100644
    index 00000000000..3e1ecb8616d
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesI.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Image_spcFilters><div class=IEntry><a href="../files/gd_filter-c.html#Image_Filters" target=_parent class=ISymbol>Image Filters</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesJ.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesJ.html
    new file mode 100644
    index 00000000000..320ae5c3c78
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesJ.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_JPEG_spcIO><div class=IEntry><a href="../files/gd_jpeg-c.html#JPEG_IO" target=_parent class=ISymbol>JPEG IO</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesL.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesL.html
    new file mode 100644
    index 00000000000..eeab3ebe450
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesL.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Large_spcFont><div class=IEntry><a href="../files/gdfontl-c.html#Large_Font" target=_parent class=ISymbol>Large Font</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesM.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesM.html
    new file mode 100644
    index 00000000000..0d22cccd927
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesM.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Medium_spcBold_spcFont><div class=IEntry><a href="../files/gdfontmb-c.html#Medium_Bold_Font" target=_parent class=ISymbol>Medium Bold Font</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesP.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesP.html
    new file mode 100644
    index 00000000000..b9fc7e4432e
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesP.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_PNG_spcIO><div class=IEntry><a href="../files/gd_png-c.html#PNG_IO" target=_parent class=ISymbol>PNG IO</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesS.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesS.html
    new file mode 100644
    index 00000000000..35205943b6d
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesS.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Small_spcFont><div class=IEntry><a href="../files/gdfonts-c.html#Small_Font" target=_parent class=ISymbol>Small Font</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesT.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesT.html
    new file mode 100644
    index 00000000000..2312a68c4f4
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesT.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_TGA_spcInput><div class=IEntry><a href="../files/gd_tga-c.html#TGA_Input" target=_parent class=ISymbol>TGA Input</a></div></div><div class=SRResult id=SR_TIFF_spcIO><div class=IEntry><a href="../files/gd_tiff-c.html#TIFF_IO" target=_parent class=ISymbol>TIFF IO</a></div></div><div class=SRResult id=SR_Tiny_spcFont><div class=IEntry><a href="../files/gdfontt-c.html#Tiny_Font" target=_parent class=ISymbol>Tiny Font</a></div></div><div class=SRResult id=SR_Transformations><div class=IEntry><a href="../files/gd_transform-c.html#Transformations" target=_parent class=ISymbol>Transformations</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesW.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesW.html
    new file mode 100644
    index 00000000000..65a551d6c74
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesW.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_WBMP_spcIO><div class=IEntry><a href="../files/gd_wbmp-c.html#WBMP_IO" target=_parent class=ISymbol>WBMP IO</a></div></div><div class=SRResult id=SR_WebP_spcIO><div class=IEntry><a href="../files/gd_webp-c.html#WebP_IO" target=_parent class=ISymbol>WebP IO</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesX.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesX.html
    new file mode 100644
    index 00000000000..a1e46bc3837
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesX.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_XBM_spcIO><div class=IEntry><a href="../files/gd_xbm-c.html#XBM_IO" target=_parent class=ISymbol>XBM IO</a></div></div><div class=SRResult id=SR_XPM_spcInput><div class=IEntry><a href="../files/gdxpm-c.html#XPM_Input" target=_parent class=ISymbol>XPM Input</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FunctionsG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FunctionsG.html
    new file mode 100644
    index 00000000000..6fbfa3b60b1
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FunctionsG.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_gdAffineApplyToPointF><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineApplyToPointF" target=_parent class=ISymbol>gdAffineApplyToPointF</a></div></div><div class=SRResult id=SR_gdAffineConcat><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineConcat" target=_parent class=ISymbol>gdAffineConcat</a></div></div><div class=SRResult id=SR_gdAffineEqual><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineEqual" target=_parent class=ISymbol>gdAffineEqual</a></div></div><div class=SRResult id=SR_gdAffineFlip><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineFlip" target=_parent class=ISymbol>gdAffineFlip</a></div></div><div class=SRResult id=SR_gdAffineIdentity><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineIdentity" target=_parent class=ISymbol>gdAffineIdentity</a></div></div><div class=SRResult id=SR_gdAffineInvert><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineInvert" target=_parent class=ISymbol>gdAffineInvert</a></div></div><div class=SRResult id=SR_gdAffineRectilinear><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineRectilinear" target=_parent class=ISymbol>gdAffineRectilinear</a></div></div><div class=SRResult id=SR_gdAffineRotate><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineRotate" target=_parent class=ISymbol>gdAffineRotate</a></div></div><div class=SRResult id=SR_gdAffineScale><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineScale" target=_parent class=ISymbol>gdAffineScale</a></div></div><div class=SRResult id=SR_gdAffineShearHorizontal><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineShearHorizontal" target=_parent class=ISymbol>gdAffineShearHorizontal</a></div></div><div class=SRResult id=SR_gdAffineShearVertical><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineShearVertical" target=_parent class=ISymbol>gdAffineShearVertical</a></div></div><div class=SRResult id=SR_gdAffineTranslate><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineTranslate" target=_parent class=ISymbol>gdAffineTranslate</a></div></div><div class=SRResult id=SR_gdAlphaBlend><div class=IEntry><a href="../files/gd-c.html#gdAlphaBlend" target=_parent class=ISymbol>gdAlphaBlend</a></div></div><div class=SRResult id=SR_gdClearErrorMethod><div class=IEntry><a href="../files/gd-c.html#gdClearErrorMethod" target=_parent class=ISymbol>gdClearErrorMethod</a></div></div><div class=SRResult id=SR_gdColorMapLookup><div class=IEntry><a href="../files/gd_color_map-c.html#gdColorMapLookup" target=_parent class=ISymbol>gdColorMapLookup</a></div></div><div class=SRResult id=SR_gdDPExtractData><div class=IEntry><a href="../files/gd_io_dp-c.html#gdDPExtractData" target=_parent class=ISymbol>gdDPExtractData</a></div></div><div class=SRResult id=SR_gdExtraVersion><div class=IEntry><a href="../files/gd_version-c.html#gdExtraVersion" target=_parent class=ISymbol>gdExtraVersion</a></div></div><div class=SRResult id=SR_gdFontCacheSetup><div class=IEntry><a href="../files/gdft-c.html#gdFontCacheSetup" target=_parent class=ISymbol>gdFontCacheSetup</a></div></div><div class=SRResult id=SR_gdFontCacheShutdown><div class=IEntry><a href="../files/gdft-c.html#gdFontCacheShutdown" target=_parent class=ISymbol>gdFontCacheShutdown</a></div></div><div class=SRResult id=SR_gdFontGetGiant><div class=IEntry><a href="../files/gdfontg-c.html#gdFontGetGiant" target=_parent class=ISymbol>gdFontGetGiant</a></div></div><div class=SRResult id=SR_gdFontGetLarge><div class=IEntry><a href="../files/gdfontl-c.html#gdFontGetLarge" target=_parent class=ISymbol>gdFontGetLarge</a></div></div><div class=SRResult id=SR_gdFontGetMediumBold><div class=IEntry><a href="../files/gdfontmb-c.html#gdFontGetMediumBold" target=_parent class=ISymbol>gdFontGetMediumBold</a></div></div><div class=SRResult id=SR_gdFontGetSmall><div class=IEntry><a href="../files/gdfonts-c.html#gdFontGetSmall" target=_parent class=ISymbol>gdFontGetSmall</a></div></div><div class=SRResult id=SR_gdFontGetTiny><div class=IEntry><a href="../files/gdfontt-c.html#gdFontGetTiny" target=_parent class=ISymbol>gdFontGetTiny</a></div></div><div class=SRResult id=SR_gdFree><div class=IEntry><a href="../files/gdhelpers-c.html#gdFree" target=_parent class=ISymbol>gdFree</a></div></div><div class=SRResult id=SR_gdFreeFontCache><div class=IEntry><a href="../files/gdft-c.html#gdFreeFontCache" target=_parent class=ISymbol>gdFreeFontCache</a></div></div><div class=SRResult id=SR_gdFTUseFontConfig><div class=IEntry><a href="../files/gdft-c.html#gdFTUseFontConfig" target=_parent class=ISymbol>gdFTUseFontConfig</a></div></div><div class=SRResult id=SR_gdImageAABlend><div class=IEntry><a href="../files/gd-c.html#gdImageAABlend" target=_parent class=ISymbol>gdImageAABlend</a></div></div><div class=SRResult id=SR_gdImageAlphaBlending><div class=IEntry><a href="../files/gd-c.html#gdImageAlphaBlending" target=_parent class=ISymbol>gdImageAlphaBlending</a></div></div><div class=SRResult id=SR_gdImageArc><div class=IEntry><a href="../files/gd-c.html#gdImageArc" target=_parent class=ISymbol>gdImageArc</a></div></div><div class=SRResult id=SR_gdImageBmp><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmp" target=_parent class=ISymbol>gdImageBmp</a></div></div><div class=SRResult id=SR_gdImageBmpCtx><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmpCtx" target=_parent class=ISymbol>gdImageBmpCtx</a></div></div><div class=SRResult id=SR_gdImageBmpPtr><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmpPtr" target=_parent class=ISymbol>gdImageBmpPtr</a></div></div><div class=SRResult id=SR_gdImageBoundsSafe><div class=IEntry><a href="../files/gd-c.html#gdImageBoundsSafe" target=_parent class=ISymbol>gdImageBoundsSafe</a></div></div><div class=SRResult id=SR_gdImageBrightness><div class=IEntry><a href="../files/gd_filter-c.html#gdImageBrightness" target=_parent class=ISymbol>gdImageBrightness</a></div></div><div class=SRResult id=SR_gdImageChar><div class=IEntry><a href="../files/gd-c.html#gdImageChar" target=_parent class=ISymbol>gdImageChar</a></div></div><div class=SRResult id=SR_gdImageCharUp><div class=IEntry><a href="../files/gd-c.html#gdImageCharUp" target=_parent class=ISymbol>gdImageCharUp</a></div></div><div class=SRResult id=SR_gdImageClone><div class=IEntry><a href="../files/gd-c.html#gdImageClone" target=_parent class=ISymbol>gdImageClone</a></div></div><div class=SRResult id=SR_gdImageColor><div class=IEntry><a href="../files/gd_filter-c.html#gdImageColor" target=_parent class=ISymbol>gdImageColor</a></div></div><div class=SRResult id=SR_gdImageColorAllocate><div class=IEntry><a href="../files/gd-c.html#gdImageColorAllocate" target=_parent class=ISymbol>gdImageColorAllocate</a></div></div><div class=SRResult id=SR_gdImageColorAllocateAlpha><div class=IEntry><a href="../files/gd-c.html#gdImageColorAllocateAlpha" target=_parent class=ISymbol>gdImageColorAllocateAlpha</a></div></div><div class=SRResult id=SR_gdImageColorClosest><div class=IEntry><a href="../files/gd-c.html#gdImageColorClosest" target=_parent class=ISymbol>gdImageColorClosest</a></div></div><div class=SRResult id=SR_gdImageColorClosestAlpha><div class=IEntry><a href="../files/gd-c.html#gdImageColorClosestAlpha" target=_parent class=ISymbol>gdImageColorClosestAlpha</a></div></div><div class=SRResult id=SR_gdImageColorClosestHWB><div class=IEntry><a href="../files/gd-c.html#gdImageColorClosestHWB" target=_parent class=ISymbol>gdImageColorClosestHWB</a></div></div><div class=SRResult id=SR_gdImageColorDeallocate><div class=IEntry><a href="../files/gd-c.html#gdImageColorDeallocate" target=_parent class=ISymbol>gdImageColorDeallocate</a></div></div><div class=SRResult id=SR_gdImageColorExact><div class=IEntry><a href="../files/gd-c.html#gdImageColorExact" target=_parent class=ISymbol>gdImageColorExact</a></div></div><div class=SRResult id=SR_gdImageColorExactAlpha><div class=IEntry><a href="../files/gd-c.html#gdImageColorExactAlpha" target=_parent class=ISymbol>gdImageColorExactAlpha</a></div></div><div class=SRResult id=SR_gdImageColorMatch><div class=IEntry><a href="../files/gd_color_match-c.html#gdImageColorMatch" target=_parent class=ISymbol>gdImageColorMatch</a></div></div><div class=SRResult id=SR_gdImageColorReplace><div class=IEntry><a href="../files/gd-c.html#gdImageColorReplace" target=_parent class=ISymbol>gdImageColorReplace</a></div></div><div class=SRResult id=SR_gdImageColorReplaceArray><div class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceArray" target=_parent class=ISymbol>gdImageColorReplaceArray</a></div></div><div class=SRResult id=SR_gdImageColorReplaceCallback><div class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceCallback" target=_parent class=ISymbol>gdImageColorReplaceCallback</a></div></div><div class=SRResult id=SR_gdImageColorReplaceThreshold><div class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceThreshold" target=_parent class=ISymbol>gdImageColorReplaceThreshold</a></div></div><div class=SRResult id=SR_gdImageColorResolve><div class=IEntry><a href="../files/gd-c.html#gdImageColorResolve" target=_parent class=ISymbol>gdImageColorResolve</a></div></div><div class=SRResult id=SR_gdImageColorResolveAlpha><div class=IEntry><a href="../files/gd-c.html#gdImageColorResolveAlpha" target=_parent class=ISymbol>gdImageColorResolveAlpha</a></div></div><div class=SRResult id=SR_gdImageColorTransparent><div class=IEntry><a href="../files/gd-c.html#gdImageColorTransparent" target=_parent class=ISymbol>gdImageColorTransparent</a></div></div><div class=SRResult id=SR_gdImageCompare><div class=IEntry><a href="../files/gd-c.html#gdImageCompare" target=_parent class=ISymbol>gdImageCompare</a></div></div><div class=SRResult id=SR_gdImageContrast><div class=IEntry><a href="../files/gd_filter-c.html#gdImageContrast" target=_parent class=ISymbol>gdImageContrast</a></div></div><div class=SRResult id=SR_gdImageConvolution><div class=IEntry><a href="../files/gd_filter-c.html#gdImageConvolution" target=_parent class=ISymbol>gdImageConvolution</a></div></div><div class=SRResult id=SR_gdImageCopy><div class=IEntry><a href="../files/gd-c.html#gdImageCopy" target=_parent class=ISymbol>gdImageCopy</a></div></div><div class=SRResult id=SR_gdImageCopyGaussianBlurred><div class=IEntry><a href="../files/gd_filter-c.html#gdImageCopyGaussianBlurred" target=_parent class=ISymbol>gdImageCopyGaussianBlurred</a></div></div><div class=SRResult id=SR_gdImageCopyMerge><div class=IEntry><a href="../files/gd-c.html#gdImageCopyMerge" target=_parent class=ISymbol>gdImageCopyMerge</a></div></div><div class=SRResult id=SR_gdImageCopyMergeGray><div class=IEntry><a href="../files/gd-c.html#gdImageCopyMergeGray" target=_parent class=ISymbol>gdImageCopyMergeGray</a></div></div><div class=SRResult id=SR_gdImageCopyResampled><div class=IEntry><a href="../files/gd-c.html#gdImageCopyResampled" target=_parent class=ISymbol>gdImageCopyResampled</a></div></div><div class=SRResult id=SR_gdImageCopyResized><div class=IEntry><a href="../files/gd-c.html#gdImageCopyResized" target=_parent class=ISymbol>gdImageCopyResized</a></div></div><div class=SRResult id=SR_gdImageCopyRotated><div class=IEntry><a href="../files/gd-c.html#gdImageCopyRotated" target=_parent class=ISymbol>gdImageCopyRotated</a></div></div><div class=SRResult id=SR_gdImageCreate><div class=IEntry><a href="../files/gd-c.html#gdImageCreate" target=_parent class=ISymbol>gdImageCreate</a></div></div><div class=SRResult id=SR_gdImageCreateFromBmp><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmp" target=_parent class=ISymbol>gdImageCreateFromBmp</a></div></div><div class=SRResult id=SR_gdImageCreateFromBmpCtx><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmpCtx" target=_parent class=ISymbol>gdImageCreateFromBmpCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromBmpPtr><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmpPtr" target=_parent class=ISymbol>gdImageCreateFromBmpPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromFile><div class=IEntry><a href="../files/gd_filename-c.html#gdImageCreateFromFile" target=_parent class=ISymbol>gdImageCreateFromFile</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd><div class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGd" target=_parent class=ISymbol>gdImageCreateFromGd</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2" target=_parent class=ISymbol>gdImageCreateFromGd2</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2Ctx><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Ctx" target=_parent class=ISymbol>gdImageCreateFromGd2Ctx</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2Part><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Part" target=_parent class=ISymbol>gdImageCreateFromGd2Part</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2PartCtx><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2PartCtx" target=_parent class=ISymbol>gdImageCreateFromGd2PartCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2PartPtr><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2PartPtr" target=_parent class=ISymbol>gdImageCreateFromGd2PartPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2Ptr><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Ptr" target=_parent class=ISymbol>gdImageCreateFromGd2Ptr</a></div></div><div class=SRResult id=SR_gdImageCreateFromGdCtx><div class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGdCtx" target=_parent class=ISymbol>gdImageCreateFromGdCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromGdPtr><div class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGdPtr" target=_parent class=ISymbol>gdImageCreateFromGdPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromGif><div class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGif" target=_parent class=ISymbol>gdImageCreateFromGif</a></div></div><div class=SRResult id=SR_gdImageCreateFromGifCtx><div class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGifCtx" target=_parent class=ISymbol>gdImageCreateFromGifCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromGifPtr><div class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGifPtr" target=_parent class=ISymbol>gdImageCreateFromGifPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpeg><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpeg" target=_parent class=ISymbol>gdImageCreateFromJpeg</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpegCtx><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegCtx" target=_parent class=ISymbol>gdImageCreateFromJpegCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpegCtxEx><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegCtxEx" target=_parent class=ISymbol>gdImageCreateFromJpegCtxEx</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpegEx><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegEx" target=_parent class=ISymbol>gdImageCreateFromJpegEx</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpegPtr><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegPtr" target=_parent class=ISymbol>gdImageCreateFromJpegPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpegPtrEx><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegPtrEx" target=_parent class=ISymbol>gdImageCreateFromJpegPtrEx</a></div></div><div class=SRResult id=SR_gdImageCreateFromPng><div class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPng" target=_parent class=ISymbol>gdImageCreateFromPng</a></div></div><div class=SRResult id=SR_gdImageCreateFromPngCtx><div class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPngCtx" target=_parent class=ISymbol>gdImageCreateFromPngCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromPngPtr><div class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPngPtr" target=_parent class=ISymbol>gdImageCreateFromPngPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromPngSource><div class=IEntry><a href="../files/gd_ss-c.html#gdImageCreateFromPngSource" target=_parent class=ISymbol>gdImageCreateFromPngSource</a></div></div><div class=SRResult id=SR_gdImageCreateFromTga><div class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTga" target=_parent class=ISymbol>gdImageCreateFromTga</a></div></div><div class=SRResult id=SR_gdImageCreateFromTgaCtx><div class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTgaCtx" target=_parent class=ISymbol>gdImageCreateFromTgaCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromTgaPtr><div class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTgaPtr" target=_parent class=ISymbol>gdImageCreateFromTgaPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromTIFF><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTIFF" target=_parent class=ISymbol>gdImageCreateFromTIFF</a></div></div><div class=SRResult id=SR_gdImageCreateFromTiffCtx><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTiffCtx" target=_parent class=ISymbol>gdImageCreateFromTiffCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromTiffPtr><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTiffPtr" target=_parent class=ISymbol>gdImageCreateFromTiffPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromWBMP><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMP" target=_parent class=ISymbol>gdImageCreateFromWBMP</a></div></div><div class=SRResult id=SR_gdImageCreateFromWBMPCtx><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMPCtx" target=_parent class=ISymbol>gdImageCreateFromWBMPCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromWBMPPtr><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMPPtr" target=_parent class=ISymbol>gdImageCreateFromWBMPPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromWebp><div class=IEntry><a href="../files/gd_webp-c.html#gdImageCreateFromWebp" target=_parent class=ISymbol>gdImageCreateFromWebp</a></div></div><div class=SRResult id=SR_gdImageCreateFromWebpCtx><div class=IEntry><a href="../files/gd_webp-c.html#gdImageCreateFromWebpCtx" target=_parent class=ISymbol>gdImageCreateFromWebpCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromWebpPtr><div class=IEntry><a href="../files/gd_webp-c.html#gdImageCreateFromWebpPtr" target=_parent class=ISymbol>gdImageCreateFromWebpPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromXbm><div class=IEntry><a href="../files/gd_xbm-c.html#gdImageCreateFromXbm" target=_parent class=ISymbol>gdImageCreateFromXbm</a></div></div><div class=SRResult id=SR_gdImageCreateFromXpm><div class=IEntry><a href="../files/gdxpm-c.html#gdImageCreateFromXpm" target=_parent class=ISymbol>gdImageCreateFromXpm</a></div></div><div class=SRResult id=SR_gdImageCreatePaletteFromTrueColor><div class=IEntry><a href="../files/gd_topal-c.html#gdImageCreatePaletteFromTrueColor" target=_parent class=ISymbol>gdImageCreatePaletteFromTrueColor</a></div></div><div class=SRResult id=SR_gdImageCreateTrueColor><div class=IEntry><a href="../files/gd-c.html#gdImageCreateTrueColor" target=_parent class=ISymbol>gdImageCreateTrueColor</a></div></div><div class=SRResult id=SR_gdImageCrop><div class=IEntry><a href="../files/gd_crop-c.html#gdImageCrop" target=_parent class=ISymbol>gdImageCrop</a></div></div><div class=SRResult id=SR_gdImageCropAuto><div class=IEntry><a href="../files/gd_crop-c.html#gdImageCropAuto" target=_parent class=ISymbol>gdImageCropAuto</a></div></div><div class=SRResult id=SR_gdImageCropThreshold><div class=IEntry><a href="../files/gd_crop-c.html#gdImageCropThreshold" target=_parent class=ISymbol>gdImageCropThreshold</a></div></div><div class=SRResult id=SR_gdImageDashedLine><div class=IEntry><a href="../files/gd-c.html#gdImageDashedLine" target=_parent class=ISymbol>gdImageDashedLine</a></div></div><div class=SRResult id=SR_gdImageDestroy><div class=IEntry><a href="../files/gd-c.html#gdImageDestroy" target=_parent class=ISymbol>gdImageDestroy</a></div></div><div class=SRResult id=SR_gdImageEdgeDetectQuick><div class=IEntry><a href="../files/gd_filter-c.html#gdImageEdgeDetectQuick" target=_parent class=ISymbol>gdImageEdgeDetectQuick</a></div></div><div class=SRResult id=SR_gdImageEllipse><div class=IEntry><a href="../files/gd-c.html#gdImageEllipse" target=_parent class=ISymbol>gdImageEllipse</a></div></div><div class=SRResult id=SR_gdImageEmboss><div class=IEntry><a href="../files/gd_filter-c.html#gdImageEmboss" target=_parent class=ISymbol>gdImageEmboss</a></div></div><div class=SRResult id=SR_gdImageFile><div class=IEntry><a href="../files/gd_filename-c.html#gdImageFile" target=_parent class=ISymbol>gdImageFile</a></div></div><div class=SRResult id=SR_gdImageFill><div class=IEntry><a href="../files/gd-c.html#gdImageFill" target=_parent class=ISymbol>gdImageFill</a></div></div><div class=SRResult id=SR_gdImageFilledArc><div class=IEntry><a href="../files/gd-c.html#gdImageFilledArc" target=_parent class=ISymbol>gdImageFilledArc</a></div></div><div class=SRResult id=SR_gdImageFilledEllipse><div class=IEntry><a href="../files/gd-c.html#gdImageFilledEllipse" target=_parent class=ISymbol>gdImageFilledEllipse</a></div></div><div class=SRResult id=SR_gdImageFilledPolygon><div class=IEntry><a href="../files/gd-c.html#gdImageFilledPolygon" target=_parent class=ISymbol>gdImageFilledPolygon</a></div></div><div class=SRResult id=SR_gdImageFilledRectangle><div class=IEntry><a href="../files/gd-c.html#gdImageFilledRectangle" target=_parent class=ISymbol>gdImageFilledRectangle</a></div></div><div class=SRResult id=SR_gdImageFillToBorder><div class=IEntry><a href="../files/gd-c.html#gdImageFillToBorder" target=_parent class=ISymbol>gdImageFillToBorder</a></div></div><div class=SRResult id=SR_gdImageFlipBoth><div class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipBoth" target=_parent class=ISymbol>gdImageFlipBoth</a></div></div><div class=SRResult id=SR_gdImageFlipHorizontal><div class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipHorizontal" target=_parent class=ISymbol>gdImageFlipHorizontal</a></div></div><div class=SRResult id=SR_gdImageFlipVertical><div class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipVertical" target=_parent class=ISymbol>gdImageFlipVertical</a></div></div><div class=SRResult id=SR_gdImageGaussianBlur><div class=IEntry><a href="../files/gd_filter-c.html#gdImageGaussianBlur" target=_parent class=ISymbol>gdImageGaussianBlur</a></div></div><div class=SRResult id=SR_gdImageGd><div class=IEntry><a href="../files/gd_gd-c.html#gdImageGd" target=_parent class=ISymbol>gdImageGd</a></div></div><div class=SRResult id=SR_gdImageGd2><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageGd2" target=_parent class=ISymbol>gdImageGd2</a></div></div><div class=SRResult id=SR_gdImageGd2Ptr><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageGd2Ptr" target=_parent class=ISymbol>gdImageGd2Ptr</a></div></div><div class=SRResult id=SR_gdImageGdPtr><div class=IEntry><a href="../files/gd_gd-c.html#gdImageGdPtr" target=_parent class=ISymbol>gdImageGdPtr</a></div></div><div class=SRResult id=SR_gdImageGetClip><div class=IEntry><a href="../files/gd-c.html#gdImageGetClip" target=_parent class=ISymbol>gdImageGetClip</a></div></div><div class=SRResult id=SR_gdImageGetInterpolationMethod><div class=IEntry><a href="../files/gd_interpolation-c.html#gdImageGetInterpolationMethod" target=_parent class=ISymbol>gdImageGetInterpolationMethod</a></div></div><div class=SRResult id=SR_gdImageGetPixel><div class=IEntry><a href="../files/gd-c.html#gdImageGetPixel" target=_parent class=ISymbol>gdImageGetPixel</a></div></div><div class=SRResult id=SR_gdImageGetTrueColorPixel><div class=IEntry><a href="../files/gd-c.html#gdImageGetTrueColorPixel" target=_parent class=ISymbol>gdImageGetTrueColorPixel</a></div></div><div class=SRResult id=SR_gdImageGif><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGif" target=_parent class=ISymbol>gdImageGif</a></div></div><div class=SRResult id=SR_gdImageGifAnimAdd><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAdd" target=_parent class=ISymbol>gdImageGifAnimAdd</a></div></div><div class=SRResult id=SR_gdImageGifAnimAddCtx><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAddCtx" target=_parent class=ISymbol>gdImageGifAnimAddCtx</a></div></div><div class=SRResult id=SR_gdImageGifAnimAddPtr><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAddPtr" target=_parent class=ISymbol>gdImageGifAnimAddPtr</a></div></div><div class=SRResult id=SR_gdImageGifAnimBegin><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBegin" target=_parent class=ISymbol>gdImageGifAnimBegin</a></div></div><div class=SRResult id=SR_gdImageGifAnimBeginCtx><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBeginCtx" target=_parent class=ISymbol>gdImageGifAnimBeginCtx</a></div></div><div class=SRResult id=SR_gdImageGifAnimBeginPtr><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBeginPtr" target=_parent class=ISymbol>gdImageGifAnimBeginPtr</a></div></div><div class=SRResult id=SR_gdImageGifAnimEnd><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEnd" target=_parent class=ISymbol>gdImageGifAnimEnd</a></div></div><div class=SRResult id=SR_gdImageGifAnimEndCtx><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEndCtx" target=_parent class=ISymbol>gdImageGifAnimEndCtx</a></div></div><div class=SRResult id=SR_gdImageGifAnimEndPtr><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEndPtr" target=_parent class=ISymbol>gdImageGifAnimEndPtr</a></div></div><div class=SRResult id=SR_gdImageGifCtx><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifCtx" target=_parent class=ISymbol>gdImageGifCtx</a></div></div><div class=SRResult id=SR_gdImageGifPtr><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifPtr" target=_parent class=ISymbol>gdImageGifPtr</a></div></div><div class=SRResult id=SR_gdImageGrayScale><div class=IEntry><a href="../files/gd_filter-c.html#gdImageGrayScale" target=_parent class=ISymbol>gdImageGrayScale</a></div></div><div class=SRResult id=SR_gdImageInterlace><div class=IEntry><a href="../files/gd-c.html#gdImageInterlace" target=_parent class=ISymbol>gdImageInterlace</a></div></div><div class=SRResult id=SR_gdImageJpeg><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpeg" target=_parent class=ISymbol>gdImageJpeg</a></div></div><div class=SRResult id=SR_gdImageJpegCtx><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpegCtx" target=_parent class=ISymbol>gdImageJpegCtx</a></div></div><div class=SRResult id=SR_gdImageJpegPtr><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpegPtr" target=_parent class=ISymbol>gdImageJpegPtr</a></div></div><div class=SRResult id=SR_gdImageLine><div class=IEntry><a href="../files/gd-c.html#gdImageLine" target=_parent class=ISymbol>gdImageLine</a></div></div><div class=SRResult id=SR_gdImageMeanRemoval><div class=IEntry><a href="../files/gd_filter-c.html#gdImageMeanRemoval" target=_parent class=ISymbol>gdImageMeanRemoval</a></div></div><div class=SRResult id=SR_gdImageNegate><div class=IEntry><a href="../files/gd_filter-c.html#gdImageNegate" target=_parent class=ISymbol>gdImageNegate</a></div></div><div class=SRResult id=SR_gdImageNeuQuant><div class=IEntry><a href="../files/gd_nnquant-c.html#gdImageNeuQuant" target=_parent class=ISymbol>gdImageNeuQuant</a></div></div><div class=SRResult id=SR_gdImageOpenPolygon><div class=IEntry><a href="../files/gd-c.html#gdImageOpenPolygon" target=_parent class=ISymbol>gdImageOpenPolygon</a></div></div><div class=SRResult id=SR_gdImagePaletteCopy><div class=IEntry><a href="../files/gd-c.html#gdImagePaletteCopy" target=_parent class=ISymbol>gdImagePaletteCopy</a></div></div><div class=SRResult id=SR_gdImagePaletteToTrueColor><div class=IEntry><a href="../files/gd-c.html#gdImagePaletteToTrueColor" target=_parent class=ISymbol>gdImagePaletteToTrueColor</a></div></div><div class=SRResult id=SR_gdImagePixelate><div class=IEntry><a href="../files/gd_filter-c.html#gdImagePixelate" target=_parent class=ISymbol>gdImagePixelate</a></div></div><div class=SRResult id=SR_gdImagePng><div class=IEntry><a href="../files/gd_png-c.html#gdImagePng" target=_parent class=ISymbol>gdImagePng</a></div></div><div class=SRResult id=SR_gdImagePngCtx><div class=IEntry><a href="../files/gd_png-c.html#gdImagePngCtx" target=_parent class=ISymbol>gdImagePngCtx</a></div></div><div class=SRResult id=SR_gdImagePngCtxEx><div class=IEntry><a href="../files/gd_png-c.html#gdImagePngCtxEx" target=_parent class=ISymbol>gdImagePngCtxEx</a></div></div><div class=SRResult id=SR_gdImagePngEx><div class=IEntry><a href="../files/gd_png-c.html#gdImagePngEx" target=_parent class=ISymbol>gdImagePngEx</a></div></div><div class=SRResult id=SR_gdImagePngPtr><div class=IEntry><a href="../files/gd_png-c.html#gdImagePngPtr" target=_parent class=ISymbol>gdImagePngPtr</a></div></div><div class=SRResult id=SR_gdImagePngPtrEx><div class=IEntry><a href="../files/gd_png-c.html#gdImagePngPtrEx" target=_parent class=ISymbol>gdImagePngPtrEx</a></div></div><div class=SRResult id=SR_gdImagePngToSink><div class=IEntry><a href="../files/gd_ss-c.html#gdImagePngToSink" target=_parent class=ISymbol>gdImagePngToSink</a></div></div><div class=SRResult id=SR_gdImagePolygon><div class=IEntry><a href="../files/gd-c.html#gdImagePolygon" target=_parent class=ISymbol>gdImagePolygon</a></div></div><div class=SRResult id=SR_gdImageRectangle><div class=IEntry><a href="../files/gd-c.html#gdImageRectangle" target=_parent class=ISymbol>gdImageRectangle</a></div></div><div class=SRResult id=SR_gdImageRotateInterpolated><div class=IEntry><a href="../files/gd_interpolation-c.html#gdImageRotateInterpolated" target=_parent class=ISymbol>gdImageRotateInterpolated</a></div></div><div class=SRResult id=SR_gdImageSaveAlpha><div class=IEntry><a href="../files/gd-c.html#gdImageSaveAlpha" target=_parent class=ISymbol>gdImageSaveAlpha</a></div></div><div class=SRResult id=SR_gdImageScale><div class=IEntry><a href="../files/gd_interpolation-c.html#gdImageScale" target=_parent class=ISymbol>gdImageScale</a></div></div><div class=SRResult id=SR_gdImageScatter><div class=IEntry><a href="../files/gd_filter-c.html#gdImageScatter" target=_parent class=ISymbol>gdImageScatter</a></div></div><div class=SRResult id=SR_gdImageScatterColor><div class=IEntry><a href="../files/gd_filter-c.html#gdImageScatterColor" target=_parent class=ISymbol>gdImageScatterColor</a></div></div><div class=SRResult id=SR_gdImageScatterEx><div class=IEntry><a href="../files/gd_filter-c.html#gdImageScatterEx" target=_parent class=ISymbol>gdImageScatterEx</a></div></div><div class=SRResult id=SR_gdImageSelectiveBlur><div class=IEntry><a href="../files/gd_filter-c.html#gdImageSelectiveBlur" target=_parent class=ISymbol>gdImageSelectiveBlur</a></div></div><div class=SRResult id=SR_gdImageSetAntiAliased><div class=IEntry><a href="../files/gd-c.html#gdImageSetAntiAliased" target=_parent class=ISymbol>gdImageSetAntiAliased</a></div></div><div class=SRResult id=SR_gdImageSetAntiAliasedDontBlend><div class=IEntry><a href="../files/gd-c.html#gdImageSetAntiAliasedDontBlend" target=_parent class=ISymbol>gdImageSetAntiAliasedDontBlend</a></div></div><div class=SRResult id=SR_gdImageSetBrush><div class=IEntry><a href="../files/gd-c.html#gdImageSetBrush" target=_parent class=ISymbol>gdImageSetBrush</a></div></div><div class=SRResult id=SR_gdImageSetClip><div class=IEntry><a href="../files/gd-c.html#gdImageSetClip" target=_parent class=ISymbol>gdImageSetClip</a></div></div><div class=SRResult id=SR_gdImageSetInterpolationMethod><div class=IEntry><a href="../files/gd_interpolation-c.html#gdImageSetInterpolationMethod" target=_parent class=ISymbol>gdImageSetInterpolationMethod</a></div></div><div class=SRResult id=SR_gdImageSetPixel><div class=IEntry><a href="../files/gd-c.html#gdImageSetPixel" target=_parent class=ISymbol>gdImageSetPixel</a></div></div><div class=SRResult id=SR_gdImageSetResolution><div class=IEntry><a href="../files/gd-c.html#gdImageSetResolution" target=_parent class=ISymbol>gdImageSetResolution</a></div></div><div class=SRResult id=SR_gdImageSetStyle><div class=IEntry><a href="../files/gd-c.html#gdImageSetStyle" target=_parent class=ISymbol>gdImageSetStyle</a></div></div><div class=SRResult id=SR_gdImageSetThickness><div class=IEntry><a href="../files/gd-c.html#gdImageSetThickness" target=_parent class=ISymbol>gdImageSetThickness</a></div></div><div class=SRResult id=SR_gdImageSetTile><div class=IEntry><a href="../files/gd-c.html#gdImageSetTile" target=_parent class=ISymbol>gdImageSetTile</a></div></div><div class=SRResult id=SR_gdImageSharpen><div class=IEntry><a href="../files/gdfx-c.html#gdImageSharpen" target=_parent class=ISymbol>gdImageSharpen</a></div></div><div class=SRResult id=SR_gdImageSmooth><div class=IEntry><a href="../files/gd_filter-c.html#gdImageSmooth" target=_parent class=ISymbol>gdImageSmooth</a></div></div><div class=SRResult id=SR_gdImageSquareToCircle><div class=IEntry><a href="../files/gdfx-c.html#gdImageSquareToCircle" target=_parent class=ISymbol>gdImageSquareToCircle</a></div></div><div class=SRResult id=SR_gdImageString><div class=IEntry><a href="../files/gd-c.html#gdImageString" target=_parent class=ISymbol>gdImageString</a></div></div><div class=SRResult id=SR_gdImageString16><div class=IEntry><a href="../files/gd-c.html#gdImageString16" target=_parent class=ISymbol>gdImageString16</a></div></div><div class=SRResult id=SR_gdImageStringFT><div class=IEntry><a href="../files/gdft-c.html#gdImageStringFT" target=_parent class=ISymbol>gdImageStringFT</a></div></div><div class=SRResult id=SR_gdImageStringFTCircle><div class=IEntry><a href="../files/gdfx-c.html#gdImageStringFTCircle" target=_parent class=ISymbol>gdImageStringFTCircle</a></div></div><div class=SRResult id=SR_gdImageStringFTEx><div class=IEntry><a href="../files/gdft-c.html#gdImageStringFTEx" target=_parent class=ISymbol>gdImageStringFTEx</a></div></div><div class=SRResult id=SR_gdImageStringTTF><div class=IEntry><a href="../files/gdft-c.html#gdImageStringTTF" target=_parent class=ISymbol>gdImageStringTTF</a></div></div><div class=SRResult id=SR_gdImageStringUp><div class=IEntry><a href="../files/gd-c.html#gdImageStringUp" target=_parent class=ISymbol>gdImageStringUp</a></div></div><div class=SRResult id=SR_gdImageStringUp16><div class=IEntry><a href="../files/gd-c.html#gdImageStringUp16" target=_parent class=ISymbol>gdImageStringUp16</a></div></div><div class=SRResult id=SR_gdImageTiff><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiff" target=_parent class=ISymbol>gdImageTiff</a></div></div><div class=SRResult id=SR_gdImageTiffCtx><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiffCtx" target=_parent class=ISymbol>gdImageTiffCtx</a></div></div><div class=SRResult id=SR_gdImageTiffPtr><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiffPtr" target=_parent class=ISymbol>gdImageTiffPtr</a></div></div><div class=SRResult id=SR_gdImageTrueColorToPalette><div class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPalette" target=_parent class=ISymbol>gdImageTrueColorToPalette</a></div></div><div class=SRResult id=SR_gdImageTrueColorToPaletteSetMethod><div class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPaletteSetMethod" target=_parent class=ISymbol>gdImageTrueColorToPaletteSetMethod</a></div></div><div class=SRResult id=SR_gdImageTrueColorToPaletteSetQuality><div class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPaletteSetQuality" target=_parent class=ISymbol>gdImageTrueColorToPaletteSetQuality</a></div></div><div class=SRResult id=SR_gdImageWBMP><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMP" target=_parent class=ISymbol>gdImageWBMP</a></div></div><div class=SRResult id=SR_gdImageWBMPCtx><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMPCtx" target=_parent class=ISymbol>gdImageWBMPCtx</a></div></div><div class=SRResult id=SR_gdImageWBMPPtr><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMPPtr" target=_parent class=ISymbol>gdImageWBMPPtr</a></div></div><div class=SRResult id=SR_gdImageWebp><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebp" target=_parent class=ISymbol>gdImageWebp</a></div></div><div class=SRResult id=SR_gdImageWebpCtx><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpCtx" target=_parent class=ISymbol>gdImageWebpCtx</a></div></div><div class=SRResult id=SR_gdImageWebpEx><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpEx" target=_parent class=ISymbol>gdImageWebpEx</a></div></div><div class=SRResult id=SR_gdImageWebpPtr><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpPtr" target=_parent class=ISymbol>gdImageWebpPtr</a></div></div><div class=SRResult id=SR_gdImageWebpPtrEx><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpPtrEx" target=_parent class=ISymbol>gdImageWebpPtrEx</a></div></div><div class=SRResult id=SR_gdImageXbmCtx><div class=IEntry><a href="../files/gd_xbm-c.html#gdImageXbmCtx" target=_parent class=ISymbol>gdImageXbmCtx</a></div></div><div class=SRResult id=SR_gdLayerMultiply><div class=IEntry><a href="../files/gd-c.html#gdLayerMultiply" target=_parent class=ISymbol>gdLayerMultiply</a></div></div><div class=SRResult id=SR_gdLayerOverlay><div class=IEntry><a href="../files/gd-c.html#gdLayerOverlay" target=_parent class=ISymbol>gdLayerOverlay</a></div></div><div class=SRResult id=SR_gdMajorVersion><div class=IEntry><a href="../files/gd_version-c.html#gdMajorVersion" target=_parent class=ISymbol>gdMajorVersion</a></div></div><div class=SRResult id=SR_gdMinorVersion><div class=IEntry><a href="../files/gd_version-c.html#gdMinorVersion" target=_parent class=ISymbol>gdMinorVersion</a></div></div><div class=SRResult id=SR_gdNewDynamicCtx><div class=IEntry><a href="../files/gd_io_dp-c.html#gdNewDynamicCtx" target=_parent class=ISymbol>gdNewDynamicCtx</a></div></div><div class=SRResult id=SR_gdNewDynamicCtxEx><div class=IEntry><a href="../files/gd_io_dp-c.html#gdNewDynamicCtxEx" target=_parent class=ISymbol>gdNewDynamicCtxEx</a></div></div><div class=SRResult id=SR_gdNewFileCtx><div class=IEntry><a href="../files/gd_io_file-c.html#gdNewFileCtx" target=_parent class=ISymbol>gdNewFileCtx</a></div></div><div class=SRResult id=SR_gdNewSSCtx><div class=IEntry><a href="../files/gd_io_ss-c.html#gdNewSSCtx" target=_parent class=ISymbol>gdNewSSCtx</a></div></div><div class=SRResult id=SR_gdReleaseVersion><div class=IEntry><a href="../files/gd_version-c.html#gdReleaseVersion" target=_parent class=ISymbol>gdReleaseVersion</a></div></div><div class=SRResult id=SR_gdSetErrorMethod><div class=IEntry><a href="../files/gd-c.html#gdSetErrorMethod" target=_parent class=ISymbol>gdSetErrorMethod</a></div></div><div class=SRResult id=SR_gdSupportsFileType><div class=IEntry><a href="../files/gd_filename-c.html#gdSupportsFileType" target=_parent class=ISymbol>gdSupportsFileType</a></div></div><div class=SRResult id=SR_gdTransformAffineBoundingBox><div class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineBoundingBox" target=_parent class=ISymbol>gdTransformAffineBoundingBox</a></div></div><div class=SRResult id=SR_gdTransformAffineCopy><div class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineCopy" target=_parent class=ISymbol>gdTransformAffineCopy</a></div></div><div class=SRResult id=SR_gdTransformAffineGetImage><div class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineGetImage" target=_parent class=ISymbol>gdTransformAffineGetImage</a></div></div><div class=SRResult id=SR_gdVersionString><div class=IEntry><a href="../files/gd_version-c.html#gdVersionString" target=_parent class=ISymbol>gdVersionString</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralA.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralA.html
    new file mode 100644
    index 00000000000..27194a2e78f
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralA.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Accessor_spcMacros><div class=IEntry><a href="../files/gd-h.html#Accessor_Macros" target=_parent class=ISymbol>Accessor Macros</a></div></div><div class=SRResult id=SR_Affine_spcTransformation><div class=IEntry><a href="../files/gd_interpolation-c.html#Affine_Transformation" target=_parent class=ISymbol>Affine Transformation</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralB.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralB.html
    new file mode 100644
    index 00000000000..42f9d2e4399
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralB.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_BMP_spcIO><div class=IEntry><a href="../files/gd_bmp-c.html#BMP_IO" target=_parent class=ISymbol>BMP IO</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralC.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralC.html
    new file mode 100644
    index 00000000000..4089be019df
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralC.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Cloning_spcand_spcCopying><div class=IEntry><a href="../files/gd-c.html#Cloning_and_Copying" target=_parent class=ISymbol>Cloning and Copying</a></div></div><div class=SRResult id=SR_Color><div class=IEntry><a href="../files/gd-c.html#Color" target=_parent class=ISymbol>Color</a></div></div><div class=SRResult id=SR_Color_spcComposition><div class=IEntry><a href="../files/gd-h.html#Color_Composition" target=_parent class=ISymbol>Color Composition</a></div></div><div class=SRResult id=SR_Color_spcDecomposition><div class=IEntry><a href="../files/gd-h.html#Color_Decomposition" target=_parent class=ISymbol>Color Decomposition</a></div></div><div class=SRResult id=SR_Color_spcQuantization><div class=IEntry><a href="javascript:searchResults.Toggle('SR_Color_spcQuantization')" class=ISymbol>Color Quantization</a><div class=ISubIndex><a href="../files/gd-h.html#Color_Quantization" target=_parent class=IFile>gd.h</a><a href="../files/gd_topal-c.html#Color_Quantization" target=_parent class=IFile>gd_topal.c</a></div></div></div><div class=SRResult id=SR_Colors><div class=IEntry><a href="../files/gd-h.html#Colors" target=_parent class=ISymbol>Colors</a></div></div><div class=SRResult id=SR_Creation_spcand_spcDestruction><div class=IEntry><a href="../files/gd-c.html#Creation_and_Destruction" target=_parent class=ISymbol>Creation and Destruction</a></div></div><div class=SRResult id=SR_Crop><div class=IEntry><a href="../files/gd-h.html#Crop" target=_parent class=ISymbol>Crop</a></div></div><div class=SRResult id=SR_Cropping><div class=IEntry><a href="../files/gd_crop-c.html#Cropping" target=_parent class=ISymbol>Cropping</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralE.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralE.html
    new file mode 100644
    index 00000000000..e63de3478cf
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralE.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Effects><div class=IEntry><a href="../files/gd-h.html#Effects" target=_parent class=ISymbol>Effects</a></div></div><div class=SRResult id=SR_Error_spcHandling><div class=IEntry><a href="../files/gd-c.html#Error_Handling" target=_parent class=ISymbol>Error Handling</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralF.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralF.html
    new file mode 100644
    index 00000000000..337a4cd75a0
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralF.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_FreeType_spcfont_spcrendering><div class=IEntry><a href="../files/gdft-c.html#FreeType_font_rendering" target=_parent class=ISymbol>FreeType font rendering</a></div></div><div class=SRResult id=SR_Functions><div class=IEntry><a href="javascript:searchResults.Toggle('SR_Functions')" class=ISymbol>Functions</a><div class=ISubIndex><a href="../files/gd_bmp-c.html#Functions" target=_parent class=IFile>gd_bmp.c</a><a href="../files/gd_crop-c.html#Functions" target=_parent class=IFile>gd_crop.c</a><a href="../files/gd_filename-c.html#Functions" target=_parent class=IFile>gd_filename.c</a><a href="../files/gd_filter-c.html#Functions" target=_parent class=IFile>gd_filter.c</a><a href="../files/gd_gd-c.html#Functions" target=_parent class=IFile>gd_gd.c</a><a href="../files/gd_gd2-c.html#Functions" target=_parent class=IFile>gd_gd2.c</a><a href="../files/gd_gif_in-c.html#Functions" target=_parent class=IFile>gd_gif_in.c</a><a href="../files/gd_gif_out-c.html#Functions" target=_parent class=IFile>gd_gif_out.c</a><a href="../files/gd_io_dp-c.html#Functions" target=_parent class=IFile>gd_io_dp.c</a><a href="../files/gd_jpeg-c.html#Functions" target=_parent class=IFile>gd_jpeg.c</a><a href="../files/gd_matrix-c.html#Functions" target=_parent class=IFile>gd_matrix.c</a><a href="../files/gd_png-c.html#Functions" target=_parent class=IFile>gd_png.c</a><a href="../files/gd_ss-c.html#Functions" target=_parent class=IFile>gd_ss.c</a><a href="../files/gd_tga-c.html#Functions" target=_parent class=IFile>gd_tga.c</a><a href="../files/gd_tiff-c.html#Functions" target=_parent class=IFile>gd_tiff.c</a><a href="../files/gd_topal-c.html#Functions" target=_parent class=IFile>gd_topal.c</a><a href="../files/gd_transform-c.html#Functions" target=_parent class=IFile>gd_transform.c</a><a href="../files/gd_version-c.html#Functions" target=_parent class=IFile>gd_version.c</a><a href="../files/gd_wbmp-c.html#Functions" target=_parent class=IFile>gd_wbmp.c</a><a href="../files/gd_webp-c.html#Functions" target=_parent class=IFile>gd_webp.c</a><a href="../files/gd_xbm-c.html#Functions" target=_parent class=IFile>gd_xbm.c</a><a href="../files/gdfontg-c.html#Functions" target=_parent class=IFile>gdfontg.c</a><a href="../files/gdfontl-c.html#Functions" target=_parent class=IFile>gdfontl.c</a><a href="../files/gdfontmb-c.html#Functions" target=_parent class=IFile>gdfontmb.c</a><a href="../files/gdfonts-c.html#Functions" target=_parent class=IFile>gdfonts.c</a><a href="../files/gdfontt-c.html#Functions" target=_parent class=IFile>gdfontt.c</a><a href="../files/gdft-c.html#Functions" target=_parent class=IFile>gdft.c</a><a href="../files/gdfx-c.html#Functions" target=_parent class=IFile>gdfx.c</a><a href="../files/gdxpm-c.html#Functions" target=_parent class=IFile>gdxpm.c</a></div></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralG.html
    new file mode 100644
    index 00000000000..2c327f59b40
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralG.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_GD_spcIO><div class=IEntry><a href="../files/gd_gd-c.html#GD_IO" target=_parent class=ISymbol>GD IO</a></div></div><div class=SRResult id=SR_gd_perc><div class=IEntry><a href="../files/gd-c.html#gd.c" target=_parent class=ISymbol>gd.c</a></div></div><div class=SRResult id=SR_gd_perh><div class=IEntry><a href="../files/gd-h.html#gd.h" target=_parent class=ISymbol>gd.h</a></div></div><div class=SRResult id=SR_GD_undBELL><div class=IEntry><a href="../files/gd-h.html#GD_BELL" target=_parent class=ISymbol>GD_BELL</a></div></div><div class=SRResult id=SR_GD_undBESSEL><div class=IEntry><a href="../files/gd-h.html#GD_BESSEL" target=_parent class=ISymbol>GD_BESSEL</a></div></div><div class=SRResult id=SR_GD_undBICUBIC><div class=IEntry><a href="../files/gd-h.html#GD_BICUBIC" target=_parent class=ISymbol>GD_BICUBIC</a></div></div><div class=SRResult id=SR_GD_undBICUBIC_undFIXED><div class=IEntry><a href="../files/gd-h.html#GD_BICUBIC_FIXED" target=_parent class=ISymbol>GD_BICUBIC_FIXED</a></div></div><div class=SRResult id=SR_GD_undBILINEAR_undFIXED><div class=IEntry><a href="../files/gd-h.html#GD_BILINEAR_FIXED" target=_parent class=ISymbol>GD_BILINEAR_FIXED</a></div></div><div class=SRResult id=SR_GD_undBLACKMAN><div class=IEntry><a href="../files/gd-h.html#GD_BLACKMAN" target=_parent class=ISymbol>GD_BLACKMAN</a></div></div><div class=SRResult id=SR_GD_undBOX><div class=IEntry><a href="../files/gd-h.html#GD_BOX" target=_parent class=ISymbol>GD_BOX</a></div></div><div class=SRResult id=SR_GD_undBSPLINE><div class=IEntry><a href="../files/gd-h.html#GD_BSPLINE" target=_parent class=ISymbol>GD_BSPLINE</a></div></div><div class=SRResult id=SR_GD_undCATMULLROM><div class=IEntry><a href="../files/gd-h.html#GD_CATMULLROM" target=_parent class=ISymbol>GD_CATMULLROM</a></div></div><div class=SRResult id=SR_GD_undCROP_undBLACK><div class=IEntry><a href="../files/gd-h.html#GD_CROP_BLACK" target=_parent class=ISymbol>GD_CROP_BLACK</a></div></div><div class=SRResult id=SR_GD_undCROP_undDEFAULT><div class=IEntry><a href="../files/gd-h.html#GD_CROP_DEFAULT" target=_parent class=ISymbol>GD_CROP_DEFAULT</a></div></div><div class=SRResult id=SR_GD_undCROP_undSIDES><div class=IEntry><a href="../files/gd-h.html#GD_CROP_SIDES" target=_parent class=ISymbol>GD_CROP_SIDES</a></div></div><div class=SRResult id=SR_GD_undCROP_undTRANSPARENT><div class=IEntry><a href="../files/gd-h.html#GD_CROP_TRANSPARENT" target=_parent class=ISymbol>GD_CROP_TRANSPARENT</a></div></div><div class=SRResult id=SR_GD_undCROP_undWHITE><div class=IEntry><a href="../files/gd-h.html#GD_CROP_WHITE" target=_parent class=ISymbol>GD_CROP_WHITE</a></div></div><div class=SRResult id=SR_gd_undfilename_perc><div class=IEntry><a href="../files/gd_filename-c.html#gd_filename.c" target=_parent class=ISymbol>gd_filename.c</a></div></div><div class=SRResult id=SR_GD_undGAUSSIAN><div class=IEntry><a href="../files/gd-h.html#GD_GAUSSIAN" target=_parent class=ISymbol>GD_GAUSSIAN</a></div></div><div class=SRResult id=SR_GD_undGENERALIZED_undCUBIC><div class=IEntry><a href="../files/gd-h.html#GD_GENERALIZED_CUBIC" target=_parent class=ISymbol>GD_GENERALIZED_CUBIC</a></div></div><div class=SRResult id=SR_GD_undHAMMING><div class=IEntry><a href="../files/gd-h.html#GD_HAMMING" target=_parent class=ISymbol>GD_HAMMING</a></div></div><div class=SRResult id=SR_GD_undHANNING><div class=IEntry><a href="../files/gd-h.html#GD_HANNING" target=_parent class=ISymbol>GD_HANNING</a></div></div><div class=SRResult id=SR_GD_undHERMITE><div class=IEntry><a href="../files/gd-h.html#GD_HERMITE" target=_parent class=ISymbol>GD_HERMITE</a></div></div><div class=SRResult id=SR_gd_undinterpolation_perc><div class=IEntry><a href="../files/gd_interpolation-c.html#gd_interpolation.c" target=_parent class=ISymbol>gd_interpolation.c</a></div></div><div class=SRResult id=SR_gd_undio_perh><div class=IEntry><a href="../files/gd_io-h.html#gd_io.h" target=_parent class=ISymbol>gd_io.h</a></div></div><div class=SRResult id=SR_gd_undio_unddp_perc><div class=IEntry><a href="../files/gd_io_dp-c.html#gd_io_dp.c" target=_parent class=ISymbol>gd_io_dp.c</a></div></div><div class=SRResult id=SR_GD_undLINEAR><div class=IEntry><a href="../files/gd-h.html#GD_LINEAR" target=_parent class=ISymbol>GD_LINEAR</a></div></div><div class=SRResult id=SR_GD_undMITCHELL><div class=IEntry><a href="../files/gd-h.html#GD_MITCHELL" target=_parent class=ISymbol>GD_MITCHELL</a></div></div><div class=SRResult id=SR_GD_undNEAREST_undNEIGHBOUR><div class=IEntry><a href="../files/gd-h.html#GD_NEAREST_NEIGHBOUR" target=_parent class=ISymbol>GD_NEAREST_NEIGHBOUR</a></div></div><div class=SRResult id=SR_GD_undPOWER><div class=IEntry><a href="../files/gd-h.html#GD_POWER" target=_parent class=ISymbol>GD_POWER</a></div></div><div class=SRResult id=SR_GD_undQUADRATIC><div class=IEntry><a href="../files/gd-h.html#GD_QUADRATIC" target=_parent class=ISymbol>GD_QUADRATIC</a></div></div><div class=SRResult id=SR_GD_undQUANT_undDEFAULT><div class=IEntry><a href="../files/gd-h.html#GD_QUANT_DEFAULT" target=_parent class=ISymbol>GD_QUANT_DEFAULT</a></div></div><div class=SRResult id=SR_GD_undQUANT_undJQUANT><div class=IEntry><a href="../files/gd-h.html#GD_QUANT_JQUANT" target=_parent class=ISymbol>GD_QUANT_JQUANT</a></div></div><div class=SRResult id=SR_GD_undQUANT_undLIQ><div class=IEntry><a href="../files/gd-h.html#GD_QUANT_LIQ" target=_parent class=ISymbol>GD_QUANT_LIQ</a></div></div><div class=SRResult id=SR_GD_undQUANT_undNEUQUANT><div class=IEntry><a href="../files/gd-h.html#GD_QUANT_NEUQUANT" target=_parent class=ISymbol>GD_QUANT_NEUQUANT</a></div></div><div class=SRResult id=SR_GD_undSINC><div class=IEntry><a href="../files/gd-h.html#GD_SINC" target=_parent class=ISymbol>GD_SINC</a></div></div><div class=SRResult id=SR_gd_undss_perc><div class=IEntry><a href="../files/gd_ss-c.html#gd_ss.c" target=_parent class=ISymbol>gd_ss.c</a></div></div><div class=SRResult id=SR_GD_undTRIANGLE><div class=IEntry><a href="../files/gd-h.html#GD_TRIANGLE" target=_parent class=ISymbol>GD_TRIANGLE</a></div></div><div class=SRResult id=SR_gd_undversion_perc><div class=IEntry><a href="../files/gd_version-c.html#gd_version.c" target=_parent class=ISymbol>gd_version.c</a></div></div><div class=SRResult id=SR_GD_undWEIGHTED4><div class=IEntry><a href="../files/gd-h.html#GD_WEIGHTED4" target=_parent class=ISymbol>GD_WEIGHTED4</a></div></div><div class=SRResult id=SR_GD2_spcIO><div class=IEntry><a href="../files/gd_gd2-c.html#GD2_IO" target=_parent class=ISymbol>GD2 IO</a></div></div><div class=SRResult id=SR_gdAffineApplyToPointF><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineApplyToPointF" target=_parent class=ISymbol>gdAffineApplyToPointF</a></div></div><div class=SRResult id=SR_gdAffineConcat><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineConcat" target=_parent class=ISymbol>gdAffineConcat</a></div></div><div class=SRResult id=SR_gdAffineEqual><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineEqual" target=_parent class=ISymbol>gdAffineEqual</a></div></div><div class=SRResult id=SR_gdAffineFlip><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineFlip" target=_parent class=ISymbol>gdAffineFlip</a></div></div><div class=SRResult id=SR_gdAffineIdentity><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineIdentity" target=_parent class=ISymbol>gdAffineIdentity</a></div></div><div class=SRResult id=SR_gdAffineInvert><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineInvert" target=_parent class=ISymbol>gdAffineInvert</a></div></div><div class=SRResult id=SR_gdAffineRectilinear><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineRectilinear" target=_parent class=ISymbol>gdAffineRectilinear</a></div></div><div class=SRResult id=SR_gdAffineRotate><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineRotate" target=_parent class=ISymbol>gdAffineRotate</a></div></div><div class=SRResult id=SR_gdAffineScale><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineScale" target=_parent class=ISymbol>gdAffineScale</a></div></div><div class=SRResult id=SR_gdAffineShearHorizontal><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineShearHorizontal" target=_parent class=ISymbol>gdAffineShearHorizontal</a></div></div><div class=SRResult id=SR_gdAffineShearVertical><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineShearVertical" target=_parent class=ISymbol>gdAffineShearVertical</a></div></div><div class=SRResult id=SR_gdAffineTranslate><div class=IEntry><a href="../files/gd_matrix-c.html#gdAffineTranslate" target=_parent class=ISymbol>gdAffineTranslate</a></div></div><div class=SRResult id=SR_gdAlphaBlend><div class=IEntry><a href="../files/gd-c.html#gdAlphaBlend" target=_parent class=ISymbol>gdAlphaBlend</a></div></div><div class=SRResult id=SR_gdAntiAliased><div class=IEntry><a href="../files/gd-h.html#gdAntiAliased" target=_parent class=ISymbol>gdAntiAliased</a></div></div><div class=SRResult id=SR_gdBrushed><div class=IEntry><a href="../files/gd-h.html#gdBrushed" target=_parent class=ISymbol>gdBrushed</a></div></div><div class=SRResult id=SR_gdClearErrorMethod><div class=IEntry><a href="../files/gd-c.html#gdClearErrorMethod" target=_parent class=ISymbol>gdClearErrorMethod</a></div></div><div class=SRResult id=SR_gdColorMapLookup><div class=IEntry><a href="../files/gd_color_map-c.html#gdColorMapLookup" target=_parent class=ISymbol>gdColorMapLookup</a></div></div><div class=SRResult id=SR_gdCropMode><div class=IEntry><a href="../files/gd-h.html#gdCropMode" target=_parent class=ISymbol>gdCropMode</a></div></div><div class=SRResult id=SR_gdDisposalNone><div class=IEntry><a href="../files/gd-h.html#gdDisposalNone" target=_parent class=ISymbol>gdDisposalNone</a></div></div><div class=SRResult id=SR_gdDisposalRestoreBackground><div class=IEntry><a href="../files/gd-h.html#gdDisposalRestoreBackground" target=_parent class=ISymbol>gdDisposalRestoreBackground</a></div></div><div class=SRResult id=SR_gdDisposalRestorePrevious><div class=IEntry><a href="../files/gd-h.html#gdDisposalRestorePrevious" target=_parent class=ISymbol>gdDisposalRestorePrevious</a></div></div><div class=SRResult id=SR_gdDisposalUnknown><div class=IEntry><a href="../files/gd-h.html#gdDisposalUnknown" target=_parent class=ISymbol>gdDisposalUnknown</a></div></div><div class=SRResult id=SR_gdDPExtractData><div class=IEntry><a href="../files/gd_io_dp-c.html#gdDPExtractData" target=_parent class=ISymbol>gdDPExtractData</a></div></div><div class=SRResult id=SR_gdExtraVersion><div class=IEntry><a href="../files/gd_version-c.html#gdExtraVersion" target=_parent class=ISymbol>gdExtraVersion</a></div></div><div class=SRResult id=SR_gdFont><div class=IEntry><a href="../files/gd-h.html#gdFont" target=_parent class=ISymbol>gdFont</a></div></div><div class=SRResult id=SR_gdFontCacheSetup><div class=IEntry><a href="../files/gdft-c.html#gdFontCacheSetup" target=_parent class=ISymbol>gdFontCacheSetup</a></div></div><div class=SRResult id=SR_gdFontCacheShutdown><div class=IEntry><a href="../files/gdft-c.html#gdFontCacheShutdown" target=_parent class=ISymbol>gdFontCacheShutdown</a></div></div><div class=SRResult id=SR_gdFontGetGiant><div class=IEntry><a href="../files/gdfontg-c.html#gdFontGetGiant" target=_parent class=ISymbol>gdFontGetGiant</a></div></div><div class=SRResult id=SR_gdFontGetLarge><div class=IEntry><a href="../files/gdfontl-c.html#gdFontGetLarge" target=_parent class=ISymbol>gdFontGetLarge</a></div></div><div class=SRResult id=SR_gdFontGetMediumBold><div class=IEntry><a href="../files/gdfontmb-c.html#gdFontGetMediumBold" target=_parent class=ISymbol>gdFontGetMediumBold</a></div></div><div class=SRResult id=SR_gdFontGetSmall><div class=IEntry><a href="../files/gdfonts-c.html#gdFontGetSmall" target=_parent class=ISymbol>gdFontGetSmall</a></div></div><div class=SRResult id=SR_gdFontGetTiny><div class=IEntry><a href="../files/gdfontt-c.html#gdFontGetTiny" target=_parent class=ISymbol>gdFontGetTiny</a></div></div><div class=SRResult id=SR_gdFontPtr><div class=IEntry><a href="../files/gd-h.html#gdFontPtr" target=_parent class=ISymbol>gdFontPtr</a></div></div><div class=SRResult id=SR_gdFree><div class=IEntry><a href="../files/gdhelpers-c.html#gdFree" target=_parent class=ISymbol>gdFree</a></div></div><div class=SRResult id=SR_gdFreeFontCache><div class=IEntry><a href="../files/gdft-c.html#gdFreeFontCache" target=_parent class=ISymbol>gdFreeFontCache</a></div></div><div class=SRResult id=SR_gdFTStringExtra><div class=IEntry><a href="../files/gd-h.html#gdFTStringExtra" target=_parent class=ISymbol>gdFTStringExtra</a></div></div><div class=SRResult id=SR_gdFTStringExtraPtr><div class=IEntry><a href="../files/gd-h.html#gdFTStringExtraPtr" target=_parent class=ISymbol>gdFTStringExtraPtr</a></div></div><div class=SRResult id=SR_gdFTUseFontConfig><div class=IEntry><a href="../files/gdft-c.html#gdFTUseFontConfig" target=_parent class=ISymbol>gdFTUseFontConfig</a></div></div><div class=SRResult id=SR_gdfx_perc><div class=IEntry><a href="../files/gdfx-c.html#gdfx.c" target=_parent class=ISymbol>gdfx.c</a></div></div><div class=SRResult id=SR_gdImage><div class=IEntry><a href="../files/gd-h.html#gdImage" target=_parent class=ISymbol>gdImage</a></div></div><div class=SRResult id=SR_gdImageAABlend><div class=IEntry><a href="../files/gd-c.html#gdImageAABlend" target=_parent class=ISymbol>gdImageAABlend</a></div></div><div class=SRResult id=SR_gdImageAlpha><div class=IEntry><a href="../files/gd-h.html#gdImageAlpha" target=_parent class=ISymbol>gdImageAlpha</a></div></div><div class=SRResult id=SR_gdImageAlphaBlending><div class=IEntry><a href="../files/gd-c.html#gdImageAlphaBlending" target=_parent class=ISymbol>gdImageAlphaBlending</a></div></div><div class=SRResult id=SR_gdImageArc><div class=IEntry><a href="../files/gd-c.html#gdImageArc" target=_parent class=ISymbol>gdImageArc</a></div></div><div class=SRResult id=SR_gdImageBlue><div class=IEntry><a href="../files/gd-h.html#gdImageBlue" target=_parent class=ISymbol>gdImageBlue</a></div></div><div class=SRResult id=SR_gdImageBmp><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmp" target=_parent class=ISymbol>gdImageBmp</a></div></div><div class=SRResult id=SR_gdImageBmpCtx><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmpCtx" target=_parent class=ISymbol>gdImageBmpCtx</a></div></div><div class=SRResult id=SR_gdImageBmpPtr><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageBmpPtr" target=_parent class=ISymbol>gdImageBmpPtr</a></div></div><div class=SRResult id=SR_gdImageBoundsSafe><div class=IEntry><a href="../files/gd-c.html#gdImageBoundsSafe" target=_parent class=ISymbol>gdImageBoundsSafe</a></div></div><div class=SRResult id=SR_gdImageBrightness><div class=IEntry><a href="../files/gd_filter-c.html#gdImageBrightness" target=_parent class=ISymbol>gdImageBrightness</a></div></div><div class=SRResult id=SR_gdImageChar><div class=IEntry><a href="../files/gd-c.html#gdImageChar" target=_parent class=ISymbol>gdImageChar</a></div></div><div class=SRResult id=SR_gdImageCharUp><div class=IEntry><a href="../files/gd-c.html#gdImageCharUp" target=_parent class=ISymbol>gdImageCharUp</a></div></div><div class=SRResult id=SR_gdImageClone><div class=IEntry><a href="../files/gd-c.html#gdImageClone" target=_parent class=ISymbol>gdImageClone</a></div></div><div class=SRResult id=SR_gdImageColor><div class=IEntry><a href="../files/gd_filter-c.html#gdImageColor" target=_parent class=ISymbol>gdImageColor</a></div></div><div class=SRResult id=SR_gdImageColorAllocate><div class=IEntry><a href="../files/gd-c.html#gdImageColorAllocate" target=_parent class=ISymbol>gdImageColorAllocate</a></div></div><div class=SRResult id=SR_gdImageColorAllocateAlpha><div class=IEntry><a href="../files/gd-c.html#gdImageColorAllocateAlpha" target=_parent class=ISymbol>gdImageColorAllocateAlpha</a></div></div><div class=SRResult id=SR_gdImageColorClosest><div class=IEntry><a href="../files/gd-c.html#gdImageColorClosest" target=_parent class=ISymbol>gdImageColorClosest</a></div></div><div class=SRResult id=SR_gdImageColorClosestAlpha><div class=IEntry><a href="../files/gd-c.html#gdImageColorClosestAlpha" target=_parent class=ISymbol>gdImageColorClosestAlpha</a></div></div><div class=SRResult id=SR_gdImageColorClosestHWB><div class=IEntry><a href="../files/gd-c.html#gdImageColorClosestHWB" target=_parent class=ISymbol>gdImageColorClosestHWB</a></div></div><div class=SRResult id=SR_gdImageColorDeallocate><div class=IEntry><a href="../files/gd-c.html#gdImageColorDeallocate" target=_parent class=ISymbol>gdImageColorDeallocate</a></div></div><div class=SRResult id=SR_gdImageColorExact><div class=IEntry><a href="../files/gd-c.html#gdImageColorExact" target=_parent class=ISymbol>gdImageColorExact</a></div></div><div class=SRResult id=SR_gdImageColorExactAlpha><div class=IEntry><a href="../files/gd-c.html#gdImageColorExactAlpha" target=_parent class=ISymbol>gdImageColorExactAlpha</a></div></div><div class=SRResult id=SR_gdImageColorMatch><div class=IEntry><a href="../files/gd_color_match-c.html#gdImageColorMatch" target=_parent class=ISymbol>gdImageColorMatch</a></div></div><div class=SRResult id=SR_gdImageColorReplace><div class=IEntry><a href="../files/gd-c.html#gdImageColorReplace" target=_parent class=ISymbol>gdImageColorReplace</a></div></div><div class=SRResult id=SR_gdImageColorReplaceArray><div class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceArray" target=_parent class=ISymbol>gdImageColorReplaceArray</a></div></div><div class=SRResult id=SR_gdImageColorReplaceCallback><div class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceCallback" target=_parent class=ISymbol>gdImageColorReplaceCallback</a></div></div><div class=SRResult id=SR_gdImageColorReplaceThreshold><div class=IEntry><a href="../files/gd-c.html#gdImageColorReplaceThreshold" target=_parent class=ISymbol>gdImageColorReplaceThreshold</a></div></div><div class=SRResult id=SR_gdImageColorResolve><div class=IEntry><a href="../files/gd-c.html#gdImageColorResolve" target=_parent class=ISymbol>gdImageColorResolve</a></div></div><div class=SRResult id=SR_gdImageColorResolveAlpha><div class=IEntry><a href="../files/gd-c.html#gdImageColorResolveAlpha" target=_parent class=ISymbol>gdImageColorResolveAlpha</a></div></div><div class=SRResult id=SR_gdImageColorsTotal><div class=IEntry><a href="../files/gd-h.html#gdImageColorsTotal" target=_parent class=ISymbol>gdImageColorsTotal</a></div></div><div class=SRResult id=SR_gdImageColorTransparent><div class=IEntry><a href="../files/gd-c.html#gdImageColorTransparent" target=_parent class=ISymbol>gdImageColorTransparent</a></div></div><div class=SRResult id=SR_gdImageCompare><div class=IEntry><a href="../files/gd-c.html#gdImageCompare" target=_parent class=ISymbol>gdImageCompare</a></div></div><div class=SRResult id=SR_gdImageContrast><div class=IEntry><a href="../files/gd_filter-c.html#gdImageContrast" target=_parent class=ISymbol>gdImageContrast</a></div></div><div class=SRResult id=SR_gdImageConvolution><div class=IEntry><a href="../files/gd_filter-c.html#gdImageConvolution" target=_parent class=ISymbol>gdImageConvolution</a></div></div><div class=SRResult id=SR_gdImageCopy><div class=IEntry><a href="../files/gd-c.html#gdImageCopy" target=_parent class=ISymbol>gdImageCopy</a></div></div><div class=SRResult id=SR_gdImageCopyGaussianBlurred><div class=IEntry><a href="../files/gd_filter-c.html#gdImageCopyGaussianBlurred" target=_parent class=ISymbol>gdImageCopyGaussianBlurred</a></div></div><div class=SRResult id=SR_gdImageCopyMerge><div class=IEntry><a href="../files/gd-c.html#gdImageCopyMerge" target=_parent class=ISymbol>gdImageCopyMerge</a></div></div><div class=SRResult id=SR_gdImageCopyMergeGray><div class=IEntry><a href="../files/gd-c.html#gdImageCopyMergeGray" target=_parent class=ISymbol>gdImageCopyMergeGray</a></div></div><div class=SRResult id=SR_gdImageCopyResampled><div class=IEntry><a href="../files/gd-c.html#gdImageCopyResampled" target=_parent class=ISymbol>gdImageCopyResampled</a></div></div><div class=SRResult id=SR_gdImageCopyResized><div class=IEntry><a href="../files/gd-c.html#gdImageCopyResized" target=_parent class=ISymbol>gdImageCopyResized</a></div></div><div class=SRResult id=SR_gdImageCopyRotated><div class=IEntry><a href="../files/gd-c.html#gdImageCopyRotated" target=_parent class=ISymbol>gdImageCopyRotated</a></div></div><div class=SRResult id=SR_gdImageCreate><div class=IEntry><a href="../files/gd-c.html#gdImageCreate" target=_parent class=ISymbol>gdImageCreate</a></div></div><div class=SRResult id=SR_gdImageCreateFromBmp><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmp" target=_parent class=ISymbol>gdImageCreateFromBmp</a></div></div><div class=SRResult id=SR_gdImageCreateFromBmpCtx><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmpCtx" target=_parent class=ISymbol>gdImageCreateFromBmpCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromBmpPtr><div class=IEntry><a href="../files/gd_bmp-c.html#gdImageCreateFromBmpPtr" target=_parent class=ISymbol>gdImageCreateFromBmpPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromFile><div class=IEntry><a href="../files/gd_filename-c.html#gdImageCreateFromFile" target=_parent class=ISymbol>gdImageCreateFromFile</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd><div class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGd" target=_parent class=ISymbol>gdImageCreateFromGd</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2" target=_parent class=ISymbol>gdImageCreateFromGd2</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2Ctx><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Ctx" target=_parent class=ISymbol>gdImageCreateFromGd2Ctx</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2Part><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Part" target=_parent class=ISymbol>gdImageCreateFromGd2Part</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2PartCtx><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2PartCtx" target=_parent class=ISymbol>gdImageCreateFromGd2PartCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2PartPtr><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2PartPtr" target=_parent class=ISymbol>gdImageCreateFromGd2PartPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromGd2Ptr><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageCreateFromGd2Ptr" target=_parent class=ISymbol>gdImageCreateFromGd2Ptr</a></div></div><div class=SRResult id=SR_gdImageCreateFromGdCtx><div class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGdCtx" target=_parent class=ISymbol>gdImageCreateFromGdCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromGdPtr><div class=IEntry><a href="../files/gd_gd-c.html#gdImageCreateFromGdPtr" target=_parent class=ISymbol>gdImageCreateFromGdPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromGif><div class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGif" target=_parent class=ISymbol>gdImageCreateFromGif</a></div></div><div class=SRResult id=SR_gdImageCreateFromGifCtx><div class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGifCtx" target=_parent class=ISymbol>gdImageCreateFromGifCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromGifPtr><div class=IEntry><a href="../files/gd_gif_in-c.html#gdImageCreateFromGifPtr" target=_parent class=ISymbol>gdImageCreateFromGifPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpeg><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpeg" target=_parent class=ISymbol>gdImageCreateFromJpeg</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpegCtx><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegCtx" target=_parent class=ISymbol>gdImageCreateFromJpegCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpegCtxEx><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegCtxEx" target=_parent class=ISymbol>gdImageCreateFromJpegCtxEx</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpegEx><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegEx" target=_parent class=ISymbol>gdImageCreateFromJpegEx</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpegPtr><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegPtr" target=_parent class=ISymbol>gdImageCreateFromJpegPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromJpegPtrEx><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageCreateFromJpegPtrEx" target=_parent class=ISymbol>gdImageCreateFromJpegPtrEx</a></div></div><div class=SRResult id=SR_gdImageCreateFromPng><div class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPng" target=_parent class=ISymbol>gdImageCreateFromPng</a></div></div><div class=SRResult id=SR_gdImageCreateFromPngCtx><div class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPngCtx" target=_parent class=ISymbol>gdImageCreateFromPngCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromPngPtr><div class=IEntry><a href="../files/gd_png-c.html#gdImageCreateFromPngPtr" target=_parent class=ISymbol>gdImageCreateFromPngPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromPngSource><div class=IEntry><a href="../files/gd_ss-c.html#gdImageCreateFromPngSource" target=_parent class=ISymbol>gdImageCreateFromPngSource</a></div></div><div class=SRResult id=SR_gdImageCreateFromTga><div class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTga" target=_parent class=ISymbol>gdImageCreateFromTga</a></div></div><div class=SRResult id=SR_gdImageCreateFromTgaCtx><div class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTgaCtx" target=_parent class=ISymbol>gdImageCreateFromTgaCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromTgaPtr><div class=IEntry><a href="../files/gd_tga-c.html#gdImageCreateFromTgaPtr" target=_parent class=ISymbol>gdImageCreateFromTgaPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromTIFF><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTIFF" target=_parent class=ISymbol>gdImageCreateFromTIFF</a></div></div><div class=SRResult id=SR_gdImageCreateFromTiffCtx><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTiffCtx" target=_parent class=ISymbol>gdImageCreateFromTiffCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromTiffPtr><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageCreateFromTiffPtr" target=_parent class=ISymbol>gdImageCreateFromTiffPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromWBMP><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMP" target=_parent class=ISymbol>gdImageCreateFromWBMP</a></div></div><div class=SRResult id=SR_gdImageCreateFromWBMPCtx><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMPCtx" target=_parent class=ISymbol>gdImageCreateFromWBMPCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromWBMPPtr><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageCreateFromWBMPPtr" target=_parent class=ISymbol>gdImageCreateFromWBMPPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromWebp><div class=IEntry><a href="../files/gd_webp-c.html#gdImageCreateFromWebp" target=_parent class=ISymbol>gdImageCreateFromWebp</a></div></div><div class=SRResult id=SR_gdImageCreateFromWebpCtx><div class=IEntry><a href="../files/gd_webp-c.html#gdImageCreateFromWebpCtx" target=_parent class=ISymbol>gdImageCreateFromWebpCtx</a></div></div><div class=SRResult id=SR_gdImageCreateFromWebpPtr><div class=IEntry><a href="../files/gd_webp-c.html#gdImageCreateFromWebpPtr" target=_parent class=ISymbol>gdImageCreateFromWebpPtr</a></div></div><div class=SRResult id=SR_gdImageCreateFromXbm><div class=IEntry><a href="../files/gd_xbm-c.html#gdImageCreateFromXbm" target=_parent class=ISymbol>gdImageCreateFromXbm</a></div></div><div class=SRResult id=SR_gdImageCreateFromXpm><div class=IEntry><a href="../files/gdxpm-c.html#gdImageCreateFromXpm" target=_parent class=ISymbol>gdImageCreateFromXpm</a></div></div><div class=SRResult id=SR_gdImageCreatePaletteFromTrueColor><div class=IEntry><a href="../files/gd_topal-c.html#gdImageCreatePaletteFromTrueColor" target=_parent class=ISymbol>gdImageCreatePaletteFromTrueColor</a></div></div><div class=SRResult id=SR_gdImageCreateTrueColor><div class=IEntry><a href="../files/gd-c.html#gdImageCreateTrueColor" target=_parent class=ISymbol>gdImageCreateTrueColor</a></div></div><div class=SRResult id=SR_gdImageCrop><div class=IEntry><a href="../files/gd_crop-c.html#gdImageCrop" target=_parent class=ISymbol>gdImageCrop</a></div></div><div class=SRResult id=SR_gdImageCropAuto><div class=IEntry><a href="../files/gd_crop-c.html#gdImageCropAuto" target=_parent class=ISymbol>gdImageCropAuto</a></div></div><div class=SRResult id=SR_gdImageCropThreshold><div class=IEntry><a href="../files/gd_crop-c.html#gdImageCropThreshold" target=_parent class=ISymbol>gdImageCropThreshold</a></div></div><div class=SRResult id=SR_gdImageDashedLine><div class=IEntry><a href="../files/gd-c.html#gdImageDashedLine" target=_parent class=ISymbol>gdImageDashedLine</a></div></div><div class=SRResult id=SR_gdImageDestroy><div class=IEntry><a href="../files/gd-c.html#gdImageDestroy" target=_parent class=ISymbol>gdImageDestroy</a></div></div><div class=SRResult id=SR_gdImageEdgeDetectQuick><div class=IEntry><a href="../files/gd_filter-c.html#gdImageEdgeDetectQuick" target=_parent class=ISymbol>gdImageEdgeDetectQuick</a></div></div><div class=SRResult id=SR_gdImageEllipse><div class=IEntry><a href="../files/gd-c.html#gdImageEllipse" target=_parent class=ISymbol>gdImageEllipse</a></div></div><div class=SRResult id=SR_gdImageEmboss><div class=IEntry><a href="../files/gd_filter-c.html#gdImageEmboss" target=_parent class=ISymbol>gdImageEmboss</a></div></div><div class=SRResult id=SR_gdImageFile><div class=IEntry><a href="../files/gd_filename-c.html#gdImageFile" target=_parent class=ISymbol>gdImageFile</a></div></div><div class=SRResult id=SR_gdImageFill><div class=IEntry><a href="../files/gd-c.html#gdImageFill" target=_parent class=ISymbol>gdImageFill</a></div></div><div class=SRResult id=SR_gdImageFilledArc><div class=IEntry><a href="../files/gd-c.html#gdImageFilledArc" target=_parent class=ISymbol>gdImageFilledArc</a></div></div><div class=SRResult id=SR_gdImageFilledEllipse><div class=IEntry><a href="../files/gd-c.html#gdImageFilledEllipse" target=_parent class=ISymbol>gdImageFilledEllipse</a></div></div><div class=SRResult id=SR_gdImageFilledPolygon><div class=IEntry><a href="../files/gd-c.html#gdImageFilledPolygon" target=_parent class=ISymbol>gdImageFilledPolygon</a></div></div><div class=SRResult id=SR_gdImageFilledRectangle><div class=IEntry><a href="../files/gd-c.html#gdImageFilledRectangle" target=_parent class=ISymbol>gdImageFilledRectangle</a></div></div><div class=SRResult id=SR_gdImageFillToBorder><div class=IEntry><a href="../files/gd-c.html#gdImageFillToBorder" target=_parent class=ISymbol>gdImageFillToBorder</a></div></div><div class=SRResult id=SR_gdImageFlipBoth><div class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipBoth" target=_parent class=ISymbol>gdImageFlipBoth</a></div></div><div class=SRResult id=SR_gdImageFlipHorizontal><div class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipHorizontal" target=_parent class=ISymbol>gdImageFlipHorizontal</a></div></div><div class=SRResult id=SR_gdImageFlipVertical><div class=IEntry><a href="../files/gd_transform-c.html#gdImageFlipVertical" target=_parent class=ISymbol>gdImageFlipVertical</a></div></div><div class=SRResult id=SR_gdImageGaussianBlur><div class=IEntry><a href="../files/gd_filter-c.html#gdImageGaussianBlur" target=_parent class=ISymbol>gdImageGaussianBlur</a></div></div><div class=SRResult id=SR_gdImageGd><div class=IEntry><a href="../files/gd_gd-c.html#gdImageGd" target=_parent class=ISymbol>gdImageGd</a></div></div><div class=SRResult id=SR_gdImageGd2><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageGd2" target=_parent class=ISymbol>gdImageGd2</a></div></div><div class=SRResult id=SR_gdImageGd2Ptr><div class=IEntry><a href="../files/gd_gd2-c.html#gdImageGd2Ptr" target=_parent class=ISymbol>gdImageGd2Ptr</a></div></div><div class=SRResult id=SR_gdImageGdPtr><div class=IEntry><a href="../files/gd_gd-c.html#gdImageGdPtr" target=_parent class=ISymbol>gdImageGdPtr</a></div></div><div class=SRResult id=SR_gdImageGetClip><div class=IEntry><a href="../files/gd-c.html#gdImageGetClip" target=_parent class=ISymbol>gdImageGetClip</a></div></div><div class=SRResult id=SR_gdImageGetInterlaced><div class=IEntry><a href="../files/gd-h.html#gdImageGetInterlaced" target=_parent class=ISymbol>gdImageGetInterlaced</a></div></div><div class=SRResult id=SR_gdImageGetInterpolationMethod><div class=IEntry><a href="../files/gd_interpolation-c.html#gdImageGetInterpolationMethod" target=_parent class=ISymbol>gdImageGetInterpolationMethod</a></div></div><div class=SRResult id=SR_gdImageGetPixel><div class=IEntry><a href="../files/gd-c.html#gdImageGetPixel" target=_parent class=ISymbol>gdImageGetPixel</a></div></div><div class=SRResult id=SR_gdImageGetTransparent><div class=IEntry><a href="../files/gd-h.html#gdImageGetTransparent" target=_parent class=ISymbol>gdImageGetTransparent</a></div></div><div class=SRResult id=SR_gdImageGetTrueColorPixel><div class=IEntry><a href="../files/gd-c.html#gdImageGetTrueColorPixel" target=_parent class=ISymbol>gdImageGetTrueColorPixel</a></div></div><div class=SRResult id=SR_gdImageGif><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGif" target=_parent class=ISymbol>gdImageGif</a></div></div><div class=SRResult id=SR_gdImageGifAnim><div class=IEntry><a href="../files/gd-h.html#gdImageGifAnim" target=_parent class=ISymbol>gdImageGifAnim</a></div></div><div class=SRResult id=SR_gdImageGifAnimAdd><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAdd" target=_parent class=ISymbol>gdImageGifAnimAdd</a></div></div><div class=SRResult id=SR_gdImageGifAnimAddCtx><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAddCtx" target=_parent class=ISymbol>gdImageGifAnimAddCtx</a></div></div><div class=SRResult id=SR_gdImageGifAnimAddPtr><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimAddPtr" target=_parent class=ISymbol>gdImageGifAnimAddPtr</a></div></div><div class=SRResult id=SR_gdImageGifAnimBegin><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBegin" target=_parent class=ISymbol>gdImageGifAnimBegin</a></div></div><div class=SRResult id=SR_gdImageGifAnimBeginCtx><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBeginCtx" target=_parent class=ISymbol>gdImageGifAnimBeginCtx</a></div></div><div class=SRResult id=SR_gdImageGifAnimBeginPtr><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimBeginPtr" target=_parent class=ISymbol>gdImageGifAnimBeginPtr</a></div></div><div class=SRResult id=SR_gdImageGifAnimEnd><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEnd" target=_parent class=ISymbol>gdImageGifAnimEnd</a></div></div><div class=SRResult id=SR_gdImageGifAnimEndCtx><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEndCtx" target=_parent class=ISymbol>gdImageGifAnimEndCtx</a></div></div><div class=SRResult id=SR_gdImageGifAnimEndPtr><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifAnimEndPtr" target=_parent class=ISymbol>gdImageGifAnimEndPtr</a></div></div><div class=SRResult id=SR_gdImageGifCtx><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifCtx" target=_parent class=ISymbol>gdImageGifCtx</a></div></div><div class=SRResult id=SR_gdImageGifPtr><div class=IEntry><a href="../files/gd_gif_out-c.html#gdImageGifPtr" target=_parent class=ISymbol>gdImageGifPtr</a></div></div><div class=SRResult id=SR_gdImageGrayScale><div class=IEntry><a href="../files/gd_filter-c.html#gdImageGrayScale" target=_parent class=ISymbol>gdImageGrayScale</a></div></div><div class=SRResult id=SR_gdImageGreen><div class=IEntry><a href="../files/gd-h.html#gdImageGreen" target=_parent class=ISymbol>gdImageGreen</a></div></div><div class=SRResult id=SR_gdImageInterlace><div class=IEntry><a href="../files/gd-c.html#gdImageInterlace" target=_parent class=ISymbol>gdImageInterlace</a></div></div><div class=SRResult id=SR_gdImageJpeg><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpeg" target=_parent class=ISymbol>gdImageJpeg</a></div></div><div class=SRResult id=SR_gdImageJpegCtx><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpegCtx" target=_parent class=ISymbol>gdImageJpegCtx</a></div></div><div class=SRResult id=SR_gdImageJpegPtr><div class=IEntry><a href="../files/gd_jpeg-c.html#gdImageJpegPtr" target=_parent class=ISymbol>gdImageJpegPtr</a></div></div><div class=SRResult id=SR_gdImageLine><div class=IEntry><a href="../files/gd-c.html#gdImageLine" target=_parent class=ISymbol>gdImageLine</a></div></div><div class=SRResult id=SR_gdImageMeanRemoval><div class=IEntry><a href="../files/gd_filter-c.html#gdImageMeanRemoval" target=_parent class=ISymbol>gdImageMeanRemoval</a></div></div><div class=SRResult id=SR_gdImageNegate><div class=IEntry><a href="../files/gd_filter-c.html#gdImageNegate" target=_parent class=ISymbol>gdImageNegate</a></div></div><div class=SRResult id=SR_gdImageNeuQuant><div class=IEntry><a href="../files/gd_nnquant-c.html#gdImageNeuQuant" target=_parent class=ISymbol>gdImageNeuQuant</a></div></div><div class=SRResult id=SR_gdImageOpenPolygon><div class=IEntry><a href="../files/gd-c.html#gdImageOpenPolygon" target=_parent class=ISymbol>gdImageOpenPolygon</a></div></div><div class=SRResult id=SR_gdImagePaletteCopy><div class=IEntry><a href="../files/gd-c.html#gdImagePaletteCopy" target=_parent class=ISymbol>gdImagePaletteCopy</a></div></div><div class=SRResult id=SR_gdImagePalettePixel><div class=IEntry><a href="../files/gd-h.html#gdImagePalettePixel" target=_parent class=ISymbol>gdImagePalettePixel</a></div></div><div class=SRResult id=SR_gdImagePaletteToTrueColor><div class=IEntry><a href="../files/gd-c.html#gdImagePaletteToTrueColor" target=_parent class=ISymbol>gdImagePaletteToTrueColor</a></div></div><div class=SRResult id=SR_gdImagePixelate><div class=IEntry><a href="../files/gd_filter-c.html#gdImagePixelate" target=_parent class=ISymbol>gdImagePixelate</a></div></div><div class=SRResult id=SR_gdImagePng><div class=IEntry><a href="../files/gd_png-c.html#gdImagePng" target=_parent class=ISymbol>gdImagePng</a></div></div><div class=SRResult id=SR_gdImagePngCtx><div class=IEntry><a href="../files/gd_png-c.html#gdImagePngCtx" target=_parent class=ISymbol>gdImagePngCtx</a></div></div><div class=SRResult id=SR_gdImagePngCtxEx><div class=IEntry><a href="../files/gd_png-c.html#gdImagePngCtxEx" target=_parent class=ISymbol>gdImagePngCtxEx</a></div></div><div class=SRResult id=SR_gdImagePngEx><div class=IEntry><a href="../files/gd_png-c.html#gdImagePngEx" target=_parent class=ISymbol>gdImagePngEx</a></div></div><div class=SRResult id=SR_gdImagePngPtr><div class=IEntry><a href="../files/gd_png-c.html#gdImagePngPtr" target=_parent class=ISymbol>gdImagePngPtr</a></div></div><div class=SRResult id=SR_gdImagePngPtrEx><div class=IEntry><a href="../files/gd_png-c.html#gdImagePngPtrEx" target=_parent class=ISymbol>gdImagePngPtrEx</a></div></div><div class=SRResult id=SR_gdImagePngToSink><div class=IEntry><a href="../files/gd_ss-c.html#gdImagePngToSink" target=_parent class=ISymbol>gdImagePngToSink</a></div></div><div class=SRResult id=SR_gdImagePolygon><div class=IEntry><a href="../files/gd-c.html#gdImagePolygon" target=_parent class=ISymbol>gdImagePolygon</a></div></div><div class=SRResult id=SR_gdImagePtr><div class=IEntry><a href="../files/gd-h.html#gdImagePtr" target=_parent class=ISymbol>gdImagePtr</a></div></div><div class=SRResult id=SR_gdImageRectangle><div class=IEntry><a href="../files/gd-c.html#gdImageRectangle" target=_parent class=ISymbol>gdImageRectangle</a></div></div><div class=SRResult id=SR_gdImageRed><div class=IEntry><a href="../files/gd-h.html#gdImageRed" target=_parent class=ISymbol>gdImageRed</a></div></div><div class=SRResult id=SR_gdImageResolutionX><div class=IEntry><a href="../files/gd-h.html#gdImageResolutionX" target=_parent class=ISymbol>gdImageResolutionX</a></div></div><div class=SRResult id=SR_gdImageResolutionY><div class=IEntry><a href="../files/gd-h.html#gdImageResolutionY" target=_parent class=ISymbol>gdImageResolutionY</a></div></div><div class=SRResult id=SR_gdImageRotateInterpolated><div class=IEntry><a href="../files/gd_interpolation-c.html#gdImageRotateInterpolated" target=_parent class=ISymbol>gdImageRotateInterpolated</a></div></div><div class=SRResult id=SR_gdImageSaveAlpha><div class=IEntry><a href="../files/gd-c.html#gdImageSaveAlpha" target=_parent class=ISymbol>gdImageSaveAlpha</a></div></div><div class=SRResult id=SR_gdImageScale><div class=IEntry><a href="../files/gd_interpolation-c.html#gdImageScale" target=_parent class=ISymbol>gdImageScale</a></div></div><div class=SRResult id=SR_gdImageScatter><div class=IEntry><a href="../files/gd_filter-c.html#gdImageScatter" target=_parent class=ISymbol>gdImageScatter</a></div></div><div class=SRResult id=SR_gdImageScatterColor><div class=IEntry><a href="../files/gd_filter-c.html#gdImageScatterColor" target=_parent class=ISymbol>gdImageScatterColor</a></div></div><div class=SRResult id=SR_gdImageScatterEx><div class=IEntry><a href="../files/gd_filter-c.html#gdImageScatterEx" target=_parent class=ISymbol>gdImageScatterEx</a></div></div><div class=SRResult id=SR_gdImageSelectiveBlur><div class=IEntry><a href="../files/gd_filter-c.html#gdImageSelectiveBlur" target=_parent class=ISymbol>gdImageSelectiveBlur</a></div></div><div class=SRResult id=SR_gdImageSetAntiAliased><div class=IEntry><a href="../files/gd-c.html#gdImageSetAntiAliased" target=_parent class=ISymbol>gdImageSetAntiAliased</a></div></div><div class=SRResult id=SR_gdImageSetAntiAliasedDontBlend><div class=IEntry><a href="../files/gd-c.html#gdImageSetAntiAliasedDontBlend" target=_parent class=ISymbol>gdImageSetAntiAliasedDontBlend</a></div></div><div class=SRResult id=SR_gdImageSetBrush><div class=IEntry><a href="../files/gd-c.html#gdImageSetBrush" target=_parent class=ISymbol>gdImageSetBrush</a></div></div><div class=SRResult id=SR_gdImageSetClip><div class=IEntry><a href="../files/gd-c.html#gdImageSetClip" target=_parent class=ISymbol>gdImageSetClip</a></div></div><div class=SRResult id=SR_gdImageSetInterpolationMethod><div class=IEntry><a href="../files/gd_interpolation-c.html#gdImageSetInterpolationMethod" target=_parent class=ISymbol>gdImageSetInterpolationMethod</a></div></div><div class=SRResult id=SR_gdImageSetPixel><div class=IEntry><a href="../files/gd-c.html#gdImageSetPixel" target=_parent class=ISymbol>gdImageSetPixel</a></div></div><div class=SRResult id=SR_gdImageSetResolution><div class=IEntry><a href="../files/gd-c.html#gdImageSetResolution" target=_parent class=ISymbol>gdImageSetResolution</a></div></div><div class=SRResult id=SR_gdImageSetStyle><div class=IEntry><a href="../files/gd-c.html#gdImageSetStyle" target=_parent class=ISymbol>gdImageSetStyle</a></div></div><div class=SRResult id=SR_gdImageSetThickness><div class=IEntry><a href="../files/gd-c.html#gdImageSetThickness" target=_parent class=ISymbol>gdImageSetThickness</a></div></div><div class=SRResult id=SR_gdImageSetTile><div class=IEntry><a href="../files/gd-c.html#gdImageSetTile" target=_parent class=ISymbol>gdImageSetTile</a></div></div><div class=SRResult id=SR_gdImageSharpen><div class=IEntry><a href="../files/gdfx-c.html#gdImageSharpen" target=_parent class=ISymbol>gdImageSharpen</a></div></div><div class=SRResult id=SR_gdImageSmooth><div class=IEntry><a href="../files/gd_filter-c.html#gdImageSmooth" target=_parent class=ISymbol>gdImageSmooth</a></div></div><div class=SRResult id=SR_gdImageSquareToCircle><div class=IEntry><a href="../files/gdfx-c.html#gdImageSquareToCircle" target=_parent class=ISymbol>gdImageSquareToCircle</a></div></div><div class=SRResult id=SR_gdImageString><div class=IEntry><a href="../files/gd-c.html#gdImageString" target=_parent class=ISymbol>gdImageString</a></div></div><div class=SRResult id=SR_gdImageString16><div class=IEntry><a href="../files/gd-c.html#gdImageString16" target=_parent class=ISymbol>gdImageString16</a></div></div><div class=SRResult id=SR_gdImageStringFT><div class=IEntry><a href="../files/gdft-c.html#gdImageStringFT" target=_parent class=ISymbol>gdImageStringFT</a></div></div><div class=SRResult id=SR_gdImageStringFTCircle><div class=IEntry><a href="../files/gdfx-c.html#gdImageStringFTCircle" target=_parent class=ISymbol>gdImageStringFTCircle</a></div></div><div class=SRResult id=SR_gdImageStringFTEx><div class=IEntry><a href="../files/gdft-c.html#gdImageStringFTEx" target=_parent class=ISymbol>gdImageStringFTEx</a></div></div><div class=SRResult id=SR_gdImageStringTTF><div class=IEntry><a href="../files/gdft-c.html#gdImageStringTTF" target=_parent class=ISymbol>gdImageStringTTF</a></div></div><div class=SRResult id=SR_gdImageStringUp><div class=IEntry><a href="../files/gd-c.html#gdImageStringUp" target=_parent class=ISymbol>gdImageStringUp</a></div></div><div class=SRResult id=SR_gdImageStringUp16><div class=IEntry><a href="../files/gd-c.html#gdImageStringUp16" target=_parent class=ISymbol>gdImageStringUp16</a></div></div><div class=SRResult id=SR_gdImageSX><div class=IEntry><a href="../files/gd-h.html#gdImageSX" target=_parent class=ISymbol>gdImageSX</a></div></div><div class=SRResult id=SR_gdImageSY><div class=IEntry><a href="../files/gd-h.html#gdImageSY" target=_parent class=ISymbol>gdImageSY</a></div></div><div class=SRResult id=SR_gdImageTiff><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiff" target=_parent class=ISymbol>gdImageTiff</a></div></div><div class=SRResult id=SR_gdImageTiffCtx><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiffCtx" target=_parent class=ISymbol>gdImageTiffCtx</a></div></div><div class=SRResult id=SR_gdImageTiffPtr><div class=IEntry><a href="../files/gd_tiff-c.html#gdImageTiffPtr" target=_parent class=ISymbol>gdImageTiffPtr</a></div></div><div class=SRResult id=SR_gdImageTrueColor><div class=IEntry><a href="../files/gd-h.html#gdImageTrueColor" target=_parent class=ISymbol>gdImageTrueColor</a></div></div><div class=SRResult id=SR_gdImageTrueColorPixel><div class=IEntry><a href="../files/gd-h.html#gdImageTrueColorPixel" target=_parent class=ISymbol>gdImageTrueColorPixel</a></div></div><div class=SRResult id=SR_gdImageTrueColorToPalette><div class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPalette" target=_parent class=ISymbol>gdImageTrueColorToPalette</a></div></div><div class=SRResult id=SR_gdImageTrueColorToPaletteSetMethod><div class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPaletteSetMethod" target=_parent class=ISymbol>gdImageTrueColorToPaletteSetMethod</a></div></div><div class=SRResult id=SR_gdImageTrueColorToPaletteSetQuality><div class=IEntry><a href="../files/gd_topal-c.html#gdImageTrueColorToPaletteSetQuality" target=_parent class=ISymbol>gdImageTrueColorToPaletteSetQuality</a></div></div><div class=SRResult id=SR_gdImageWBMP><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMP" target=_parent class=ISymbol>gdImageWBMP</a></div></div><div class=SRResult id=SR_gdImageWBMPCtx><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMPCtx" target=_parent class=ISymbol>gdImageWBMPCtx</a></div></div><div class=SRResult id=SR_gdImageWBMPPtr><div class=IEntry><a href="../files/gd_wbmp-c.html#gdImageWBMPPtr" target=_parent class=ISymbol>gdImageWBMPPtr</a></div></div><div class=SRResult id=SR_gdImageWebp><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebp" target=_parent class=ISymbol>gdImageWebp</a></div></div><div class=SRResult id=SR_gdImageWebpCtx><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpCtx" target=_parent class=ISymbol>gdImageWebpCtx</a></div></div><div class=SRResult id=SR_gdImageWebpEx><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpEx" target=_parent class=ISymbol>gdImageWebpEx</a></div></div><div class=SRResult id=SR_gdImageWebpPtr><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpPtr" target=_parent class=ISymbol>gdImageWebpPtr</a></div></div><div class=SRResult id=SR_gdImageWebpPtrEx><div class=IEntry><a href="../files/gd_webp-c.html#gdImageWebpPtrEx" target=_parent class=ISymbol>gdImageWebpPtrEx</a></div></div><div class=SRResult id=SR_gdImageXbmCtx><div class=IEntry><a href="../files/gd_xbm-c.html#gdImageXbmCtx" target=_parent class=ISymbol>gdImageXbmCtx</a></div></div><div class=SRResult id=SR_gdInterpolationMethod><div class=IEntry><a href="../files/gd-h.html#gdInterpolationMethod" target=_parent class=ISymbol>gdInterpolationMethod</a></div></div><div class=SRResult id=SR_gdIOCtx><div class=IEntry><a href="../files/gd_io-h.html#gdIOCtx" target=_parent class=ISymbol>gdIOCtx</a></div></div><div class=SRResult id=SR_gdLayerMultiply><div class=IEntry><a href="../files/gd-c.html#gdLayerMultiply" target=_parent class=ISymbol>gdLayerMultiply</a></div></div><div class=SRResult id=SR_gdLayerOverlay><div class=IEntry><a href="../files/gd-c.html#gdLayerOverlay" target=_parent class=ISymbol>gdLayerOverlay</a></div></div><div class=SRResult id=SR_gdMajorVersion><div class=IEntry><a href="../files/gd_version-c.html#gdMajorVersion" target=_parent class=ISymbol>gdMajorVersion</a></div></div><div class=SRResult id=SR_gdMinorVersion><div class=IEntry><a href="../files/gd_version-c.html#gdMinorVersion" target=_parent class=ISymbol>gdMinorVersion</a></div></div><div class=SRResult id=SR_gdNewDynamicCtx><div class=IEntry><a href="../files/gd_io_dp-c.html#gdNewDynamicCtx" target=_parent class=ISymbol>gdNewDynamicCtx</a></div></div><div class=SRResult id=SR_gdNewDynamicCtxEx><div class=IEntry><a href="../files/gd_io_dp-c.html#gdNewDynamicCtxEx" target=_parent class=ISymbol>gdNewDynamicCtxEx</a></div></div><div class=SRResult id=SR_gdNewFileCtx><div class=IEntry><a href="../files/gd_io_file-c.html#gdNewFileCtx" target=_parent class=ISymbol>gdNewFileCtx</a></div></div><div class=SRResult id=SR_gdNewSSCtx><div class=IEntry><a href="../files/gd_io_ss-c.html#gdNewSSCtx" target=_parent class=ISymbol>gdNewSSCtx</a></div></div><div class=SRResult id=SR_gdPaletteQuantizationMethod><div class=IEntry><a href="../files/gd-h.html#gdPaletteQuantizationMethod" target=_parent class=ISymbol>gdPaletteQuantizationMethod</a></div></div><div class=SRResult id=SR_gdPoint><div class=IEntry><a href="../files/gd-h.html#gdPoint" target=_parent class=ISymbol>gdPoint</a></div></div><div class=SRResult id=SR_gdPointF><div class=IEntry><a href="../files/gd-h.html#gdPointF" target=_parent class=ISymbol>gdPointF</a></div></div><div class=SRResult id=SR_gdPointFPtr><div class=IEntry><a href="../files/gd-h.html#gdPointFPtr" target=_parent class=ISymbol>gdPointFPtr</a></div></div><div class=SRResult id=SR_gdPointPtr><div class=IEntry><a href="../files/gd-h.html#gdPointPtr" target=_parent class=ISymbol>gdPointPtr</a></div></div><div class=SRResult id=SR_gdRect><div class=IEntry><a href="../files/gd-h.html#gdRect" target=_parent class=ISymbol>gdRect</a></div></div><div class=SRResult id=SR_gdRectPtr><div class=IEntry><a href="../files/gd-h.html#gdRectPtr" target=_parent class=ISymbol>gdRectPtr</a></div></div><div class=SRResult id=SR_gdReleaseVersion><div class=IEntry><a href="../files/gd_version-c.html#gdReleaseVersion" target=_parent class=ISymbol>gdReleaseVersion</a></div></div><div class=SRResult id=SR_gdSetErrorMethod><div class=IEntry><a href="../files/gd-c.html#gdSetErrorMethod" target=_parent class=ISymbol>gdSetErrorMethod</a></div></div><div class=SRResult id=SR_gdSink><div class=IEntry><a href="../files/gd-h.html#gdSink" target=_parent class=ISymbol>gdSink</a></div></div><div class=SRResult id=SR_gdSinkPtr><div class=IEntry><a href="../files/gd-h.html#gdSinkPtr" target=_parent class=ISymbol>gdSinkPtr</a></div></div><div class=SRResult id=SR_gdSource><div class=IEntry><a href="../files/gd-h.html#gdSource" target=_parent class=ISymbol>gdSource</a></div></div><div class=SRResult id=SR_gdSourcePtr><div class=IEntry><a href="../files/gd-h.html#gdSourcePtr" target=_parent class=ISymbol>gdSourcePtr</a></div></div><div class=SRResult id=SR_gdStyled><div class=IEntry><a href="../files/gd-h.html#gdStyled" target=_parent class=ISymbol>gdStyled</a></div></div><div class=SRResult id=SR_gdStyledBrushed><div class=IEntry><a href="../files/gd-h.html#gdStyledBrushed" target=_parent class=ISymbol>gdStyledBrushed</a></div></div><div class=SRResult id=SR_gdSupportsFileType><div class=IEntry><a href="../files/gd_filename-c.html#gdSupportsFileType" target=_parent class=ISymbol>gdSupportsFileType</a></div></div><div class=SRResult id=SR_gdTiled><div class=IEntry><a href="../files/gd-h.html#gdTiled" target=_parent class=ISymbol>gdTiled</a></div></div><div class=SRResult id=SR_gdTransformAffineBoundingBox><div class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineBoundingBox" target=_parent class=ISymbol>gdTransformAffineBoundingBox</a></div></div><div class=SRResult id=SR_gdTransformAffineCopy><div class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineCopy" target=_parent class=ISymbol>gdTransformAffineCopy</a></div></div><div class=SRResult id=SR_gdTransformAffineGetImage><div class=IEntry><a href="../files/gd_interpolation-c.html#gdTransformAffineGetImage" target=_parent class=ISymbol>gdTransformAffineGetImage</a></div></div><div class=SRResult id=SR_gdTransparent><div class=IEntry><a href="../files/gd-h.html#gdTransparent" target=_parent class=ISymbol>gdTransparent</a></div></div><div class=SRResult id=SR_gdTrueColorAlpha><div class=IEntry><a href="../files/gd-h.html#gdTrueColorAlpha" target=_parent class=ISymbol>gdTrueColorAlpha</a></div></div><div class=SRResult id=SR_gdTrueColorGetAlpha><div class=IEntry><a href="../files/gd-h.html#gdTrueColorGetAlpha" target=_parent class=ISymbol>gdTrueColorGetAlpha</a></div></div><div class=SRResult id=SR_gdTrueColorGetBlue><div class=IEntry><a href="../files/gd-h.html#gdTrueColorGetBlue" target=_parent class=ISymbol>gdTrueColorGetBlue</a></div></div><div class=SRResult id=SR_gdTrueColorGetGreen><div class=IEntry><a href="../files/gd-h.html#gdTrueColorGetGreen" target=_parent class=ISymbol>gdTrueColorGetGreen</a></div></div><div class=SRResult id=SR_gdTrueColorGetRed><div class=IEntry><a href="../files/gd-h.html#gdTrueColorGetRed" target=_parent class=ISymbol>gdTrueColorGetRed</a></div></div><div class=SRResult id=SR_gdVersionString><div class=IEntry><a href="../files/gd_version-c.html#gdVersionString" target=_parent class=ISymbol>gdVersionString</a></div></div><div class=SRResult id=SR_Giant_spcFont><div class=IEntry><a href="../files/gdfontg-c.html#Giant_Font" target=_parent class=ISymbol>Giant Font</a></div></div><div class=SRResult id=SR_GIF_spcInput><div class=IEntry><a href="../files/gd_gif_in-c.html#GIF_Input" target=_parent class=ISymbol>GIF Input</a></div></div><div class=SRResult id=SR_GIF_spcOutput><div class=IEntry><a href="../files/gd_gif_out-c.html#GIF_Output" target=_parent class=ISymbol>GIF Output</a></div></div><div class=SRResult id=SR_GifAnim><div class=IEntry><a href="../files/gd-h.html#GifAnim" target=_parent class=ISymbol>GifAnim</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralI.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralI.html
    new file mode 100644
    index 00000000000..2f96d88a016
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralI.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Image_spcComparison><div class=IEntry><a href="../files/gd-h.html#Image_Comparison" target=_parent class=ISymbol>Image Comparison</a></div></div><div class=SRResult id=SR_Image_spcFilters><div class=IEntry><a href="../files/gd_filter-c.html#Image_Filters" target=_parent class=ISymbol>Image Filters</a></div></div><div class=SRResult id=SR_Interpolation_spcMethod><div class=IEntry><a href="../files/gd_interpolation-c.html#Interpolation_Method" target=_parent class=ISymbol>Interpolation Method</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralJ.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralJ.html
    new file mode 100644
    index 00000000000..320ae5c3c78
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralJ.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_JPEG_spcIO><div class=IEntry><a href="../files/gd_jpeg-c.html#JPEG_IO" target=_parent class=ISymbol>JPEG IO</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralL.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralL.html
    new file mode 100644
    index 00000000000..ff6cbc23f1a
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralL.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Large_spcFont><div class=IEntry><a href="../files/gdfontl-c.html#Large_Font" target=_parent class=ISymbol>Large Font</a></div></div><div class=SRResult id=SR_License><div class=IEntry><a href="../files/license-txt.html#License" target=_parent class=ISymbol>License</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralM.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralM.html
    new file mode 100644
    index 00000000000..d7fed8f9547
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralM.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Matrix><div class=IEntry><a href="../files/gd_matrix-c.html#Matrix" target=_parent class=ISymbol>Matrix</a></div></div><div class=SRResult id=SR_Medium_spcBold_spcFont><div class=IEntry><a href="../files/gdfontmb-c.html#Medium_Bold_Font" target=_parent class=ISymbol>Medium Bold Font</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralNumbers.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralNumbers.html
    new file mode 100644
    index 00000000000..d622d1c1f94
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralNumbers.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_5><div class=IEntry><a href="../files/preamble-txt.html#About_LibGD_2.2.5" target=_parent class=ISymbol>5</a>, <span class=IParent>About LibGD 2::<wbr>2</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralO.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralO.html
    new file mode 100644
    index 00000000000..5a150573565
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralO.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_other><div class=IEntry><a href="../files/gd-c.html#other" target=_parent class=ISymbol>other</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralP.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralP.html
    new file mode 100644
    index 00000000000..87f2ca72f0f
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralP.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Pixels><div class=IEntry><a href="../files/gd-c.html#Pixels" target=_parent class=ISymbol>Pixels</a></div></div><div class=SRResult id=SR_PNG_spcIO><div class=IEntry><a href="../files/gd_png-c.html#PNG_IO" target=_parent class=ISymbol>PNG IO</a></div></div><div class=SRResult id=SR_Polygons><div class=IEntry><a href="../files/gd-c.html#Polygons" target=_parent class=ISymbol>Polygons</a></div></div><div class=SRResult id=SR_Primitives><div class=IEntry><a href="../files/gd-c.html#Primitives" target=_parent class=ISymbol>Primitives</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralS.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralS.html
    new file mode 100644
    index 00000000000..a04dab5e9e5
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralS.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Small_spcFont><div class=IEntry><a href="../files/gdfonts-c.html#Small_Font" target=_parent class=ISymbol>Small Font</a></div></div><div class=SRResult id=SR_Special_spcColors><div class=IEntry><a href="../files/gd-h.html#Special_Colors" target=_parent class=ISymbol>Special Colors</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralT.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralT.html
    new file mode 100644
    index 00000000000..5b1fb869119
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralT.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_TGA_spcInput><div class=IEntry><a href="../files/gd_tga-c.html#TGA_Input" target=_parent class=ISymbol>TGA Input</a></div></div><div class=SRResult id=SR_TIFF_spcIO><div class=IEntry><a href="../files/gd_tiff-c.html#TIFF_IO" target=_parent class=ISymbol>TIFF IO</a></div></div><div class=SRResult id=SR_Tiny_spcFont><div class=IEntry><a href="../files/gdfontt-c.html#Tiny_Font" target=_parent class=ISymbol>Tiny Font</a></div></div><div class=SRResult id=SR_Transform><div class=IEntry><a href="../files/gd-h.html#Transform" target=_parent class=ISymbol>Transform</a></div></div><div class=SRResult id=SR_Transformations><div class=IEntry><a href="../files/gd_transform-c.html#Transformations" target=_parent class=ISymbol>Transformations</a></div></div><div class=SRResult id=SR_Types><div class=IEntry><a href="javascript:searchResults.Toggle('SR_Types')" class=ISymbol>Types</a><div class=ISubIndex><a href="../files/gd-h.html#Types" target=_parent class=IFile>gd.h</a><a href="../files/gd_io-h.html#Types" target=_parent class=IFile>gd_io.h</a></div></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralW.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralW.html
    new file mode 100644
    index 00000000000..65a551d6c74
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralW.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_WBMP_spcIO><div class=IEntry><a href="../files/gd_wbmp-c.html#WBMP_IO" target=_parent class=ISymbol>WBMP IO</a></div></div><div class=SRResult id=SR_WebP_spcIO><div class=IEntry><a href="../files/gd_webp-c.html#WebP_IO" target=_parent class=ISymbol>WebP IO</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralX.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralX.html
    new file mode 100644
    index 00000000000..a1e46bc3837
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralX.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_XBM_spcIO><div class=IEntry><a href="../files/gd_xbm-c.html#XBM_IO" target=_parent class=ISymbol>XBM IO</a></div></div><div class=SRResult id=SR_XPM_spcInput><div class=IEntry><a href="../files/gdxpm-c.html#XPM_Input" target=_parent class=ISymbol>XPM Input</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/MacrosG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/MacrosG.html
    new file mode 100644
    index 00000000000..3d842103821
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/MacrosG.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_gdImageAlpha><div class=IEntry><a href="../files/gd-h.html#gdImageAlpha" target=_parent class=ISymbol>gdImageAlpha</a></div></div><div class=SRResult id=SR_gdImageBlue><div class=IEntry><a href="../files/gd-h.html#gdImageBlue" target=_parent class=ISymbol>gdImageBlue</a></div></div><div class=SRResult id=SR_gdImageColorsTotal><div class=IEntry><a href="../files/gd-h.html#gdImageColorsTotal" target=_parent class=ISymbol>gdImageColorsTotal</a></div></div><div class=SRResult id=SR_gdImageGetInterlaced><div class=IEntry><a href="../files/gd-h.html#gdImageGetInterlaced" target=_parent class=ISymbol>gdImageGetInterlaced</a></div></div><div class=SRResult id=SR_gdImageGetTransparent><div class=IEntry><a href="../files/gd-h.html#gdImageGetTransparent" target=_parent class=ISymbol>gdImageGetTransparent</a></div></div><div class=SRResult id=SR_gdImageGreen><div class=IEntry><a href="../files/gd-h.html#gdImageGreen" target=_parent class=ISymbol>gdImageGreen</a></div></div><div class=SRResult id=SR_gdImagePalettePixel><div class=IEntry><a href="../files/gd-h.html#gdImagePalettePixel" target=_parent class=ISymbol>gdImagePalettePixel</a></div></div><div class=SRResult id=SR_gdImageRed><div class=IEntry><a href="../files/gd-h.html#gdImageRed" target=_parent class=ISymbol>gdImageRed</a></div></div><div class=SRResult id=SR_gdImageResolutionX><div class=IEntry><a href="../files/gd-h.html#gdImageResolutionX" target=_parent class=ISymbol>gdImageResolutionX</a></div></div><div class=SRResult id=SR_gdImageResolutionY><div class=IEntry><a href="../files/gd-h.html#gdImageResolutionY" target=_parent class=ISymbol>gdImageResolutionY</a></div></div><div class=SRResult id=SR_gdImageSX><div class=IEntry><a href="../files/gd-h.html#gdImageSX" target=_parent class=ISymbol>gdImageSX</a></div></div><div class=SRResult id=SR_gdImageSY><div class=IEntry><a href="../files/gd-h.html#gdImageSY" target=_parent class=ISymbol>gdImageSY</a></div></div><div class=SRResult id=SR_gdImageTrueColor><div class=IEntry><a href="../files/gd-h.html#gdImageTrueColor" target=_parent class=ISymbol>gdImageTrueColor</a></div></div><div class=SRResult id=SR_gdImageTrueColorPixel><div class=IEntry><a href="../files/gd-h.html#gdImageTrueColorPixel" target=_parent class=ISymbol>gdImageTrueColorPixel</a></div></div><div class=SRResult id=SR_gdTrueColorAlpha><div class=IEntry><a href="../files/gd-h.html#gdTrueColorAlpha" target=_parent class=ISymbol>gdTrueColorAlpha</a></div></div><div class=SRResult id=SR_gdTrueColorGetAlpha><div class=IEntry><a href="../files/gd-h.html#gdTrueColorGetAlpha" target=_parent class=ISymbol>gdTrueColorGetAlpha</a></div></div><div class=SRResult id=SR_gdTrueColorGetBlue><div class=IEntry><a href="../files/gd-h.html#gdTrueColorGetBlue" target=_parent class=ISymbol>gdTrueColorGetBlue</a></div></div><div class=SRResult id=SR_gdTrueColorGetGreen><div class=IEntry><a href="../files/gd-h.html#gdTrueColorGetGreen" target=_parent class=ISymbol>gdTrueColorGetGreen</a></div></div><div class=SRResult id=SR_gdTrueColorGetRed><div class=IEntry><a href="../files/gd-h.html#gdTrueColorGetRed" target=_parent class=ISymbol>gdTrueColorGetRed</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/NoResults.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/NoResults.html
    new file mode 100644
    index 00000000000..8c724966021
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/NoResults.html
    @@ -0,0 +1,15 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=NoMatches>No Matches</div></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/TypesG.html b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/TypesG.html
    new file mode 100644
    index 00000000000..2890d106c3d
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/TypesG.html
    @@ -0,0 +1,20 @@
    +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
    +
    +<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!--
    +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script>
    +
    +<!--  Generated by Natural Docs, version 1.52 -->
    +<!--  http://www.naturaldocs.org  -->
    +
    +<!-- saved from url=(0026)http://www.naturaldocs.org -->
    +
    +
    +
    +
    +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_gdFont><div class=IEntry><a href="../files/gd-h.html#gdFont" target=_parent class=ISymbol>gdFont</a></div></div><div class=SRResult id=SR_gdFontPtr><div class=IEntry><a href="../files/gd-h.html#gdFontPtr" target=_parent class=ISymbol>gdFontPtr</a></div></div><div class=SRResult id=SR_gdFTStringExtra><div class=IEntry><a href="../files/gd-h.html#gdFTStringExtra" target=_parent class=ISymbol>gdFTStringExtra</a></div></div><div class=SRResult id=SR_gdFTStringExtraPtr><div class=IEntry><a href="../files/gd-h.html#gdFTStringExtraPtr" target=_parent class=ISymbol>gdFTStringExtraPtr</a></div></div><div class=SRResult id=SR_gdImage><div class=IEntry><a href="../files/gd-h.html#gdImage" target=_parent class=ISymbol>gdImage</a></div></div><div class=SRResult id=SR_gdImagePtr><div class=IEntry><a href="../files/gd-h.html#gdImagePtr" target=_parent class=ISymbol>gdImagePtr</a></div></div><div class=SRResult id=SR_gdIOCtx><div class=IEntry><a href="../files/gd_io-h.html#gdIOCtx" target=_parent class=ISymbol>gdIOCtx</a></div></div><div class=SRResult id=SR_gdPaletteQuantizationMethod><div class=IEntry><a href="../files/gd-h.html#gdPaletteQuantizationMethod" target=_parent class=ISymbol>gdPaletteQuantizationMethod</a></div></div><div class=SRResult id=SR_gdPoint><div class=IEntry><a href="../files/gd-h.html#gdPoint" target=_parent class=ISymbol>gdPoint</a></div></div><div class=SRResult id=SR_gdPointF><div class=IEntry><a href="../files/gd-h.html#gdPointF" target=_parent class=ISymbol>gdPointF</a></div></div><div class=SRResult id=SR_gdPointFPtr><div class=IEntry><a href="../files/gd-h.html#gdPointFPtr" target=_parent class=ISymbol>gdPointFPtr</a></div></div><div class=SRResult id=SR_gdPointPtr><div class=IEntry><a href="../files/gd-h.html#gdPointPtr" target=_parent class=ISymbol>gdPointPtr</a></div></div><div class=SRResult id=SR_gdRect><div class=IEntry><a href="../files/gd-h.html#gdRect" target=_parent class=ISymbol>gdRect</a></div></div><div class=SRResult id=SR_gdRectPtr><div class=IEntry><a href="../files/gd-h.html#gdRectPtr" target=_parent class=ISymbol>gdRectPtr</a></div></div><div class=SRResult id=SR_gdSink><div class=IEntry><a href="../files/gd-h.html#gdSink" target=_parent class=ISymbol>gdSink</a></div></div><div class=SRResult id=SR_gdSinkPtr><div class=IEntry><a href="../files/gd-h.html#gdSinkPtr" target=_parent class=ISymbol>gdSinkPtr</a></div></div><div class=SRResult id=SR_gdSource><div class=IEntry><a href="../files/gd-h.html#gdSource" target=_parent class=ISymbol>gdSource</a></div></div><div class=SRResult id=SR_gdSourcePtr><div class=IEntry><a href="../files/gd-h.html#gdSourcePtr" target=_parent class=ISymbol>gdSourcePtr</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!--
    +document.getElementById("Loading").style.display="none";
    +document.getElementById("NoMatches").style.display="none";
    +var searchResults = new SearchResults("searchResults", "HTML");
    +searchResults.Search();
    +--></script></div><script language=JavaScript><!--
    +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/1.css b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/1.css
    new file mode 100644
    index 00000000000..511703fc455
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/1.css
    @@ -0,0 +1,828 @@
    +/*
    +   IMPORTANT: If you're editing this file in the output directory of one of
    +   your projects, your changes will be overwritten the next time you run
    +   Natural Docs.  Instead, copy this file to your project directory, make your
    +   changes, and you can use it with -s.  Even better would be to make a CSS
    +   file in your project directory with only your changes, which you can then
    +   use with -s [original style] [your changes].
    +
    +   On the other hand, if you're editing this file in the Natural Docs styles
    +   directory, the changes will automatically be applied to all your projects
    +   that use this style the next time Natural Docs is run on them.
    +
    +   This file is part of Natural Docs, which is Copyright © 2003-2010 Greg Valure.
    +   Natural Docs is licensed under version 3 of the GNU Affero General Public
    +   License (AGPL).  Refer to License.txt for the complete details.
    +
    +   This file may be distributed with documentation files generated by Natural Docs.
    +   Such documentation is not covered by Natural Docs' copyright and licensing,
    +   and may have its own copyright and distribution terms as decided by its author.
    +*/
    +
    +body {
    +    font: 10pt Verdana, Arial, sans-serif;
    +    color: #000000;
    +    margin: 0; padding: 0;
    +    }
    +
    +.ContentPage,
    +.IndexPage,
    +.FramedMenuPage {
    +    background-color: #E8E8E8;
    +    }
    +.FramedContentPage,
    +.FramedIndexPage,
    +.FramedSearchResultsPage,
    +.PopupSearchResultsPage {
    +    background-color: #FFFFFF;
    +    }
    +
    +
    +a:link,
    +a:visited { color: #900000; text-decoration: none }
    +a:hover { color: #900000; text-decoration: underline }
    +a:active { color: #FF0000; text-decoration: underline }
    +
    +td {
    +    vertical-align: top }
    +
    +img { border: 0;  }
    +
    +
    +/*
    +    Comment out this line to use web-style paragraphs (blank line between
    +    paragraphs, no indent) instead of print-style paragraphs (no blank line,
    +    indented.)
    +*/
    +p {
    +    text-indent: 5ex; margin: 0 }
    +
    +
    +/*  Opera doesn't break with just wbr, but will if you add this.  */
    +.Opera wbr:after {
    +	content: "\00200B";
    +	}
    +
    +
    +/*  Blockquotes are used as containers for things that may need to scroll.  */
    +blockquote {
    +    padding: 0;
    +    margin: 0;
    +    overflow: auto;
    +    }
    +
    +
    +.Firefox1 blockquote {
    +    padding-bottom: .5em;
    +    }
    +
    +/*  Turn off scrolling when printing.  */
    +@media print {
    +    blockquote {
    +        overflow: visible;
    +        }
    +    .IE blockquote {
    +        width: auto;
    +        }
    +    }
    +
    +
    +
    +#Menu {
    +    font-size: 9pt;
    +    padding: 10px 0 0 0;
    +    }
    +.ContentPage #Menu,
    +.IndexPage #Menu {
    +    position: absolute;
    +    top: 0;
    +    left: 0;
    +    width: 31ex;
    +    overflow: hidden;
    +    }
    +.ContentPage .Firefox #Menu,
    +.IndexPage .Firefox #Menu {
    +    width: 27ex;
    +    }
    +
    +
    +    .MTitle {
    +        font-size: 16pt; font-weight: bold; font-variant: small-caps;
    +        text-align: center;
    +        padding: 5px 10px 15px 10px;
    +        border-bottom: 1px dotted #000000;
    +        margin-bottom: 15px }
    +
    +    .MSubTitle {
    +        font-size: 9pt; font-weight: normal; font-variant: normal;
    +        margin-top: 1ex; margin-bottom: 5px }
    +
    +
    +    .MEntry a:link,
    +    .MEntry a:hover,
    +    .MEntry a:visited { color: #606060; margin-right: 0 }
    +    .MEntry a:active { color: #A00000; margin-right: 0 }
    +
    +
    +    .MGroup {
    +        font-variant: small-caps; font-weight: bold;
    +        margin: 1em 0 1em 10px;
    +        }
    +
    +    .MGroupContent {
    +        font-variant: normal; font-weight: normal }
    +
    +    .MGroup a:link,
    +    .MGroup a:hover,
    +    .MGroup a:visited { color: #545454; margin-right: 10px }
    +    .MGroup a:active { color: #A00000; margin-right: 10px }
    +
    +
    +    .MFile,
    +    .MText,
    +    .MLink,
    +    .MIndex {
    +        padding: 1px 17px 2px 10px;
    +        margin: .25em 0 .25em 0;
    +        }
    +
    +    .MText {
    +        font-size: 8pt; font-style: italic }
    +
    +    .MLink {
    +        font-style: italic }
    +
    +    #MSelected {
    +        color: #000000; background-color: #FFFFFF;
    +        /*  Replace padding with border.  */
    +        padding: 0 10px 0 10px;
    +        border-width: 1px 2px 2px 0; border-style: solid; border-color: #000000;
    +        margin-right: 5px;
    +        }
    +
    +    /*  Close off the left side when its in a group.  */
    +    .MGroup #MSelected {
    +        padding-left: 9px; border-left-width: 1px }
    +
    +    /*  A treat for Mozilla users.  Blatantly non-standard.  Will be replaced with CSS 3 attributes when finalized/supported.  */
    +    .Firefox #MSelected {
    +        -moz-border-radius-topright: 10px;
    +        -moz-border-radius-bottomright: 10px }
    +    .Firefox .MGroup #MSelected {
    +        -moz-border-radius-topleft: 10px;
    +        -moz-border-radius-bottomleft: 10px }
    +
    +
    +    #MSearchPanel {
    +        padding: 0px 6px;
    +        margin: .25em 0;
    +        }
    +
    +
    +    #MSearchField {
    +        font: italic 9pt Verdana, sans-serif;
    +        color: #606060;
    +        background-color: #E8E8E8;
    +        border: none;
    +        padding: 2px 4px;
    +        width: 100%;
    +        }
    +    /* Only Opera gets it right. */
    +    .Firefox #MSearchField,
    +    .IE #MSearchField,
    +    .Safari #MSearchField {
    +        width: 94%;
    +        }
    +    .Opera9 #MSearchField,
    +    .Konqueror #MSearchField {
    +        width: 97%;
    +        }
    +    .FramedMenuPage .Firefox #MSearchField,
    +    .FramedMenuPage .Safari #MSearchField,
    +    .FramedMenuPage .Konqueror #MSearchField {
    +        width: 98%;
    +        }
    +
    +    /* Firefox doesn't do this right in frames without #MSearchPanel added on.
    +        It's presence doesn't hurt anything other browsers. */
    +    #MSearchPanel.MSearchPanelInactive:hover #MSearchField {
    +        background-color: #FFFFFF;
    +        border: 1px solid #C0C0C0;
    +        padding: 1px 3px;
    +        }
    +    .MSearchPanelActive #MSearchField {
    +        background-color: #FFFFFF;
    +        border: 1px solid #C0C0C0;
    +        font-style: normal;
    +        padding: 1px 3px;
    +        }
    +
    +    #MSearchType {
    +        visibility: hidden;
    +        font: 8pt Verdana, sans-serif;
    +        width: 98%;
    +        padding: 0;
    +        border: 1px solid #C0C0C0;
    +        }
    +    .MSearchPanelActive #MSearchType,
    +    /*  As mentioned above, Firefox doesn't do this right in frames without #MSearchPanel added on. */
    +    #MSearchPanel.MSearchPanelInactive:hover #MSearchType,
    +    #MSearchType:focus {
    +        visibility: visible;
    +        color: #606060;
    +        }
    +    #MSearchType option#MSearchEverything {
    +        font-weight: bold;
    +        }
    +
    +    .Opera8 .MSearchPanelInactive:hover,
    +    .Opera8 .MSearchPanelActive {
    +        margin-left: -1px;
    +        }
    +
    +
    +    iframe#MSearchResults {
    +        width: 60ex;
    +        height: 15em;
    +        }
    +    #MSearchResultsWindow {
    +        display: none;
    +        position: absolute;
    +        left: 0; top: 0;
    +        border: 1px solid #000000;
    +        background-color: #E8E8E8;
    +        }
    +    #MSearchResultsWindowClose {
    +        font-weight: bold;
    +        font-size: 8pt;
    +        display: block;
    +        padding: 2px 5px;
    +        }
    +    #MSearchResultsWindowClose:link,
    +    #MSearchResultsWindowClose:visited {
    +        color: #000000;
    +        text-decoration: none;
    +        }
    +    #MSearchResultsWindowClose:active,
    +    #MSearchResultsWindowClose:hover {
    +        color: #800000;
    +        text-decoration: none;
    +        background-color: #F4F4F4;
    +        }
    +
    +
    +
    +
    +#Content {
    +    padding-bottom: 15px;
    +    }
    +
    +.ContentPage #Content {
    +    border-width: 0 0 1px 1px;
    +    border-style: solid;
    +    border-color: #000000;
    +    background-color: #FFFFFF;
    +    font-size: 9pt;  /* To make 31ex match the menu's 31ex. */
    +    margin-left: 31ex;
    +    }
    +.ContentPage .Firefox #Content {
    +    margin-left: 27ex;
    +    }
    +
    +
    +
    +    .CTopic {
    +        font-size: 10pt;
    +        margin-bottom: 3em;
    +        }
    +
    +
    +    .CTitle {
    +        font-size: 12pt; font-weight: bold;
    +        border-width: 0 0 1px 0; border-style: solid; border-color: #A0A0A0;
    +        margin: 0 15px .5em 15px }
    +
    +    .CGroup .CTitle {
    +        font-size: 16pt; font-variant: small-caps;
    +        padding-left: 15px; padding-right: 15px;
    +        border-width: 0 0 2px 0; border-color: #000000;
    +        margin-left: 0; margin-right: 0 }
    +
    +    .CClass .CTitle,
    +    .CInterface .CTitle,
    +    .CDatabase .CTitle,
    +    .CDatabaseTable .CTitle,
    +    .CSection .CTitle {
    +        font-size: 18pt;
    +        color: #FFFFFF; background-color: #A0A0A0;
    +        padding: 10px 15px 10px 15px;
    +        border-width: 2px 0; border-color: #000000;
    +        margin-left: 0; margin-right: 0 }
    +
    +    #MainTopic .CTitle {
    +        font-size: 20pt;
    +        color: #FFFFFF; background-color: #7070C0;
    +        padding: 10px 15px 10px 15px;
    +        border-width: 0 0 3px 0; border-color: #000000;
    +        margin-left: 0; margin-right: 0 }
    +
    +    .CBody {
    +        margin-left: 15px; margin-right: 15px }
    +
    +
    +    .CToolTip {
    +        position: absolute; visibility: hidden;
    +        left: 0; top: 0;
    +        background-color: #FFFFE0;
    +        padding: 5px;
    +        border-width: 1px 2px 2px 1px; border-style: solid; border-color: #000000;
    +        font-size: 8pt;
    +        }
    +
    +    .Opera .CToolTip {
    +        max-width: 98%;
    +        }
    +
    +    /*  Scrollbars would be useless.  */
    +    .CToolTip blockquote {
    +        overflow: hidden;
    +        }
    +    .IE6 .CToolTip blockquote {
    +        overflow: visible;
    +        }
    +
    +    .CHeading {
    +        font-weight: bold; font-size: 10pt;
    +        margin: 1.5em 0 .5em 0;
    +        }
    +
    +    .CBody pre {
    +        font: 10pt "Courier New", Courier, monospace;
    +	    background-color: #FCFCFC;
    +	    margin: 1em 35px;
    +	    padding: 10px 15px 10px 10px;
    +	    border-color: #E0E0E0 #E0E0E0 #E0E0E0 #E4E4E4;
    +	    border-width: 1px 1px 1px 6px;
    +	    border-style: dashed dashed dashed solid;
    +        }
    +
    +    .CBody ul {
    +        /*  I don't know why CBody's margin doesn't apply, but it's consistent across browsers so whatever.
    +             Reapply it here as padding.  */
    +        padding-left: 15px; padding-right: 15px;
    +        margin: .5em 5ex .5em 5ex;
    +        }
    +
    +    .CDescriptionList {
    +        margin: .5em 5ex 0 5ex }
    +
    +        .CDLEntry {
    +            font: 10pt "Courier New", Courier, monospace; color: #808080;
    +            padding-bottom: .25em;
    +            white-space: nowrap }
    +
    +        .CDLDescription {
    +            font-size: 10pt;  /*  For browsers that don't inherit correctly, like Opera 5.  */
    +            padding-bottom: .5em; padding-left: 5ex }
    +
    +
    +    .CTopic img {
    +        text-align: center;
    +        display: block;
    +        margin: 1em auto;
    +        }
    +    .CImageCaption {
    +        font-variant: small-caps;
    +        font-size: 8pt;
    +        color: #808080;
    +        text-align: center;
    +        position: relative;
    +        top: 1em;
    +        }
    +
    +    .CImageLink {
    +        color: #808080;
    +        font-style: italic;
    +        }
    +    a.CImageLink:link,
    +    a.CImageLink:visited,
    +    a.CImageLink:hover { color: #808080 }
    +
    +
    +
    +
    +
    +.Prototype {
    +    font: 10pt "Courier New", Courier, monospace;
    +    padding: 5px 3ex;
    +    border-width: 1px; border-style: solid;
    +    margin: 0 5ex 1.5em 5ex;
    +    }
    +
    +    .Prototype td {
    +        font-size: 10pt;
    +        }
    +
    +    .PDefaultValue,
    +    .PDefaultValuePrefix,
    +    .PTypePrefix {
    +        color: #8F8F8F;
    +        }
    +    .PTypePrefix {
    +        text-align: right;
    +        }
    +    .PAfterParameters {
    +        vertical-align: bottom;
    +        }
    +
    +    .IE .Prototype table {
    +        padding: 0;
    +        }
    +
    +    .CFunction .Prototype {
    +        background-color: #F4F4F4; border-color: #D0D0D0 }
    +    .CProperty .Prototype {
    +        background-color: #F4F4FF; border-color: #C0C0E8 }
    +    .CVariable .Prototype {
    +        background-color: #FFFFF0; border-color: #E0E0A0 }
    +
    +    .CClass .Prototype {
    +        border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0;
    +        background-color: #F4F4F4;
    +        }
    +    .CInterface .Prototype {
    +        border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0D0;
    +        background-color: #F4F4FF;
    +        }
    +
    +    .CDatabaseIndex .Prototype,
    +    .CConstant .Prototype {
    +        background-color: #D0D0D0; border-color: #000000 }
    +    .CType .Prototype,
    +    .CEnumeration .Prototype {
    +        background-color: #FAF0F0; border-color: #E0B0B0;
    +        }
    +    .CDatabaseTrigger .Prototype,
    +    .CEvent .Prototype,
    +    .CDelegate .Prototype {
    +        background-color: #F0FCF0; border-color: #B8E4B8 }
    +
    +    .CToolTip .Prototype {
    +        margin: 0 0 .5em 0;
    +        white-space: nowrap;
    +        }
    +
    +
    +
    +
    +
    +.Summary {
    +    margin: 1.5em 5ex 0 5ex }
    +
    +    .STitle {
    +        font-size: 12pt; font-weight: bold;
    +        margin-bottom: .5em }
    +
    +
    +    .SBorder {
    +        background-color: #FFFFF0;
    +        padding: 15px;
    +        border: 1px solid #C0C060 }
    +
    +    /* In a frame IE 6 will make them too long unless you set the width to 100%.  Without frames it will be correct without a width
    +        or slightly too long (but not enough to scroll) with a width.  This arbitrary weirdness simply astounds me.  IE 7 has the same
    +        problem with frames, haven't tested it without.  */
    +    .FramedContentPage .IE .SBorder {
    +        width: 100% }
    +
    +    /*  A treat for Mozilla users.  Blatantly non-standard.  Will be replaced with CSS 3 attributes when finalized/supported.  */
    +    .Firefox .SBorder {
    +        -moz-border-radius: 20px }
    +
    +
    +    .STable {
    +        font-size: 9pt; width: 100% }
    +
    +    .SEntry {
    +        width: 30% }
    +    .SDescription {
    +        width: 70% }
    +
    +
    +    .SMarked {
    +        background-color: #F8F8D8 }
    +
    +    .SDescription { padding-left: 2ex }
    +    .SIndent1 .SEntry { padding-left: 1.5ex }   .SIndent1 .SDescription { padding-left: 3.5ex }
    +    .SIndent2 .SEntry { padding-left: 3.0ex }   .SIndent2 .SDescription { padding-left: 5.0ex }
    +    .SIndent3 .SEntry { padding-left: 4.5ex }   .SIndent3 .SDescription { padding-left: 6.5ex }
    +    .SIndent4 .SEntry { padding-left: 6.0ex }   .SIndent4 .SDescription { padding-left: 8.0ex }
    +    .SIndent5 .SEntry { padding-left: 7.5ex }   .SIndent5 .SDescription { padding-left: 9.5ex }
    +
    +    .SDescription a { color: #800000}
    +    .SDescription a:active { color: #A00000 }
    +
    +    .SGroup td {
    +        padding-top: .5em; padding-bottom: .25em }
    +
    +    .SGroup .SEntry {
    +        font-weight: bold; font-variant: small-caps }
    +
    +    .SGroup .SEntry a { color: #800000 }
    +    .SGroup .SEntry a:active { color: #F00000 }
    +
    +
    +    .SMain td,
    +    .SClass td,
    +    .SDatabase td,
    +    .SDatabaseTable td,
    +    .SSection td {
    +        font-size: 10pt;
    +        padding-bottom: .25em }
    +
    +    .SClass td,
    +    .SDatabase td,
    +    .SDatabaseTable td,
    +    .SSection td {
    +        padding-top: 1em }
    +
    +    .SMain .SEntry,
    +    .SClass .SEntry,
    +    .SDatabase .SEntry,
    +    .SDatabaseTable .SEntry,
    +    .SSection .SEntry {
    +        font-weight: bold;
    +        }
    +
    +    .SMain .SEntry a,
    +    .SClass .SEntry a,
    +    .SDatabase .SEntry a,
    +    .SDatabaseTable .SEntry a,
    +    .SSection .SEntry a { color: #000000 }
    +
    +    .SMain .SEntry a:active,
    +    .SClass .SEntry a:active,
    +    .SDatabase .SEntry a:active,
    +    .SDatabaseTable .SEntry a:active,
    +    .SSection .SEntry a:active { color: #A00000 }
    +
    +
    +
    +
    +
    +.ClassHierarchy {
    +    margin: 0 15px 1em 15px }
    +
    +    .CHEntry {
    +        border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0;
    +        margin-bottom: 3px;
    +        padding: 2px 2ex;
    +        font-size: 10pt;
    +        background-color: #F4F4F4; color: #606060;
    +        }
    +
    +    .Firefox .CHEntry {
    +        -moz-border-radius: 4px;
    +        }
    +
    +    .CHCurrent .CHEntry {
    +        font-weight: bold;
    +        border-color: #000000;
    +        color: #000000;
    +        }
    +
    +    .CHChildNote .CHEntry {
    +        font-style: italic;
    +        font-size: 8pt;
    +        }
    +
    +    .CHIndent {
    +        margin-left: 3ex;
    +        }
    +
    +    .CHEntry a:link,
    +    .CHEntry a:visited,
    +    .CHEntry a:hover {
    +        color: #606060;
    +        }
    +    .CHEntry a:active {
    +        color: #800000;
    +        }
    +
    +
    +
    +
    +
    +#Index {
    +    background-color: #FFFFFF;
    +    }
    +
    +/*  As opposed to .PopupSearchResultsPage #Index  */
    +.IndexPage #Index,
    +.FramedIndexPage #Index,
    +.FramedSearchResultsPage #Index {
    +    padding: 15px;
    +    }
    +
    +.IndexPage #Index {
    +    border-width: 0 0 1px 1px;
    +    border-style: solid;
    +    border-color: #000000;
    +    font-size: 9pt;  /* To make 27ex match the menu's 27ex. */
    +    margin-left: 27ex;
    +    }
    +
    +
    +    .IPageTitle {
    +        font-size: 20pt; font-weight: bold;
    +        color: #FFFFFF; background-color: #7070C0;
    +        padding: 10px 15px 10px 15px;
    +        border-width: 0 0 3px 0; border-color: #000000; border-style: solid;
    +        margin: -15px -15px 0 -15px }
    +
    +    .FramedSearchResultsPage .IPageTitle {
    +        margin-bottom: 15px;
    +        }
    +
    +    .INavigationBar {
    +        font-size: 10pt;
    +        text-align: center;
    +        background-color: #FFFFF0;
    +        padding: 5px;
    +        border-bottom: solid 1px black;
    +        margin: 0 -15px 15px -15px;
    +        }
    +
    +    .INavigationBar a {
    +        font-weight: bold }
    +
    +    .IHeading {
    +        font-size: 16pt; font-weight: bold;
    +        padding: 2.5em 0 .5em 0;
    +        text-align: center;
    +        width: 3.5ex;
    +        }
    +    #IFirstHeading {
    +        padding-top: 0;
    +        }
    +
    +    .IEntry {
    +        font-size: 10pt;
    +        padding-left: 1ex;
    +        }
    +    .PopupSearchResultsPage .IEntry {
    +        font-size: 8pt;
    +        padding: 1px 5px;
    +        }
    +    .PopupSearchResultsPage .Opera9 .IEntry,
    +    .FramedSearchResultsPage .Opera9 .IEntry {
    +        text-align: left;
    +        }
    +    .FramedSearchResultsPage .IEntry {
    +        padding: 0;
    +        }
    +
    +    .ISubIndex {
    +        padding-left: 3ex; padding-bottom: .5em }
    +    .PopupSearchResultsPage .ISubIndex {
    +        display: none;
    +        }
    +
    +    /*  While it may cause some entries to look like links when they aren't, I found it's much easier to read the
    +         index if everything's the same color.  */
    +    .ISymbol {
    +        font-weight: bold; color: #900000  }
    +
    +    .IndexPage .ISymbolPrefix,
    +    .FramedIndexPage .ISymbolPrefix {
    +        font-size: 10pt;
    +        text-align: right;
    +        color: #C47C7C;
    +        background-color: #F8F8F8;
    +        border-right: 3px solid #E0E0E0;
    +        border-left: 1px solid #E0E0E0;
    +        padding: 0 1px 0 2px;
    +        }
    +    .PopupSearchResultsPage .ISymbolPrefix,
    +    .FramedSearchResultsPage .ISymbolPrefix {
    +        color: #900000;
    +        }
    +    .PopupSearchResultsPage .ISymbolPrefix {
    +        font-size: 8pt;
    +        }
    +
    +    .IndexPage #IFirstSymbolPrefix,
    +    .FramedIndexPage #IFirstSymbolPrefix {
    +        border-top: 1px solid #E0E0E0;
    +        }
    +    .IndexPage #ILastSymbolPrefix,
    +    .FramedIndexPage #ILastSymbolPrefix {
    +        border-bottom: 1px solid #E0E0E0;
    +        }
    +    .IndexPage #IOnlySymbolPrefix,
    +    .FramedIndexPage #IOnlySymbolPrefix {
    +        border-top: 1px solid #E0E0E0;
    +        border-bottom: 1px solid #E0E0E0;
    +        }
    +
    +    a.IParent,
    +    a.IFile {
    +        display: block;
    +        }
    +
    +    .PopupSearchResultsPage .SRStatus {
    +        padding: 2px 5px;
    +        font-size: 8pt;
    +        font-style: italic;
    +        }
    +    .FramedSearchResultsPage .SRStatus {
    +        font-size: 10pt;
    +        font-style: italic;
    +        }
    +
    +    .SRResult {
    +        display: none;
    +        }
    +
    +
    +
    +#Footer {
    +    font-size: 8pt;
    +    color: #989898;
    +    text-align: right;
    +    }
    +
    +#Footer p {
    +    text-indent: 0;
    +    margin-bottom: .5em;
    +    }
    +
    +.ContentPage #Footer,
    +.IndexPage #Footer {
    +    text-align: right;
    +    margin: 2px;
    +    }
    +
    +.FramedMenuPage #Footer {
    +    text-align: center;
    +    margin: 5em 10px 10px 10px;
    +    padding-top: 1em;
    +    border-top: 1px solid #C8C8C8;
    +    }
    +
    +    #Footer a:link,
    +    #Footer a:hover,
    +    #Footer a:visited { color: #989898 }
    +    #Footer a:active { color: #A00000 }
    +
    +
    +
    +.prettyprint .kwd { color: #800000; }  /* keywords */
    +
    +    .prettyprint.PDefaultValue .kwd,
    +    .prettyprint.PDefaultValuePrefix .kwd,
    +    .prettyprint.PTypePrefix .kwd {
    +        color: #C88F8F;
    +        }
    +
    +.prettyprint .com { color: #008000; }  /* comments */
    +
    +    .prettyprint.PDefaultValue .com,
    +    .prettyprint.PDefaultValuePrefix .com,
    +    .prettyprint.PTypePrefix .com {
    +        color: #8FC88F;
    +        }
    +
    +.prettyprint .str { color: #0000B0; }  /* strings */
    +.prettyprint .lit { color: #0000B0; }  /* literals */
    +
    +    .prettyprint.PDefaultValue .str,
    +    .prettyprint.PDefaultValuePrefix .str,
    +    .prettyprint.PTypePrefix .str,
    +    .prettyprint.PDefaultValue .lit,
    +    .prettyprint.PDefaultValuePrefix .lit,
    +    .prettyprint.PTypePrefix .lit {
    +        color: #8F8FC0;
    +        }
    +
    +.prettyprint .typ { color: #000000; }  /* types */
    +.prettyprint .pun { color: #000000; }  /* punctuation */
    +.prettyprint .pln { color: #000000; }  /* punctuation */
    +
    +    .prettyprint.PDefaultValue .typ,
    +    .prettyprint.PDefaultValuePrefix .typ,
    +    .prettyprint.PTypePrefix .typ,
    +    .prettyprint.PDefaultValue .pun,
    +    .prettyprint.PDefaultValuePrefix .pun,
    +    .prettyprint.PTypePrefix .pun,
    +    .prettyprint.PDefaultValue .pln,
    +    .prettyprint.PDefaultValuePrefix .pln,
    +    .prettyprint.PTypePrefix .pln {
    +        color: #8F8F8F;
    +        }
    +
    +.prettyprint .tag { color: #008; }
    +.prettyprint .atn { color: #606; }
    +.prettyprint .atv { color: #080; }
    +.prettyprint .dec { color: #606; }
    +
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/2.css b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/2.css
    new file mode 100644
    index 00000000000..ff83144c574
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/2.css
    @@ -0,0 +1,9 @@
    +/*
    +Custom styles for the generated HTML, which are supposed to override the default
    +styles
    +*/
    +
    +p {
    +    text-indent: 0;
    +    margin-bottom: 1em;
    +}
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/main.css b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/main.css
    new file mode 100644
    index 00000000000..a672a94920c
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/main.css
    @@ -0,0 +1,2 @@
    +@import URL("1.css");
    +@import URL("2.css");
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ClassHierarchy.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ClassHierarchy.nd
    new file mode 100644
    index 00000000000..bc063b0abe6
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ClassHierarchy.nd differ
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ConfigFileInfo.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ConfigFileInfo.nd
    new file mode 100644
    index 00000000000..012137a9505
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ConfigFileInfo.nd differ
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/FileInfo.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/FileInfo.nd
    new file mode 100644
    index 00000000000..d5b46fa0d8d
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/FileInfo.nd
    @@ -0,0 +1,95 @@
    +1.52
    +C/C++
    +/parent/libgd/docs/naturaldocs/tmp/gd2topng.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/gd2topng.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_webp.c	1504090822	1	WebP IO
    +/parent/libgd/docs/naturaldocs/tmp/gdparttopng.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdparttopng.c
    +/parent/libgd/docs/naturaldocs/tmp/gdfontt.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdfontt.h
    +/parent/libgd/docs/naturaldocs/tmp/gdfontmb.c	1504090822	1	Medium Bold Font
    +/parent/libgd/docs/naturaldocs/tmp/webpng.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/webpng.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_wbmp.c	1504090822	1	WBMP IO
    +/parent/libgd/docs/naturaldocs/tmp/gd_jpeg.c	1504090821	1	JPEG IO
    +/parent/libgd/docs/naturaldocs/tmp/gd_png.c	1504090821	1	PNG IO
    +/parent/libgd/docs/naturaldocs/tmp/gdcache.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdcache.h
    +/parent/libgd/docs/naturaldocs/tmp/gdpp.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdpp.h
    +/parent/libgd/docs/naturaldocs/tmp/gd_nnquant.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gd_nnquant.h
    +/parent/libgd/docs/naturaldocs/tmp/gdfontl.c	1504090822	1	Large Font
    +/parent/libgd/docs/naturaldocs/tmp/testac.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/testac.c
    +/parent/libgd/docs/naturaldocs/tmp/gdtest.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdtest.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_intern.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gd_intern.h
    +/parent/libgd/docs/naturaldocs/tmp/gd.h	1504090822	1	/parent/libgd/docs/naturaldocs/tmp/gd.h
    +/parent/libgd/docs/naturaldocs/tmp/gd_io_stream.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gd_io_stream.h
    +/parent/libgd/docs/naturaldocs/tmp/gd2time.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/gd2time.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_interpolation.c	1504090821	1	/parent/libgd/docs/naturaldocs/tmp/gd_interpolation.c
    +/parent/libgd/docs/naturaldocs/tmp/gdxpm.c	1504090822	1	XPM Input
    +/parent/libgd/docs/naturaldocs/tmp/entities.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/entities.h
    +/parent/libgd/docs/naturaldocs/tmp/gdfontl.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdfontl.h
    +/parent/libgd/docs/naturaldocs/tmp/circletexttest.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/circletexttest.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_io_file.c	1504090821	1	gdNewFileCtx
    +/parent/libgd/docs/naturaldocs/tmp/snprintf.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/snprintf.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_color.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gd_color.h
    +/parent/libgd/docs/naturaldocs/tmp/gd_gif_out.c	1504090821	1	GIF Output
    +/parent/libgd/docs/naturaldocs/tmp/gd_color.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/gd_color.c
    +/parent/libgd/docs/naturaldocs/tmp/fontconfigtest.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/fontconfigtest.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_rotate.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/gd_rotate.c
    +/parent/libgd/docs/naturaldocs/tmp/gdtopng.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdtopng.c
    +/parent/libgd/docs/naturaldocs/tmp/wbmp.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/wbmp.h
    +/parent/libgd/docs/naturaldocs/tmp/gd_crop.c	1504090821	1	Cropping
    +/parent/libgd/docs/naturaldocs/tmp/fontsizetest.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/fontsizetest.c
    +/parent/libgd/docs/naturaldocs/tmp/gifanimtest.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gifanimtest.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_nnquant.c	1504090821	1	gdImageNeuQuant
    +/parent/libgd/docs/naturaldocs/tmp/gd_security.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/gd_security.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_color_map.c	1504090821	1	gdColorMapLookup
    +/parent/libgd/docs/naturaldocs/tmp/gd_bmp.c	1504090821	1	BMP IO
    +/parent/libgd/docs/naturaldocs/tmp/jisx0208.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/jisx0208.h
    +/parent/libgd/docs/naturaldocs/tmp/gdfx.c	1504090822	1	/parent/libgd/docs/naturaldocs/tmp/gdfx.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_transform.c	1504090822	1	Transformations
    +/parent/libgd/docs/naturaldocs/tmp/pngtogd.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/pngtogd.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_color_match.c	1504090821	1	gdImageColorMatch
    +/parent/libgd/docs/naturaldocs/tmp/gd_filename.c	1504090821	1	/parent/libgd/docs/naturaldocs/tmp/gd_filename.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_io_ss.c	1504090821	1	gdNewSSCtx
    +/parent/libgd/docs/naturaldocs/tmp/gdfontg.c	1504090822	1	Giant Font
    +/parent/libgd/docs/naturaldocs/tmp/wbmp.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/wbmp.c
    +/parent/libgd/docs/naturaldocs/tmp/gdcache.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdcache.c
    +/parent/libgd/docs/naturaldocs/tmp/gdhelpers.c	1504090822	1	gdFree
    +/parent/libgd/docs/naturaldocs/tmp/gdfontt.c	1504090822	1	Tiny Font
    +/parent/libgd/docs/naturaldocs/tmp/gd_io_dp.c	1504090821	1	/parent/libgd/docs/naturaldocs/tmp/gd_io_dp.c
    +/parent/libgd/docs/naturaldocs/tmp/gd2togif.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/gd2togif.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_version.c	1504090822	1	/parent/libgd/docs/naturaldocs/tmp/gd_version.c
    +/parent/libgd/docs/naturaldocs/tmp/giftogd2.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/giftogd2.c
    +/parent/libgd/docs/naturaldocs/tmp/gd.c	1504090821	1	/parent/libgd/docs/naturaldocs/tmp/gd.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_gd.c	1504090821	1	GD IO
    +/parent/libgd/docs/naturaldocs/tmp/gdtables.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdtables.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_io.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/gd_io.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_tga.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gd_tga.h
    +/parent/libgd/docs/naturaldocs/tmp/gdfontg.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdfontg.h
    +/parent/libgd/docs/naturaldocs/tmp/testtr.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/testtr.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_tga.c	1504090821	1	TGA Input
    +/parent/libgd/docs/naturaldocs/tmp/gdcmpgif.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdcmpgif.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_filter.c	1504090821	1	Image Filters
    +/parent/libgd/docs/naturaldocs/tmp/annotate.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/annotate.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_errors.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gd_errors.h
    +/parent/libgd/docs/naturaldocs/tmp/gd_gif_in.c	1504090821	1	GIF Input
    +/parent/libgd/docs/naturaldocs/tmp/gdft.c	1504090822	1	FreeType font rendering
    +/parent/libgd/docs/naturaldocs/tmp/gddemo.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gddemo.c
    +/parent/libgd/docs/naturaldocs/tmp/fontwheeltest.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/fontwheeltest.c
    +/parent/libgd/docs/naturaldocs/tmp/gdfonts.c	1504090822	1	Small Font
    +/parent/libgd/docs/naturaldocs/tmp/gdhelpers.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdhelpers.h
    +/parent/libgd/docs/naturaldocs/tmp/gd_io.h	1504090822	1	/parent/libgd/docs/naturaldocs/tmp/gd_io.h
    +/parent/libgd/docs/naturaldocs/tmp/gdfx.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdfx.h
    +/parent/libgd/docs/naturaldocs/tmp/gd_ss.c	1504090821	1	/parent/libgd/docs/naturaldocs/tmp/gd_ss.c
    +/parent/libgd/docs/naturaldocs/tmp/bmp.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/bmp.h
    +/parent/libgd/docs/naturaldocs/tmp/gd_xbm.c	1504090822	1	XBM IO
    +/parent/libgd/docs/naturaldocs/tmp/gd_color_map.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gd_color_map.h
    +/parent/libgd/docs/naturaldocs/tmp/license.txt	1504090822	1	License
    +/parent/libgd/docs/naturaldocs/tmp/gdfonts.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdfonts.h
    +/parent/libgd/docs/naturaldocs/tmp/gd2copypal.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/gd2copypal.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_color_map_test.c	1504090821	0	/parent/libgd/docs/naturaldocs/tmp/gd_color_map_test.c
    +/parent/libgd/docs/naturaldocs/tmp/gdkanji.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdkanji.c
    +/parent/libgd/docs/naturaldocs/tmp/gdtestft.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdtestft.c
    +/parent/libgd/docs/naturaldocs/tmp/pngtogd2.c	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/pngtogd2.c
    +/parent/libgd/docs/naturaldocs/tmp/gd_tiff.c	1504090822	1	TIFF IO
    +/parent/libgd/docs/naturaldocs/tmp/gdfontmb.h	1504090822	0	/parent/libgd/docs/naturaldocs/tmp/gdfontmb.h
    +/parent/libgd/docs/naturaldocs/tmp/gd_matrix.c	1504090821	1	Matrix
    +/parent/libgd/docs/naturaldocs/tmp/gd_gd2.c	1504090821	1	GD2 IO
    +/parent/libgd/docs/naturaldocs/tmp/preamble.txt	1504090822	1	About LibGD 2.2.5
    +/parent/libgd/docs/naturaldocs/tmp/gd_topal.c	1504090822	1	Color Quantization
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageFileInfo.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageFileInfo.nd
    new file mode 100644
    index 00000000000..ae5a61c4372
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageFileInfo.nd differ
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageReferenceTable.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageReferenceTable.nd
    new file mode 100644
    index 00000000000..9d01775472c
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageReferenceTable.nd differ
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/IndexInfo.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/IndexInfo.nd
    new file mode 100644
    index 00000000000..c616e09bd05
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/IndexInfo.nd differ
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousMenuState.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousMenuState.nd
    new file mode 100644
    index 00000000000..3e93e26a1de
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousMenuState.nd differ
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousSettings.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousSettings.nd
    new file mode 100644
    index 00000000000..ad1a41d971e
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousSettings.nd differ
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/SymbolTable.nd b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/SymbolTable.nd
    new file mode 100644
    index 00000000000..4c16754501e
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/SymbolTable.nd differ
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Languages.txt b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Languages.txt
    new file mode 100644
    index 00000000000..42b197c21bc
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Languages.txt
    @@ -0,0 +1,113 @@
    +Format: 1.52
    +
    +# This is the Natural Docs languages file for this project.  If you change
    +# anything here, it will apply to THIS PROJECT ONLY.  If you'd like to change
    +# something for all your projects, edit the Languages.txt in Natural Docs'
    +# Config directory instead.
    +
    +
    +# You can prevent certain file extensions from being scanned like this:
    +# Ignore Extensions: [extension] [extension] ...
    +
    +
    +#-------------------------------------------------------------------------------
    +# SYNTAX:
    +#
    +# Unlike other Natural Docs configuration files, in this file all comments
    +# MUST be alone on a line.  Some languages deal with the # character, so you
    +# cannot put comments on the same line as content.
    +#
    +# Also, all lists are separated with spaces, not commas, again because some
    +# languages may need to use them.
    +#
    +# Language: [name]
    +# Alter Language: [name]
    +#    Defines a new language or alters an existing one.  Its name can use any
    +#    characters.  If any of the properties below have an add/replace form, you
    +#    must use that when using Alter Language.
    +#
    +#    The language Shebang Script is special.  It's entry is only used for
    +#    extensions, and files with those extensions have their shebang (#!) lines
    +#    read to determine the real language of the file.  Extensionless files are
    +#    always treated this way.
    +#
    +#    The language Text File is also special.  It's treated as one big comment
    +#    so you can put Natural Docs content in them without special symbols.  Also,
    +#    if you don't specify a package separator, ignored prefixes, or enum value
    +#    behavior, it will copy those settings from the language that is used most
    +#    in the source tree.
    +#
    +# Extensions: [extension] [extension] ...
    +# [Add/Replace] Extensions: [extension] [extension] ...
    +#    Defines the file extensions of the language's source files.  You can
    +#    redefine extensions found in the main languages file.  You can use * to
    +#    mean any undefined extension.
    +#
    +# Shebang Strings: [string] [string] ...
    +# [Add/Replace] Shebang Strings: [string] [string] ...
    +#    Defines a list of strings that can appear in the shebang (#!) line to
    +#    designate that it's part of the language.  You can redefine strings found
    +#    in the main languages file.
    +#
    +# Ignore Prefixes in Index: [prefix] [prefix] ...
    +# [Add/Replace] Ignored Prefixes in Index: [prefix] [prefix] ...
    +#
    +# Ignore [Topic Type] Prefixes in Index: [prefix] [prefix] ...
    +# [Add/Replace] Ignored [Topic Type] Prefixes in Index: [prefix] [prefix] ...
    +#    Specifies prefixes that should be ignored when sorting symbols in an
    +#    index.  Can be specified in general or for a specific topic type.
    +#
    +#------------------------------------------------------------------------------
    +# For basic language support only:
    +#
    +# Line Comments: [symbol] [symbol] ...
    +#    Defines a space-separated list of symbols that are used for line comments,
    +#    if any.
    +#
    +# Block Comments: [opening sym] [closing sym] [opening sym] [closing sym] ...
    +#    Defines a space-separated list of symbol pairs that are used for block
    +#    comments, if any.
    +#
    +# Package Separator: [symbol]
    +#    Defines the default package separator symbol.  The default is a dot.
    +#
    +# [Topic Type] Prototype Enders: [symbol] [symbol] ...
    +#    When defined, Natural Docs will attempt to get a prototype from the code
    +#    immediately following the topic type.  It stops when it reaches one of
    +#    these symbols.  Use \n for line breaks.
    +#
    +# Line Extender: [symbol]
    +#    Defines the symbol that allows a prototype to span multiple lines if
    +#    normally a line break would end it.
    +#
    +# Enum Values: [global|under type|under parent]
    +#    Defines how enum values are referenced.  The default is global.
    +#    global       - Values are always global, referenced as 'value'.
    +#    under type   - Values are under the enum type, referenced as
    +#               'package.enum.value'.
    +#    under parent - Values are under the enum's parent, referenced as
    +#               'package.value'.
    +#
    +# Perl Package: [perl package]
    +#    Specifies the Perl package used to fine-tune the language behavior in ways
    +#    too complex to do in this file.
    +#
    +#------------------------------------------------------------------------------
    +# For full language support only:
    +#
    +# Full Language Support: [perl package]
    +#    Specifies the Perl package that has the parsing routines necessary for full
    +#    language support.
    +#
    +#-------------------------------------------------------------------------------
    +
    +# The following languages are defined in the main file, if you'd like to alter
    +# them:
    +#
    +#    Text File, Shebang Script, C/C++, C#, Java, JavaScript, Perl, Python,
    +#    PHP, SQL, Visual Basic, Pascal, Assembly, Ada, Tcl, Ruby, Makefile,
    +#    ActionScript, ColdFusion, R, Fortran
    +
    +# If you add a language that you think would be useful to other developers
    +# and should be included in Natural Docs by default, please e-mail it to
    +# languages [at] naturaldocs [dot] org.
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Menu.txt b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Menu.txt
    index f12369ea948..18438bd0b49 100644
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Menu.txt
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Menu.txt
    @@ -65,28 +65,28 @@ Group: Image Formats  {
        File: XPM Input  (no auto-title, gdxpm.c)
        }  # Group: Image Formats
     
    +File: Color Quantization  (gd_topal.c)
    +File: Cropping  (gd_crop.c)
    +File: FreeType font rendering  (gdft.c)
     File: gd.c  (gd.c)
     File: gd.h  (gd.h)
    -File: gd_crop.c  (gd_crop.c)
     File: gd_filename.c  (gd_filename.c)
    -File: gd_filter.c  (gd_filter.c)
     File: gd_interpolation.c  (gd_interpolation.c)
     File: gd_io.h  (gd_io.h)
     File: gd_io_dp.c  (gd_io_dp.c)
     File: gd_ss.c  (gd_ss.c)
    -File: gd_topal.c  (gd_topal.c)
    -File: gd_transform.c  (gd_transform.c)
     File: gd_version.c  (gd_version.c)
     File: gdColorMapLookup  (gd_color_map.c)
     File: gdFree  (gdhelpers.c)
    -File: gdft.c  (gdft.c)
     File: gdfx.c  (gdfx.c)
     File: gdImageColorMatch  (gd_color_match.c)
     File: gdImageNeuQuant  (gd_nnquant.c)
     File: gdNewFileCtx  (gd_io_file.c)
     File: gdNewSSCtx  (gd_io_ss.c)
    +File: Image Filters  (gd_filter.c)
     File: License  (license.txt)
     File: Matrix  (gd_matrix.c)
    +File: Transformations  (gd_transform.c)
     
     Group: Built-in Fonts  {
     
    @@ -103,6 +103,7 @@ Group: Index  {
        Index: Everything
        File Index: Files
        Function Index: Functions
    +   Macro Index: Macros
        Type Index: Types
        }  # Group: Index
     
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Topics.txt b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Topics.txt
    new file mode 100644
    index 00000000000..905270f0e23
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Topics.txt
    @@ -0,0 +1,81 @@
    +Format: 1.52
    +
    +# This is the Natural Docs topics file for this project.  If you change anything
    +# here, it will apply to THIS PROJECT ONLY.  If you'd like to change something
    +# for all your projects, edit the Topics.txt in Natural Docs' Config directory
    +# instead.
    +
    +
    +# If you'd like to prevent keywords from being recognized by Natural Docs, you
    +# can do it like this:
    +# Ignore Keywords: [keyword], [keyword], ...
    +#
    +# Or you can use the list syntax like how they are defined:
    +# Ignore Keywords:
    +#    [keyword]
    +#    [keyword], [plural keyword]
    +#    ...
    +
    +
    +#-------------------------------------------------------------------------------
    +# SYNTAX:
    +#
    +# Topic Type: [name]
    +# Alter Topic Type: [name]
    +#    Creates a new topic type or alters one from the main file.  Each type gets
    +#    its own index and behavior settings.  Its name can have letters, numbers,
    +#    spaces, and these charaters: - / . '
    +#
    +# Plural: [name]
    +#    Sets the plural name of the topic type, if different.
    +#
    +# Keywords:
    +#    [keyword]
    +#    [keyword], [plural keyword]
    +#    ...
    +#    Defines or adds to the list of keywords for the topic type.  They may only
    +#    contain letters, numbers, and spaces and are not case sensitive.  Plural
    +#    keywords are used for list topics.  You can redefine keywords found in the
    +#    main topics file.
    +#
    +# Index: [yes|no]
    +#    Whether the topics get their own index.  Defaults to yes.  Everything is
    +#    included in the general index regardless of this setting.
    +#
    +# Scope: [normal|start|end|always global]
    +#    How the topics affects scope.  Defaults to normal.
    +#    normal        - Topics stay within the current scope.
    +#    start         - Topics start a new scope for all the topics beneath it,
    +#                    like class topics.
    +#    end           - Topics reset the scope back to global for all the topics
    +#                    beneath it.
    +#    always global - Topics are defined as global, but do not change the scope
    +#                    for any other topics.
    +#
    +# Class Hierarchy: [yes|no]
    +#    Whether the topics are part of the class hierarchy.  Defaults to no.
    +#
    +# Page Title If First: [yes|no]
    +#    Whether the topic's title becomes the page title if it's the first one in
    +#    a file.  Defaults to no.
    +#
    +# Break Lists: [yes|no]
    +#    Whether list topics should be broken into individual topics in the output.
    +#    Defaults to no.
    +#
    +# Can Group With: [type], [type], ...
    +#    Defines a list of topic types that this one can possibly be grouped with.
    +#    Defaults to none.
    +#-------------------------------------------------------------------------------
    +
    +# The following topics are defined in the main file, if you'd like to alter
    +# their behavior or add keywords:
    +#
    +#    Generic, Class, Interface, Section, File, Group, Function, Variable,
    +#    Property, Type, Constant, Enumeration, Event, Delegate, Macro,
    +#    Database, Database Table, Database View, Database Index, Database
    +#    Cursor, Database Trigger, Cookie, Build Target
    +
    +# If you add something that you think would be useful to other developers
    +# and should be included in Natural Docs by default, please e-mail it to
    +# topics [at] naturaldocs [dot] org.
    diff --git a/Build/source/libs/gd/libgd-src/src/config.h.cmake b/Build/source/libs/gd/libgd-src/src/config.h.cmake
    index acc22be281a..26cf22ff549 100644
    --- a/Build/source/libs/gd/libgd-src/src/config.h.cmake
    +++ b/Build/source/libs/gd/libgd-src/src/config.h.cmake
    @@ -1,4 +1,4 @@
    -/* Generated from config.hin via autoheader for cmake; see bootstraps.h. */
    +/* Generated from config.hin via autoheader for cmake; see bootstrap.sh. */
     
     /* Define is you are building for Win32 API */
     #cmakedefine BGDWIN32
    @@ -103,8 +103,7 @@
     /* Define as const if the declaration of iconv() needs const. */
     #cmakedefine ICONV_CONST
     
    -/* Define to the sub-directory in which libtool stores uninstalled libraries.
    -   */
    +/* Define to the sub-directory where libtool stores uninstalled libraries. */
     #cmakedefine LT_OBJDIR
     
     /* Name of package */
    diff --git a/Build/source/libs/gd/libgd-src/src/gd.h b/Build/source/libs/gd/libgd-src/src/gd.h
    index 5a525470f84..219b2240357 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd.h
    +++ b/Build/source/libs/gd/libgd-src/src/gd.h
    @@ -13,7 +13,7 @@ extern "C" {
      * trailing comment. */
     #define GD_MAJOR_VERSION    2           /*version605b5d1778*/
     #define GD_MINOR_VERSION    2           /*version605b5d1778*/
    -#define GD_RELEASE_VERSION  4           /*version605b5d1778*/
    +#define GD_RELEASE_VERSION  5           /*version605b5d1778*/
     #define GD_EXTRA_VERSION    ""          /*version605b5d1778*/
     /* End parsable section. */
     
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_bmp.c b/Build/source/libs/gd/libgd-src/src/gd_bmp.c
    index 1eb2ebe0a39..7b29c1a5a3a 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_bmp.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_bmp.c
    @@ -761,7 +761,9 @@ static int bmp_read_direct(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, b
     	/* There is a chance the data isn't until later, would be wierd but it is possible */
     	if (gdTell(infile) != header->off) {
     		/* Should make sure we don't seek past the file size */
    -		gdSeek(infile, header->off);
    +		if (!gdSeek(infile, header->off)) {
    +			return 1;
    +		}
     	}
     
     	/* The line must be divisible by 4, else its padded with NULLs */
    @@ -856,7 +858,9 @@ static int bmp_read_1bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp
     	/* There is a chance the data isn't until later, would be wierd but it is possible */
     	if (gdTell(infile) != header->off) {
     		/* Should make sure we don't seek past the file size */
    -		gdSeek(infile, header->off);
    +		if (!gdSeek(infile, header->off)) {
    +			return 1;
    +		}
     	}
     
     	/* The line must be divisible by 4, else its padded with NULLs */
    @@ -924,7 +928,9 @@ static int bmp_read_4bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp
     	/* There is a chance the data isn't until later, would be wierd but it is possible */
     	if (gdTell(infile) != header->off) {
     		/* Should make sure we don't seek past the file size */
    -		gdSeek(infile, header->off);
    +		if (!gdSeek(infile, header->off)) {
    +			return 1;
    +		}
     	}
     
     	/* The line must be divisible by 4, else its padded with NULLs */
    @@ -1009,7 +1015,9 @@ static int bmp_read_8bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp
     	/* There is a chance the data isn't until later, would be wierd but it is possible */
     	if (gdTell(infile) != header->off) {
     		/* Should make sure we don't seek past the file size */
    -		gdSeek(infile, header->off);
    +		if (!gdSeek(infile, header->off)) {
    +			return 1;
    +		}
     	}
     
     	/* The line must be divisible by 4, else its padded with NULLs */
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_filter.c b/Build/source/libs/gd/libgd-src/src/gd_filter.c
    index 0d52e060f60..c81e1c177e5 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_filter.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_filter.c
    @@ -236,6 +236,12 @@ BGD_DECLARE(int) gdImageNegate(gdImagePtr src)
      *
      * Convert an image to grayscale
      *
    + * The red, green and blue components of each pixel are replaced by their
    + * weighted sum using the same coefficients as the REC.601 luma (Y')
    + * calculation. The alpha components are retained.
    + *
    + * For palette images the result may differ due to palette limitations.
    + *
      * Parameters:
      *   src - The image.
      *
    @@ -248,11 +254,15 @@ BGD_DECLARE(int) gdImageGrayScale(gdImagePtr src)
     	int r,g,b,a;
     	int new_pxl, pxl;
     	FuncPtr f;
    +	int alpha_blending;
     
     	if (src==NULL) {
     		return 0;
     	}
     
    +	alpha_blending = src->alphaBlendingFlag;
    +	gdImageAlphaBlending(src, gdEffectReplace);
    +
     	f = GET_PIXEL_FUNCTION(src);
     
     	for (y=0; y<src->sy; ++y) {
    @@ -271,6 +281,8 @@ BGD_DECLARE(int) gdImageGrayScale(gdImagePtr src)
     			gdImageSetPixel (src, x, y, new_pxl);
     		}
     	}
    +	gdImageAlphaBlending(src, alpha_blending);
    +
     	return 1;
     }
     
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_gd2.c b/Build/source/libs/gd/libgd-src/src/gd_gd2.c
    index c2904cafa19..85106bc9273 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_gd2.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_gd2.c
    @@ -74,6 +74,7 @@
     
     /* 2.0.29: no more errno.h, makes windows happy */
     #include <math.h>
    +#include <limits.h>
     #include <string.h>
     #include "gd.h"
     #include "gd_errors.h"
    @@ -508,15 +509,13 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
     						if (im->trueColor) {
     							if (!gdGetInt (&im->tpixels[y][x], in)) {
     								gd_error("gd2: EOF while reading\n");
    -								gdImageDestroy(im);
    -								return NULL;
    +								goto fail;
     							}
     						} else {
     							int ch;
     							if (!gdGetByte (&ch, in)) {
     								gd_error("gd2: EOF while reading\n");
    -								gdImageDestroy(im);
    -								return NULL;
    +								goto fail;
     							}
     							im->pixels[y][x] = ch;
     						}
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_gif_in.c b/Build/source/libs/gd/libgd-src/src/gd_gif_in.c
    index 008d1ecec41..c1954480143 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_gif_in.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_gif_in.c
    @@ -216,6 +216,9 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromGifCtx(gdIOCtxPtr fd)
     
     	gdImagePtr im = 0;
     
    +	memset(ColorMap, 0, 3 * MAXCOLORMAPSIZE);
    +	memset(localColorMap, 0, 3 * MAXCOLORMAPSIZE);
    +
     	if(!ReadOK(fd, buf, 6)) {
     		return 0;
     	}
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_io_dp.c b/Build/source/libs/gd/libgd-src/src/gd_io_dp.c
    index eda2eeb0551..25c0980a9b3 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_io_dp.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_io_dp.c
    @@ -180,6 +180,9 @@ static int dynamicSeek(struct gdIOCtx *ctx, const int pos)
     	dynamicPtr *dp;
     	dpIOCtx *dctx;
     
    +	if (pos < 0) {
    +		return FALSE;
    +	}
     	dctx = (dpIOCtx *)ctx;
     	dp = dctx->dp;
     
    @@ -292,6 +295,10 @@ static int dynamicGetbuf(gdIOCtxPtr ctx, void *buf, int len)
     		rlen = dp->realSize - dp->pos;
     	}
     
    +	if (rlen < 0) {
    +		return 0;
    +	}
    +
     	memcpy(buf, (void *) ((char *)dp->data + dp->pos), rlen);
     	dp->pos += rlen;
     
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_jpeg.c b/Build/source/libs/gd/libgd-src/src/gd_jpeg.c
    index 744f229bd97..271ef46e003 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_jpeg.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_jpeg.c
    @@ -108,7 +108,7 @@ static void fatal_jpeg_error(j_common_ptr cinfo)
     	char buffer[JMSG_LENGTH_MAX];
     
     	(*cinfo->err->format_message)(cinfo, buffer);
    -	gd_error_ex(GD_ERROR, "gd-jpeg: JPEG library reports unrecoverable error: %s", buffer);
    +	gd_error_ex(GD_WARNING, "gd-jpeg: JPEG library reports unrecoverable error: %s", buffer);
     
     	jmpbufw = (jmpbuf_wrapper *)cinfo->client_data;
     	jpeg_destroy(cinfo);
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_png.c b/Build/source/libs/gd/libgd-src/src/gd_png.c
    index db8de725ec1..c9e3545de86 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_png.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_png.c
    @@ -68,7 +68,7 @@ gdPngErrorHandler (png_structp png_ptr, png_const_charp msg)
     	 * regardless of whether _BSD_SOURCE or anything else has (or has not)
     	 * been defined. */
     
    -	gd_error_ex(GD_ERROR, "gd-png: fatal libpng error: %s\n", msg);
    +	gd_error_ex(GD_WARNING, "gd-png: fatal libpng error: %s\n", msg);
     
     	jmpbuf_ptr = png_get_error_ptr (png_ptr);
     	if (jmpbuf_ptr == NULL) {				/* we are completely hosed now */
    @@ -634,6 +634,7 @@ BGD_DECLARE(void) gdImagePng (gdImagePtr im, FILE * outFile)
     	out->gd_free (out);
     }
     
    +static int _gdImagePngCtxEx(gdImagePtr im, gdIOCtx * outfile, int level);
     
     /*
       Function: gdImagePngPtr
    @@ -657,8 +658,11 @@ BGD_DECLARE(void *) gdImagePngPtr (gdImagePtr im, int *size)
     	void *rv;
     	gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
     	if (out == NULL) return NULL;
    -	gdImagePngCtxEx (im, out, -1);
    -	rv = gdDPExtractData (out, size);
    +	if (!_gdImagePngCtxEx (im, out, -1)) {
    +		rv = gdDPExtractData (out, size);
    +	} else {
    +		rv = NULL;
    +	}
     	out->gd_free (out);
     	return rv;
     }
    @@ -692,8 +696,11 @@ BGD_DECLARE(void *) gdImagePngPtrEx (gdImagePtr im, int *size, int level)
     	void *rv;
     	gdIOCtx *out = gdNewDynamicCtx (2048, NULL);
     	if (out == NULL) return NULL;
    -	gdImagePngCtxEx (im, out, level);
    -	rv = gdDPExtractData (out, size);
    +	if (!_gdImagePngCtxEx (im, out, level)) {
    +		rv = gdDPExtractData (out, size);
    +	} else {
    +		rv = NULL;
    +	}
     	out->gd_free (out);
     	return rv;
     }
    @@ -742,12 +749,17 @@ BGD_DECLARE(void) gdImagePngCtx (gdImagePtr im, gdIOCtx * outfile)
         Nothing.
     
     */
    +BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
    +{
    +	_gdImagePngCtxEx(im, outfile, level);
    +}
     
     /* This routine is based in part on code from Dale Lutz (Safe Software Inc.)
      *  and in part on demo code from Chapter 15 of "PNG: The Definitive Guide"
      *  (http://www.libpng.org/pub/png/book/).
      */
    -BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
    +/* returns 0 on success, 1 on failure */
    +static int _gdImagePngCtxEx(gdImagePtr im, gdIOCtx * outfile, int level)
     {
     	int i, j, bit_depth = 0, interlace_type;
     	int width = im->sx;
    @@ -765,10 +777,11 @@ BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
     #ifdef PNG_SETJMP_SUPPORTED
     	jmpbuf_wrapper jbw;
     #endif
    +	int ret = 0;
     
     	/* width or height of value 0 is invalid in IHDR;
     	   see http://www.w3.org/TR/PNG-Chunks.html */
    -	if (width == 0 || height ==0) return;
    +	if (width == 0 || height ==0) return 1;
     
     #ifdef PNG_SETJMP_SUPPORTED
     	png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING,
    @@ -779,21 +792,21 @@ BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
     #endif
     	if (png_ptr == NULL) {
     		gd_error("gd-png error: cannot allocate libpng main struct\n");
    -		return;
    +		return 1;
     	}
     
     	info_ptr = png_create_info_struct (png_ptr);
     	if (info_ptr == NULL) {
     		gd_error("gd-png error: cannot allocate libpng info struct\n");
     		png_destroy_write_struct (&png_ptr, (png_infopp) NULL);
    -		return;
    +		return 1;
     	}
     
     #ifdef PNG_SETJMP_SUPPORTED
     	if (setjmp(jbw.jmpbuf)) {
     		gd_error("gd-png error: setjmp returns error condition\n");
     		png_destroy_write_struct (&png_ptr, &info_ptr);
    -		return;
    +		return 1;
     	}
     #endif
     
    @@ -845,6 +858,7 @@ BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
     		}
     		if (colors == 0) {
     			gd_error("gd-png error: no colors in palette\n");
    +			ret = 1;
     			goto bail;
     		}
     		if (colors < im->colorsTotal) {
    @@ -976,11 +990,13 @@ BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
     		png_bytep *prow_pointers;
     		int saveAlphaFlag = im->saveAlphaFlag;
     		if (overflow2(sizeof (png_bytep), height)) {
    +			ret = 1;
     			goto bail;
     		}
     		row_pointers = gdMalloc (sizeof (png_bytep) * height);
     		if (row_pointers == NULL) {
     			gd_error("gd-png error: unable to allocate row_pointers\n");
    +			ret = 1;
     			goto bail;
     		}
     		prow_pointers = row_pointers;
    @@ -992,6 +1008,7 @@ BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
     					gdFree (row_pointers[i]);
     				/* 2.0.29: memory leak TBB */
     				gdFree(row_pointers);
    +				ret = 1;
     				goto bail;
     			}
     			pOutputRow = *prow_pointers++;
    @@ -1025,11 +1042,13 @@ BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
     		if (remap) {
     			png_bytep *row_pointers;
     			if (overflow2(sizeof (png_bytep), height)) {
    +				ret = 1;
     				goto bail;
     			}
     			row_pointers = gdMalloc (sizeof (png_bytep) * height);
     			if (row_pointers == NULL) {
     				gd_error("gd-png error: unable to allocate row_pointers\n");
    +				ret = 1;
     				goto bail;
     			}
     			for (j = 0; j < height; ++j) {
    @@ -1039,6 +1058,7 @@ BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
     						gdFree (row_pointers[i]);
     					/* TBB: memory leak */
     					gdFree (row_pointers);
    +					ret = 1;
     					goto bail;
     				}
     				for (i = 0; i < width; ++i)
    @@ -1059,6 +1079,7 @@ BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
     	/* 1.6.3: maybe we should give that memory BACK! TBB */
     bail:
     	png_destroy_write_struct (&png_ptr, &info_ptr);
    +	return ret;
     }
     
     
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_tiff.c b/Build/source/libs/gd/libgd-src/src/gd_tiff.c
    index 3f20c5b2645..ae65ed7d5e2 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_tiff.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_tiff.c
    @@ -535,14 +535,14 @@ static void readTiffBw (const unsigned char *src,
     	(void)align;
     
     	for (y = starty; y < starty + height; y++) {
    -		for (x = startx; x < startx + width; x++) {
    +		for (x = startx; x < startx + width;) {
     			register unsigned char curr = *src++;
     			register unsigned char mask;
     
     			if (photometric == PHOTOMETRIC_MINISWHITE) {
     				curr = ~curr;
     			}
    -			for (mask = 0x80; mask != 0 && x < startx + width; mask >>= 1) {
    +			for (mask = 0x80; mask != 0 && x < startx + width; x++, mask >>= 1) {
     				gdImageSetPixel(im, x, y, ((curr & mask) != 0)?0:1);
     			}
     		}
    @@ -646,6 +646,7 @@ static int createFromTiffTiles(TIFF *tif, gdImagePtr im, uint16 bps, uint16 phot
     	int tile_width, tile_height;
     	int  x, y, height, width;
     	unsigned char *buffer;
    +	int success = GD_SUCCESS;
     
     	if (!TIFFGetField (tif, TIFFTAG_PLANARCONFIG, &planar)) {
     		planar = PLANARCONFIG_CONTIG;
    @@ -664,7 +665,10 @@ static int createFromTiffTiles(TIFF *tif, gdImagePtr im, uint16 bps, uint16 phot
     
     	for (y = 0; y < im_height; y += tile_height) {
     		for (x = 0; x < im_width; x += tile_width) {
    -			TIFFReadTile(tif, buffer, x, y, 0, 0);
    +			if (TIFFReadTile(tif, buffer, x, y, 0, 0) < 0) {
    +				success = GD_FAILURE;
    +				goto end;
    +			}
     			width = MIN(im_width - x, tile_width);
     			height = MIN(im_height - y, tile_height);
     			if (bps == 16) {
    @@ -677,8 +681,9 @@ static int createFromTiffTiles(TIFF *tif, gdImagePtr im, uint16 bps, uint16 phot
     			}
     		}
     	}
    +end:
     	gdFree(buffer);
    -	return TRUE;
    +	return success;
     }
     
     static int createFromTiffLines(TIFF *tif, gdImagePtr im, uint16 bps, uint16 photometric,
    @@ -688,6 +693,7 @@ static int createFromTiffLines(TIFF *tif, gdImagePtr im, uint16 bps, uint16 phot
     	uint32 im_height, im_width, y;
     
     	unsigned char *buffer;
    +	int success = GD_SUCCESS;
     
     	if (!TIFFGetField(tif, TIFFTAG_PLANARCONFIG, &planar)) {
     		planar = PLANARCONFIG_CONTIG;
    @@ -717,8 +723,9 @@ static int createFromTiffLines(TIFF *tif, gdImagePtr im, uint16 bps, uint16 phot
     
     		case 8:
     			for (y = 0; y < im_height; y++ ) {
    -				if (!TIFFReadScanline (tif, buffer, y, 0)) {
    +				if (TIFFReadScanline (tif, buffer, y, 0) < 0) {
     					gd_error("Error while reading scanline %i", y);
    +					success = GD_FAILURE;
     					break;
     				}
     				/* reading one line at a time */
    @@ -729,8 +736,9 @@ static int createFromTiffLines(TIFF *tif, gdImagePtr im, uint16 bps, uint16 phot
     		default:
     			if (is_bw) {
     				for (y = 0; y < im_height; y++ ) {
    -					if (!TIFFReadScanline (tif, buffer, y, 0)) {
    +					if (TIFFReadScanline (tif, buffer, y, 0) < 0) {
     						gd_error("Error while reading scanline %i", y);
    +						success = GD_FAILURE;
     						break;
     					}
     					/* reading one line at a time */
    @@ -746,7 +754,7 @@ static int createFromTiffLines(TIFF *tif, gdImagePtr im, uint16 bps, uint16 phot
     	}
     
     	gdFree(buffer);
    -	return GD_SUCCESS;
    +	return success;
     }
     
     static int createFromTiffRgba(TIFF * tif, gdImagePtr im)
    @@ -761,17 +769,17 @@ static int createFromTiffRgba(TIFF * tif, gdImagePtr im)
     	uint32 rgba;
     	int success;
     
    +	buffer = (uint32 *) gdCalloc(sizeof(uint32), width * height);
    +	if (!buffer) {
    +		return GD_FAILURE;
    +	}
    +
     	/* switch off colour merging on target gd image just while we write out
     	 * content - we want to preserve the alpha data until the user chooses
     	 * what to do with the image */
     	alphaBlendingFlag = im->alphaBlendingFlag;
     	gdImageAlphaBlending(im, 0);
     
    -	buffer = (uint32 *) gdCalloc(sizeof(uint32), width * height);
    -	if (!buffer) {
    -		return GD_FAILURE;
    -	}
    -
     	success = TIFFReadRGBAImage(tif, width, height, buffer, 1);
     
     	if (success) {
    @@ -852,7 +860,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile)
     	TIFFGetFieldDefaulted (tif, TIFFTAG_BITSPERSAMPLE, &bps);
     
     	/* Unsupported bps, force to RGBA */
    -	if (1/*bps > 8 && bps != 16*/) {
    +	if (bps != 1 /*bps > 8 && bps != 16*/) {
     		force_rgba = TRUE;
     	}
     
    @@ -935,6 +943,11 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile)
     		break;
     	}
     
    +	/* Force rgba if image has 1bps, but is not bw */
    +	if (bps == 1 && !is_bw) {
    +		force_rgba = TRUE;
    +	}
    +
     	if (!TIFFGetField (tif, TIFFTAG_PLANARCONFIG, &planar)) {
     		planar = PLANARCONFIG_CONTIG;
     	}
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_xbm.c b/Build/source/libs/gd/libgd-src/src/gd_xbm.c
    index 5f09b56674d..29bc5c2e8d5 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_xbm.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_xbm.c
    @@ -40,6 +40,9 @@
         its size. The image must eventually be destroyed using
         <gdImageDestroy>.
     
    +    X11 X bitmaps (which define a char[]) as well as X10 X bitmaps (which define
    +    a short[]) are supported.
    +
       Parameters:
     
         fd - The input FILE pointer
    @@ -108,7 +111,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm(FILE * fd)
     				max_bit = 32768;
     			}
     			if (max_bit) {
    -				bytes = (width * height / 8) + 1;
    +                bytes = (width + 7) / 8 * height;
     				if (!bytes) {
     					return 0;
     				}
    @@ -203,10 +206,22 @@ static void gdCtxPrintf(gdIOCtx * out, const char *format, ...)
     /* The compiler will optimize strlen(constant) to a constant number. */
     #define gdCtxPuts(out, s) out->putBuf(out, s, strlen(s))
     
    -/* {{{ gdImageXbmCtx */
    -/*
    -    Function: gdImageXbmCtx
    -*/
    +
    +/**
    + * Function: gdImageXbmCtx
    + *
    + *  Writes an image to an IO context in X11 bitmap format.
    + *
    + * Parameters:
    + *
    + *  image     - The <gdImagePtr> to write.
    + *  file_name - The prefix of the XBM's identifiers. Illegal characters are
    + *              automatically stripped.
    + *  gd        - Which color to use as forground color. All pixels with another
    + *              color are unset.
    + *  out       - The <gdIOCtx> to write the image file to.
    + * 
    + */
     BGD_DECLARE(void) gdImageXbmCtx(gdImagePtr image, char* file_name, int fg, gdIOCtx * out)
     {
     	int x, y, c, b, sx, sy, p;
    @@ -282,4 +297,3 @@ BGD_DECLARE(void) gdImageXbmCtx(gdImagePtr image, char* file_name, int fg, gdIOC
     	}
     	gdCtxPuts(out, "};\n");
     }
    -/* }}} */
    diff --git a/Build/source/libs/gd/libgd-src/src/webpng.c b/Build/source/libs/gd/libgd-src/src/webpng.c
    index 6faa9097674..2dff83294cf 100644
    --- a/Build/source/libs/gd/libgd-src/src/webpng.c
    +++ b/Build/source/libs/gd/libgd-src/src/webpng.c
    @@ -26,6 +26,8 @@
     /* Bring in the gd library functions */
     #include "gd.h"
     
    +#define KEEP_TRANS (-100)
    +
     static const char argv0[] = "webpng";
     
     static void usage(const char *msg)
    @@ -74,7 +76,7 @@ main(int argc, char **argv)
     
     	int interlace = -100;
     	int list_color_table = 0;
    -	int trans_col = -1;
    +	int trans_col = KEEP_TRANS;
     	int report_details = 0;
     	int print_alpha = 0;
     
    @@ -251,7 +253,7 @@ main(int argc, char **argv)
     	else if (interlace == 0)
     		gdImageInterlace(im, 0);
     
    -	if (trans_col != -100)
    +	if (trans_col != KEEP_TRANS)
     		gdImageColorTransparent(im, trans_col);
     
     	if (use_stdin_stdout) {
    diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
    index a42629b8bcf..8f2a88f9753 100644
    --- a/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
    @@ -1,8 +1,13 @@
    -SET(TESTS_FILES
    -	bmp_im2im
    +LIST(APPEND TESTS_FILES
     	bmp_null
     	bug00275
    +)
    +
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	bmp_im2im
     	bug00276
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
    index 27dc7ecd00a..f3f1660e9ce 100644
    --- a/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
    @@ -1,11 +1,11 @@
     libgd_test_programs += \
     	bmp/bmp_null \
    -	bmp/bug00275 \
    -	bmp/bug00276
    +	bmp/bug00275
     
     if HAVE_LIBPNG
     libgd_test_programs += \
    -	bmp/bmp_im2im
    +	bmp/bmp_im2im \
    +	bmp/bug00276
     endif
     
     EXTRA_DIST += \
    diff --git a/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt
    index 159130dffb2..f78c4cf11f3 100644
    --- a/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/fontconfig/CMakeLists.txt
    @@ -1,7 +1,9 @@
    -IF(FREETYPE_FOUND AND FONTCONFIG_FOUND)
    +if(FONTCONFIG_FOUND)
    +IF(FREETYPE_FOUND)
     LIST(APPEND TESTS_FILES
         basic
     )
    -ENDIF(FREETYPE_FOUND AND FONTCONFIG_FOUND)
    +ENDIF(FREETYPE_FOUND)
    +ENDIF(FONTCONFIG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt
    index 728c226c661..9a1e0181a76 100644
    --- a/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/freetype/CMakeLists.txt
    @@ -1,7 +1,9 @@
     IF(FREETYPE_FOUND)
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00132
     )
    +ENDIF(PNG_FOUND)
     ENDIF(FREETYPE_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am
    index d2524931193..312759a176f 100644
    --- a/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am
    @@ -1,7 +1,9 @@
     if HAVE_LIBFREETYPE
    +if HAVE_LIBPNG 
     libgd_test_programs += \
     	freetype/bug00132
     endif
    +endif
     
     EXTRA_DIST += \
     	freetype/CMakeLists.txt \
    diff --git a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c
    index 713dd2d023f..42ed5b17dc6 100644
    --- a/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c
    +++ b/Build/source/libs/gd/libgd-src/tests/freetype/bug00132.c
    @@ -11,6 +11,9 @@ int main()
     	char *path;
     	char *ret = NULL;
     
    +	/* disable subpixel hinting */
    +	putenv("FREETYPE_PROPERTIES=truetype:interpreter-version=35");
    +
     	im = gdImageCreateTrueColor(50, 30);
     
     	if (!im) {
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt
    index 1fc57932e6c..6053ba50826 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt
    @@ -1,8 +1,13 @@
    -SET(TESTS_FILES
    -	gd_im2im
    +LIST(APPEND TESTS_FILES
     	gd_null
     	gd_num_colors
     	gd_versiontest
     )
     
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gd_im2im
    +)
    +ENDIF(PNG_FOUND)
    +
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
    index 8c27babea2c..d60823130d8 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
    @@ -1,12 +1,25 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	bug_289
    +	bug00209
     	bug00309
     	bug00354
     	gd2_empty_file
    -	gd2_im2im
    -	gd2_null
     	php_bug_72339
    +	gd2_read_corrupt
     	too_few_image_data
     )
     
    +IF(ZLIB_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gd2_null
    +)
    +
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gd2_im2im
    +	gd2_read
    +)
    +ENDIF(PNG_FOUND)
    +ENDIF(ZLIB_FOUND)
    +
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
    index add4f34a76f..9c53b85649a 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
    @@ -1,5 +1,6 @@
     libgd_test_programs += \
     	gd2/bug_289 \
    +	gd2/bug00209 \
     	gd2/bug00309 \
     	gd2/bug00354 \
     	gd2/gd2_empty_file \
    @@ -20,6 +21,7 @@ endif
     
     EXTRA_DIST += \
     	gd2/CMakeLists.txt \
    +	gd2/bug00209.gd2 \
     	gd2/bug00354a.gd2 \
     	gd2/bug00354b.gd2 \
     	gd2/conv_gd2_exp.gd2 \
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c
    new file mode 100644
    index 00000000000..4379d389ccc
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c
    @@ -0,0 +1,28 @@
    +/**
    + * Regression test for github issue #209
    + *
    + * We're testing that bug00209.gd2, which claims to have 12336 x 48 pixels, but
    + * actually provides not enough image data, is rejected, i.e. that
    + * gdImageCreateFromGd2() returns NULL
    + *
    + * See <https://github.com/libgd/libgd/issues/209>.
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +
    +    fp = gdTestFileOpen2("gd2", "bug00209.gd2");
    +    gdTestAssert(fp != NULL);
    +    im = gdImageCreateFromGd2(fp);
    +    gdTestAssert(im == NULL);
    +    fclose(fp);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.gd2 b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.gd2
    new file mode 100644
    index 00000000000..1c797d1acfa
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.gd2 differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c
    index 94fe069f6c6..8ce8bd15d57 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/gd2_read.c
    @@ -5,7 +5,7 @@
     
     int main(int argc, char *argv[])
     {
    -	int error, i = 0;
    +	int error = 0, i = 0;
     	gdImagePtr im, exp;
     	FILE *fp;
     	char *path[] = {
    @@ -40,8 +40,6 @@ int main(int argc, char *argv[])
     				gdTestErrorMsg("image %s differs from expected result\n", path[i]);
     				gdImageDestroy(im);
     				error = 1;
    -			} else {
    -				error = 0;
     			}
     			if (exp) {
     				gdImageDestroy(exp);
    @@ -52,8 +50,6 @@ int main(int argc, char *argv[])
     				gdTestErrorMsg("image %s should have failed to be loaded\n", path[i]);
     				gdImageDestroy(im);
     				error = 1;
    -			} else {
    -				error = 0;
     			}
     		}
     		i++;
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt
    index dcfdc54ca5e..fc8ca57b29d 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagearc/CMakeLists.txt
    @@ -1,5 +1,7 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00079
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt
    index 381c74d06e2..802c38220ae 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/CMakeLists.txt
    @@ -1,5 +1,7 @@
    +IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	basic
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt
    index 381c74d06e2..802c38220ae 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolor/CMakeLists.txt
    @@ -1,5 +1,7 @@
    +IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	basic
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt
    index 4f846c0b228..be903abe33e 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt
    @@ -1,5 +1,7 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	gdimagecolorclosest
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt
    index 383a30277b7..1cc19958d22 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolordeallocate/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	gdimagecolordeallocate
     )
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt
    index b627fa5682a..294fe4f7c9b 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt
    @@ -1,5 +1,7 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	gdimagecolorexact
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt
    index 4f7af18ecea..f2495d973ee 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt
    @@ -1,5 +1,7 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	gdimagecolorreplace
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt
    index a3e7bc21658..5b553388668 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt
    @@ -1,5 +1,7 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	gdimagecolorresolve
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt
    index ce838725a61..f3a83f33f8f 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolortransparent/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	gdimagecolortransparent
     )
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt
    index 381c74d06e2..802c38220ae 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/CMakeLists.txt
    @@ -1,5 +1,7 @@
    +IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	basic
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
    index 381c74d06e2..802c38220ae 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
    @@ -1,5 +1,7 @@
    +IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	basic
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt
    index 024ad5a744a..f5863008810 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopy/CMakeLists.txt
    @@ -1,6 +1,11 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	bug00007
    +)
    +
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00081
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt
    index 636c81184ba..4d0d66ba436 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/CMakeLists.txt
    @@ -1,8 +1,10 @@
    +IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	basic
     	basic_alpha
     	exact_alpha
     	bug00201
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt
    index e2d8249f91d..7f1a678670a 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyrotated/CMakeLists.txt
    @@ -1,5 +1,7 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00020
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt
    index 4fee5c33f6b..ba48d643352 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/CMakeLists.txt
    @@ -1,5 +1,9 @@
    -SET(TESTS_FILES
    +IF(TIFF_FOUND)
    +if(WEBP_FOUND)
    +LIST(APPEND TESTS_FILES
     	gdnametest
     )
    +ENDIF(WEBP_FOUND)
    +ENDIF(TIFF_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am
    index b537cbc0a3f..df86097df95 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am
    @@ -1,5 +1,9 @@
    +if HAVE_LIBTIFF
    +if HAVE_LIBWEBP
     libgd_test_programs += \
     	gdimagefile/gdnametest
    +endif
    +endif
     
     EXTRA_DIST += \
     	gdimagefile/CMakeLists.txt \
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
    index 66da484e821..2b3cc322c45 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
    @@ -69,13 +69,10 @@ do_test() {
             {"img.wbmp",    0,  1,  0},
             {"img.bmp",     0,  1,  0},
             {"img-ref.xpm", 0,  0,  1},
    -        
    -        // These break the test so I'm skipping them since the point
    -        // of this test is not those loaders.
    -        {"img-ref.xbm", 0, -1,  1},
    -        {"img-ref.tga", 0, -1,  1},
    -        {"img.webp",    0, -1,  0},
    -        {"img.tiff",    0, -1,  0},
    +        {"img-ref.xbm", 0,  1,  1},
    +        {"img-ref.tga", 0,  1,  1},
    +        {"img.webp",   10,  1,  0},
    +        {"img.tiff",    0,  1,  0},
     
             {NULL, 0}
         };
    @@ -84,6 +81,7 @@ do_test() {
             gdImagePtr orig, copy;
             int status;
             char *full_filename = NULL;
    +        unsigned int pixels;
     
             /* Some image readers are buggy and crash the program so we
              * skip them.  Bug fixers should remove these from the list of
    @@ -97,7 +95,7 @@ do_test() {
              * it.  (If it's one of the built-in types, *that* a different
              * problem; we assert that here.) */
             if (!gdSupportsFileType(names[n].nm, 0)) {
    -            gdTestAssertMsg(!names[n].required, "GD doesn't support required file type: %s\n", full_filename);
    +            gdTestAssertMsg(!names[n].required, "GD doesn't support required file type: %s\n", names[n].nm);
                 continue;
             }/* if */
     
    @@ -120,7 +118,8 @@ do_test() {
             gdTestAssertMsg(!!copy, "Failed to load %s\n", full_filename);
             if (!copy) continue;
     
    -        gdTestAssertMsg(gdMaxPixelDiff(orig, copy) <= names[n].maxdiff,"Pixels different on %s\n", full_filename, full_filename);
    +        pixels = gdMaxPixelDiff(orig, copy);
    +        gdTestAssertMsg(pixels <= names[n].maxdiff, "%u pixels different on %s\n", pixels, full_filename);
     
             if (!names[n].readonly) {
                 status = remove(full_filename);
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt
    index 6b09c1bf5cc..457fd8d16a2 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/CMakeLists.txt
    @@ -1,9 +1,11 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00002_1
     	bug00002_2
     	bug00002_3
     	bug00002_4
     	bug00104_1
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt
    index 1a0a2042e2d..ba6d28f49a6 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/CMakeLists.txt
    @@ -1,5 +1,7 @@
    +IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	php_bug43828
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt
    index bafe7dd5ac1..5fe4edd1ad4 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt
    @@ -1,7 +1,9 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00010
     	bug00191
     	github_bug_00238
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt
    index 190dad7f943..030a22464b1 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/CMakeLists.txt
    @@ -1,4 +1,5 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	gdimagefilledpolygon0
     	gdimagefilledpolygon1
     	gdimagefilledpolygon2
    @@ -7,5 +8,6 @@ SET(TESTS_FILES
     	php_bug_64641
     	self_intersecting
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt
    index 2b26022ca70..45688733eb3 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	bug00004
     	bug00078
     	bug00106_gdimagefilledrectangle
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt
    index f03529a6082..fcf18f1a2e5 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt
    @@ -1,6 +1,8 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00037
     	github_bug_215
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt
    index a1b6642984e..7a3c9594d78 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	gdCopyBlurred
     )
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt
    index 39caf080fb3..c532f01ec94 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageflip/CMakeLists.txt
    @@ -1,5 +1,7 @@
    +IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	gdimageflip
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c b/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
    index e0a1a2ab3d7..a29e50e18f2 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
    @@ -7,7 +7,7 @@
     #include "gdtest.h"
     
     
    -static void test_flip(void (*func)(gdImagePtr), const char *filename)
    +static void test_flip(void (BGD_STDCALL *func)(gdImagePtr), const char *filename)
     {
         gdImagePtr im;
         FILE *fp;
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt
    index 381c74d06e2..b83521dc8f7 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/CMakeLists.txt
    @@ -1,5 +1,8 @@
    +IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	basic
    +	bug00386
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am
    index e715c5b4235..c6fec00ee3d 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/Makemodule.am
    @@ -1,9 +1,11 @@
     if HAVE_LIBPNG
     libgd_test_programs += \
    -	gdimagegrayscale/basic
    +	gdimagegrayscale/basic \
    +	gdimagegrayscale/bug00386
     endif
     
     EXTRA_DIST += \
     	gdimagegrayscale/CMakeLists.txt \
     	gdimagegrayscale/basic.png \
    -	gdimagegrayscale/basic_exp.png
    +	gdimagegrayscale/basic_exp.png \
    +	gdimagegrayscale/bug00386.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c
    new file mode 100644
    index 00000000000..5b6d048130a
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c
    @@ -0,0 +1,51 @@
    +/**
    + * Test that gdImageGrayScale() produces pure gray-scale images
    + *
    + * We are reading a PNG image with transparency, apply gdImageGrayScale() and
    + * test that each pixel has equal red, blue and green components. To avoid
    + * flooding the test log, we bail out after the first non gray-scale pixel.
    + *
    + * We also make sure that the image is a truecolor image, since otherwise it is
    + * not guaranteed that all pixels are actually gray-scale.
    + *
    + * See also <https://github.com/libgd/libgd/issues/386>.
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +    int res;
    +    int i, j;
    +
    +    fp = gdTestFileOpen2("gdimagegrayscale", "bug00386.png");
    +    gdTestAssert(fp != NULL);
    +    im = gdImageCreateFromPng(fp);
    +    gdTestAssert(im != NULL);
    +    fclose(fp);
    +
    +    res = gdImageTrueColor(im);
    +    gdTestAssert(res != 0);
    +
    +    res = gdImageGrayScale(im);
    +    gdTestAssert(res != 0);
    +
    +    for (i = 0; i < gdImageSX(im); i++) {
    +        for (j = 0; j < gdImageSY(im); j++) {
    +            int color = gdImageGetTrueColorPixel(im, i, j);
    +            int red = gdImageRed(im, color);
    +            int green = gdImageGreen(im, color);
    +            int blue = gdImageBlue(im, color);
    +            if (!gdTestAssert(red == green && green == blue)) {
    +                return gdNumFailures();
    +            }
    +        }
    +    }
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.png b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.png
    new file mode 100644
    index 00000000000..b5d5d1f4b25
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
    index a1658a61a04..1f8c419a682 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
    @@ -1,11 +1,17 @@
    -SET(TESTS_FILES
    -	gdimageline_aa
    +LIST(APPEND TESTS_FILES
     	gdimageline_aa_outofrange
    -	gdImageAALine_thickness
    -	github_bug_167
    +)
    +
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00077
     	bug00072
     	bug00111
    +	gdimageline_aa
    +	gdimageline_bug5
    +	gdImageAALine_thickness
    +	github_bug_167
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS(m)
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt
    index 381c74d06e2..802c38220ae 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagenegate/CMakeLists.txt
    @@ -1,5 +1,7 @@
    +IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	basic
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt
    index 6ec1a0f15f4..5b3e06922f5 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageopenpolygon/CMakeLists.txt
    @@ -1,8 +1,10 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	gdimageopenpolygon0
     	gdimageopenpolygon1
     	gdimageopenpolygon2
     	gdimageopenpolygon3
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt
    index eadd82a4670..214c80148a9 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	gdimagepixelate
     )
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt
    index e965b73fdd2..647636adcea 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepolygon/CMakeLists.txt
    @@ -1,8 +1,10 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	gdimagepolygon0
     	gdimagepolygon1
     	gdimagepolygon2
     	gdimagepolygon3
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt
    index 9008d86c77f..e2a2b817e97 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/CMakeLists.txt
    @@ -1,9 +1,14 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	bug00003
     	bug00106_gdimagerectangle
    -	bug00299
     	github_bug_00172
     	point_ordering
     )
     
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	bug00299
    +)
    +ENDIF(PNG_FOUND)
    +
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am
    index ea9d52b9662..cd49b73fae4 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/Makemodule.am
    @@ -1,10 +1,14 @@
     libgd_test_programs += \
     	gdimagerectangle/bug00003 \
     	gdimagerectangle/bug00106_gdimagerectangle \
    -	gdimagerectangle/bug00299 \
     	gdimagerectangle/github_bug_00172 \
     	gdimagerectangle/point_ordering
     
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimagerectangle/bug00299
    +endif
    +
     EXTRA_DIST += \
     	gdimagerectangle/CMakeLists.txt \
     	gdimagerectangle/bug00299_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
    index ab8b4cfb7ca..01957c5905c 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
    @@ -1,7 +1,14 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +IF(JPEG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00067
    +)
    +ENDIF(JPEG_FOUND)
    +
    +LIST(APPEND TESTS_FILES
     	php_bug_64898
     	php_bug_65070
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
    index 99b2398bb8a..9d375f39b9e 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
    @@ -1,9 +1,9 @@
    +if HAVE_LIBPNG
     if HAVE_LIBJPEG
     libgd_test_programs += \
     	gdimagerotate/bug00067
     endif
     
    -if HAVE_LIBPNG
     libgd_test_programs += \
     	gdimagerotate/php_bug_64898 \
     	gdimagerotate/php_bug_65070
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt
    index b1d9cf3d85d..1174e6555d0 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	bug00329
     	bug00330
     	github_bug_00218
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am
    index 771030151df..432ddbeafb6 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/Makemodule.am
    @@ -1,4 +1,3 @@
    -
     libgd_test_programs += \
     	gdimagescale/bug00329 \
     	gdimagescale/bug00330 \
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt
    index 0a9e2167c4c..479afe573aa 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescatterex/CMakeLists.txt
    @@ -1,6 +1,8 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00208_1
     	bug00208_2
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt
    index f969cdf72d3..675bbfd4b62 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/CMakeLists.txt
    @@ -1,8 +1,13 @@
    -SET(TESTS_FILES
    -	alpha_blending
    +LIST(APPEND TESTS_FILES
     	bug00186
     	gdeffectoverlay
     	gdeffectmultiply
     )
     
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	alpha_blending
    +)
    +ENDIF(PNG_FOUND)
    +
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am
    index 0a574ad14b1..1eb022453b1 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/Makemodule.am
    @@ -1,9 +1,13 @@
     libgd_test_programs += \
    -	gdimagesetpixel/alpha_blending \
     	gdimagesetpixel/bug00186 \
     	gdimagesetpixel/gdeffectmultiply \
     	gdimagesetpixel/gdeffectoverlay
     
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimagesetpixel/alpha_blending
    +endif
    +
     EXTRA_DIST += \
     	gdimagesetpixel/CMakeLists.txt \
     	gdimagesetpixel/alphablending_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt
    index a38613f9a81..00a8f43cb63 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt
    @@ -1,7 +1,9 @@
     IF(FREETYPE_FOUND)
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	gdimagestringft_bbox
     )
    +ENDIF(PNG_FOUND)
     ENDIF(FREETYPE_FOUND)
     
    -ADD_GD_TESTS()
    +ADD_GD_TESTS(m)
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am
    index 0dfe26fb13c..956e1db0d10 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am
    @@ -1,7 +1,9 @@
     if HAVE_LIBFREETYPE
    +if HAVE_LIBPNG
     libgd_test_programs += \
     	gdimagestringft/gdimagestringft_bbox
     endif
    +endif
     
     EXTRA_DIST += \
     	gdimagestringft/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c
    index 0161ec8101c..1596a9e7be5 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/gdimagestringft_bbox.c
    @@ -38,6 +38,9 @@ int main()
     	int error = 0;
     	FILE *fp;
     
    +	/* disable subpixel hinting */
    +	putenv("FREETYPE_PROPERTIES=truetype:interpreter-version=35");
    +
     	path = gdTestFilePath("freetype/DejaVuSans.ttf");
     	im = gdImageCreate(800, 800);
     	gdImageColorAllocate(im, 0xFF, 0xFF, 0xFF); /* allocate white for background color */
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt
    index db08ac13a8e..c7130f119a9 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringftex/CMakeLists.txt
    @@ -1,5 +1,5 @@
     IF(FREETYPE_FOUND)
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	gdimagestringftex_returnfontpathname
     )
     ENDIF(FREETYPE_FOUND)
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am
    index 31f03624f66..ac9eedca029 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/Makemodule.am
    @@ -1,4 +1,3 @@
    -
     libgd_test_programs += \
     	gdimagetruecolortopalette/bug00307 \
     	gdimagetruecolortopalette/php_bug_72512
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt
    index 296e3f1ca77..af0fd8c585e 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	gdModesAndPalettes
     	gdTrivialResize
     )
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt
    index bc72c27c84b..b796dd2b72a 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdnewfilectx/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	gdnewfilectx_null
     )
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
    index b0462fc42d7..7e9ee362985 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
    @@ -40,6 +40,7 @@ void gdSilence(int priority, const char *format, va_list args)
     	(void)args;
     }
     
    +#ifdef HAVE_LIBPNG
     gdImagePtr gdTestImageFromPng(const char *filename)
     {
     	gdImagePtr image;
    @@ -64,6 +65,7 @@ gdImagePtr gdTestImageFromPng(const char *filename)
     	fclose(fp);
     	return image;
     }
    +#endif
     
     static char *tmpdir_base;
     
    @@ -500,7 +502,7 @@ unsigned int gdMaxPixelDiff(gdImagePtr a, gdImagePtr b)
         return diff;
     }
     
    -
    +#ifdef HAVE_LIBPNG
     int gdTestImageCompareToImage(const char* file, unsigned int line, const char* message,
                                   gdImagePtr expected, gdImagePtr actual)
     {
    @@ -577,13 +579,15 @@ fail:
     	if (surface_diff) {
     		gdImageDestroy(surface_diff);
     	}
    -	return 0;
    +	return 1;
     }
    +#endif
     
    +#ifdef HAVE_LIBPNG
     int gdTestImageCompareToFile(const char* file, unsigned int line, const char* message,
                                  const char *expected_file, gdImagePtr actual)
     {
    -	gdImagePtr expected;
    +	gdImagePtr expected = 0;
     	int res = 1;
     
     	expected = gdTestImageFromPng(expected_file);
    @@ -597,7 +601,7 @@ int gdTestImageCompareToFile(const char* file, unsigned int line, const char* me
     	}
     	return res;
     }
    -
    +#endif
     
     static int failureCount = 0;
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt
    index aa09d66c40a..25f60459005 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtiled/CMakeLists.txt
    @@ -1,5 +1,9 @@
    -SET(TESTS_FILES
    +IF(PNG_FOUND)
    +IF(ZLIB_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00032
     )
    +ENDIF(ZLIB_FOUND)
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt
    index f5c5bb75b0a..9851123fd7f 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	github_bug_00221
     )
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am
    index e70b0735d12..2566ed58c88 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/Makemodule.am
    @@ -1,4 +1,3 @@
    -
     libgd_test_programs += \
     	gdtransformaffineboundingbox/github_bug_00221
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt
    index f9aa0e23c78..7d40cddca6a 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt
    @@ -1,13 +1,19 @@
    -SET(TESTS_FILES
    -	gif_im2im
    +LIST(APPEND TESTS_FILES
    +	bug00005_2
    +	bug00181
    +	bug00227
     	gif_null
    +)
    +
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	bug00005
    -	bug00005_2
     	bug00006
     	bug00060
     	bug00066
    -	bug00181
    -	bug00227
    +	gif_im2im
    +	uninitialized_memory_read
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am
    index 50f671fbceb..0bdeab7e663 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am
    @@ -2,7 +2,8 @@ libgd_test_programs += \
     	gif/bug00005_2 \
     	gif/bug00181 \
     	gif/bug00227 \
    -	gif/gif_null
    +	gif/gif_null \
    +	gif/uninitialized_memory_read
     
     if HAVE_LIBPNG
     libgd_test_programs += \
    @@ -22,4 +23,5 @@ EXTRA_DIST += \
     	gif/bug00005_3.gif \
     	gif/bug00060.gif \
     	gif/bug00066.gif \
    -	gif/bug00066_exp.png
    +	gif/bug00066_exp.png \
    +	gif/unitialized_memory_read.gif
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/uninitialized_memory_read.c b/Build/source/libs/gd/libgd-src/tests/gif/uninitialized_memory_read.c
    new file mode 100644
    index 00000000000..566fc4acc91
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/uninitialized_memory_read.c
    @@ -0,0 +1,42 @@
    +/**
    + * Test for uninitialized color map entries
    + *
    + * We're reading a crafted GIF which consists of 16x16 color blocks and which
    + * has only two palette entries in the global color map, but uses other palette
    + * indexes as well. We verify whether all undefined palette indexes produce the
    + * color black.
    + *
    + * See also <CAKm_7a-AO++B6cXYWM_DtycPENG5WNWK7NSEvQ5OmZziMY_JyA@mail.gmail.com>
    + * which had been sent to security@libgd.org.
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +    int i, j, col;
    +
    +    fp = gdTestFileOpen2("gif", "unitialized_memory_read.gif");
    +    gdTestAssert(fp != NULL);
    +    im = gdImageCreateFromGif(fp);
    +    gdTestAssert(im != NULL);
    +    fclose(fp);
    +
    +    for (i = 0; i < gdImageSX(im); i += 16) {
    +        for (j = 0; j < gdImageSY(im); j += 16) {
    +            if (gdImageGetPixel(im, i, j) >= 2) {
    +                col = gdImageGetTrueColorPixel(im, i, j);
    +                gdTestAssertMsg(col == 0, "(%d,%d): expected color 0, but got %d\n", i, j, col);
    +            }
    +        }
    +    }
    +
    +    gdImageDestroy(im);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/unitialized_memory_read.gif b/Build/source/libs/gd/libgd-src/tests/gif/unitialized_memory_read.gif
    new file mode 100644
    index 00000000000..92fbb7ff20d
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gif/unitialized_memory_read.gif differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt
    index 5effc8c0de6..19964b0ce2c 100644
    --- a/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt
    @@ -1,12 +1,18 @@
     IF(JPEG_FOUND)
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
    +	jpeg_empty_file
     	jpeg_im2im
     	jpeg_null
    +)
    +
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	bug_github_18
     	jpeg_read
    -	jpeg_empty_file
     	jpeg_resolution
    -	bug_github_18
    +	bug00338
     )
    +ENDIF(PNG_FOUND)
     ENDIF(JPEG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am
    index bc196b197ba..7e5d317b69f 100644
    --- a/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am
    @@ -1,12 +1,13 @@
     if HAVE_LIBJPEG
     libgd_test_programs += \
    -	jpeg/bug_github_18 \
     	jpeg/jpeg_empty_file \
     	jpeg/jpeg_im2im \
     	jpeg/jpeg_null
     
     if HAVE_LIBPNG
     libgd_test_programs += \
    +	jpeg/bug_github_18 \
    +	jpeg/bug00338 \
     	jpeg/jpeg_read \
     	jpeg/jpeg_resolution
     endif
    diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c b/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c
    new file mode 100644
    index 00000000000..15224d32b34
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c
    @@ -0,0 +1,51 @@
    +/**
    + * Regression test for <https://github.com/libgd/libgd/issues/338>
    + *
    + * We're testing that reading a JPEG image with gdImageCreateFromJpeg()
    + * raises a GD_WARNING for the fatal libjpeg error, but not a GD_ERROR.
    + * We also make sure, that the fatal libjpeg error is actually reported.
    + *
    + * See also ../png/bug00338.c
    + */
    +
    +
    +#include <string.h>
    +#include "gd.h"
    +#include "gd_errors.h"
    +#include "gdtest.h"
    +
    +
    +#define MSG "gd-jpeg: JPEG library reports unrecoverable error: %s"
    +
    +
    +static int error_handler_called = 0;
    +
    +
    +static void error_handler(int priority, const char *format, va_list args)
    +{
    +    if (!strcmp(format, MSG)) {
    +        gdTestAssertMsg(priority == GD_WARNING, "expected priority %d, but got %d", GD_WARNING, priority);
    +        error_handler_called = 1;
    +    }
    +}
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +
    +    gdSetErrorMethod(error_handler);
    +
    +    im = gdImageCreateTrueColor(10, 10);
    +    fp = gdTestTempFp();
    +    gdImagePng(im, fp);
    +    gdImageDestroy(im);
    +
    +    im = gdImageCreateFromJpeg(fp);
    +    gdTestAssert(im == NULL);
    +
    +    gdTestAssert(error_handler_called);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt
    index 5235417eaae..6fd64b24447 100644
    --- a/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt
    @@ -1,5 +1,5 @@
     IF(PNG_FOUND)
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	png_im2im
     	png_null
     	png_resolution
    @@ -8,6 +8,9 @@ SET(TESTS_FILES
     	bug00086
     	bug00088
     	bug00193
    +	bug00338
    +	bug00381_1
    +	bug00381_2
     )
     ENDIF(PNG_FOUND)
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am
    index 01c48036cc7..c167955b1cb 100644
    --- a/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am
    @@ -5,6 +5,9 @@ libgd_test_programs += \
     	png/bug00086 \
     	png/bug00088 \
     	png/bug00193 \
    +	png/bug00338 \
    +	png/bug00381_1 \
    +	png/bug00381_2 \
     	png/png_im2im \
     	png/png_null \
     	png/png_resolution
    @@ -17,4 +20,5 @@ EXTRA_DIST += \
     	png/bug00088_1_exp.png \
     	png/bug00088_2.png \
     	png/bug00088_2_exp.png \
    +	png/bug00381_2.gd \
     	png/emptyfile
    diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00338.c b/Build/source/libs/gd/libgd-src/tests/png/bug00338.c
    new file mode 100644
    index 00000000000..0bdd9f9a6f0
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00338.c
    @@ -0,0 +1,48 @@
    +/**
    + * Regression test for <https://github.com/libgd/libgd/issues/338>
    + *
    + * We're testing that writing a PNG image with an unsupported quality
    + * raises a GD_WARNING for the fatal libpng error, but not a GD_ERROR.
    + * We also make sure, that the fatal libpng error is actually reported.
    + *
    + * See also ../jpeg/bug00338.c
    + */
    +
    +
    +#include <string.h>
    +#include "gd.h"
    +#include "gd_errors.h"
    +#include "gdtest.h"
    +
    +
    +#define MSG "gd-png: fatal libpng error: %s\n"
    +
    +
    +static int error_handler_called = 0;
    +
    +
    +static void error_handler(int priority, const char *format, va_list args)
    +{
    +    if (!strcmp(format, MSG)) {
    +        gdTestAssertMsg(priority == GD_WARNING, "expected priority %d, but got %d", GD_WARNING, priority);
    +        error_handler_called = 1;
    +    }
    +}
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +
    +    gdSetErrorMethod(error_handler);
    +
    +    im = gdImageCreateTrueColor(10, 10);
    +    fp = gdTestTempFp();
    +    gdImagePngEx(im, fp, 100);
    +    gdImageDestroy(im);
    +
    +    gdTestAssert(error_handler_called);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00381_1.c b/Build/source/libs/gd/libgd-src/tests/png/bug00381_1.c
    new file mode 100644
    index 00000000000..d8f375b89f8
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00381_1.c
    @@ -0,0 +1,31 @@
    +/**
    + * Test that failure to convert to PNG returns NULL
    + *
    + * We are creating a palette image without allocating any colors in the palette,
    + * and pass this image to `gdImagePngPtr()` which is supposed to fail, and as
    + * such should return NULL.
    + *
    + * See also <https://github.com/libgd/libgd/issues/381>
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    void *data;
    +    int size = 0;
    +
    +    im = gdImageCreate(100, 100);
    +    gdTestAssert(im != NULL);
    +
    +    data = gdImagePngPtr(im, &size);
    +    gdTestAssert(data == NULL);
    +
    +    gdImageDestroy(im);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.c b/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.c
    new file mode 100644
    index 00000000000..84c7bb15654
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.c
    @@ -0,0 +1,35 @@
    +/**
    + * Test that failure to convert to PNG returns NULL
    + *
    + * We are reading a palette image without any colors in the palette, and pass
    + * this image to `gdImagePngPtr()` which is supposed to fail, and as such should
    + * return NULL.
    + *
    + * See also <https://github.com/libgd/libgd/issues/381>
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +    void *data;
    +    int size = 0;
    +
    +    fp = gdTestFileOpen2("png", "bug00381_2.gd");
    +    gdTestAssert(fp != NULL);
    +    im = gdImageCreateFromGd(fp);
    +    gdTestAssert(im != NULL);
    +    fclose(fp);
    +
    +    data = gdImagePngPtr(im, &size);
    +    gdTestAssert(data == NULL);
    +
    +    gdImageDestroy(im);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.gd b/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.gd
    new file mode 100644
    index 00000000000..c18480aeeb3
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/png/bug00381_2.gd differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt
    index af234971183..ca191a65ced 100644
    --- a/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/tga/CMakeLists.txt
    @@ -1,12 +1,17 @@
    -SET(TESTS_FILES
    -	tga_null
    +LIST(APPEND TESTS_FILES
     	bug00084
     	bug00247
     	bug00247a
     	bug00248
     	bug00248a
     	heap_overflow
    +	tga_null
    +)
    +
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	tga_read
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am
    index ab08dbff2b9..091e3bef35d 100644
    --- a/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/tga/Makemodule.am
    @@ -5,8 +5,12 @@ libgd_test_programs += \
     	tga/bug00248 \
     	tga/bug00248a \
     	tga/heap_overflow \
    -	tga/tga_null \
    +	tga/tga_null
    +
    +if HAVE_LIBPNG
    +libgd_test_programs += \
     	tga/tga_read
    +endif
     
     EXTRA_DIST += \
     	tga/CMakeLists.txt \
    diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
    index e5862ac126f..8e542e690c4 100644
    --- a/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
    @@ -1,9 +1,10 @@
     IF(TIFF_FOUND)
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	tiff_im2im
     	tiff_invalid_read
     	tiff_null
     	tiff_dpi
    +	tiff_read_bw
     )
     ENDIF(TIFF_FOUND)
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
    index 670434a7d32..2a88d68df3c 100644
    --- a/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
    @@ -3,11 +3,14 @@ libgd_test_programs += \
     	tiff/tiff_dpi \
     	tiff/tiff_im2im \
     	tiff/tiff_invalid_read \
    -	tiff/tiff_null
    +	tiff/tiff_null \
    +	tiff/tiff_read_bw
     endif
     
     EXTRA_DIST += \
     	tiff/CMakeLists.txt \
     	tiff/tiff_invalid_read_1.tiff \
     	tiff/tiff_invalid_read_2.tiff \
    -	tiff/tiff_invalid_read_3.tiff
    +	tiff/tiff_invalid_read_3.tiff \
    +	tiff/tiff_read_bw.tiff \
    +	tiff/tiff_read_bw_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c
    index d639839c420..7b607a25fa1 100644
    --- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c
    +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c
    @@ -3,14 +3,7 @@
      * works correctly.  Set the image resolution, write the file, read the file
      * back and test that the image resolution comes back correct.
      */
    -#ifdef _WIN32
    -#include <stdio.h>
    -int main()
    -{
    -	printf("skip");
    -	return 0;
    -}
    -#else
    +
     #include "gd.h"
     #include "gdtest.h"
     
    @@ -81,4 +74,3 @@ door0:
     	gdImageDestroy(src);
     	return status;
     }
    -#endif
    diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c
    index b6b240e3ce3..7b6c4cb9c5f 100644
    --- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c
    +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_im2im.c
    @@ -1,11 +1,3 @@
    -#ifdef _WIN32
    -#include <stdio.h>
    -int main()
    -{
    -	printf("skip");
    -	return 0;
    -}
    -#else
     #include "gd.h"
     #include "gdtest.h"
     
    @@ -70,4 +62,3 @@ door0:
     	gdImageDestroy(src);
     	return status;
     }
    -#endif
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c
    index 19b64f771c3..ccaade7498f 100644
    --- a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c
    +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_null.c
    @@ -1,11 +1,3 @@
    -#ifdef _WIN32
    -#include <stdio.h>
    -int main()
    -{
    -	printf("skip");
    -	return 0;
    -}
    -#else
     #include "gd.h"
     
     int main()
    @@ -20,4 +12,3 @@ int main()
     	gdImageTiff(im, NULL); /* noop safely */
     	return 0;
     }
    -#endif
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c
    new file mode 100644
    index 00000000000..c302c63aa86
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.c
    @@ -0,0 +1,26 @@
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +    char *path;
    +
    +    fp = gdTestFileOpen2("tiff", "tiff_read_bw.tiff");
    +    gdTestAssert(fp != NULL);
    +    im = gdImageCreateFromTiff(fp);
    +    fclose(fp);
    +
    +    gdTestAssert(im != NULL);
    +    gdTestAssert(!gdImageTrueColor(im));
    +
    +    path = gdTestFilePath2("tiff", "tiff_read_bw_exp.png");
    +    gdAssertImageEqualsToFile(path, im);
    +    gdFree(path);
    +
    +    gdImageDestroy(im);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.tiff b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.tiff
    new file mode 100644
    index 00000000000..69813f0ddd9
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw.tiff differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw_exp.png b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw_exp.png
    new file mode 100644
    index 00000000000..b43daf9b8da
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/tiff/tiff_read_bw_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt
    index 2c988680f8f..1f85a15f86e 100644
    --- a/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt
    @@ -1,6 +1,11 @@
    -SET(TESTS_FILES
    -	wbmp_im2im
    +LIST(APPEND TESTS_FILES
     	wbmp_null
     )
     
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	wbmp_im2im
    +)
    +ENDIF(PNG_FOUND)
    +
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
    index d2db95b9698..ec27127b1d6 100644
    --- a/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
    @@ -1,5 +1,5 @@
     IF(WEBP_FOUND)
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	bug00111
     	bug_double_free
     )
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt
    index 183cf5eaf3f..3e3bb696cad 100644
    --- a/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt
    @@ -1,5 +1,9 @@
    +IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
    +	github_bug_109
     	github_bug_170
    +	x10_basic_read
     )
    +ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am
    index ba1eabd5bd4..a9a293d1612 100644
    --- a/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am
    @@ -1,5 +1,13 @@
    +if HAVE_LIBPNG
     libgd_test_programs += \
    -	xbm/github_bug_170
    +	xbm/github_bug_109 \
    +	xbm/github_bug_170 \
    +	xbm/x10_basic_read
    +endif
     
     EXTRA_DIST += \
    -	xbm/CMakeLists.txt
    +	xbm/CMakeLists.txt \
    +	xbm/github_bug_109.xbm \
    +	xbm/github_bug_109_exp.png \
    +	xbm/x10_basic_read.xbm \
    +	xbm/x10_basic_read_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c
    new file mode 100644
    index 00000000000..c0b50a8f0d4
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.c
    @@ -0,0 +1,35 @@
    +/**
    + * Test reading of XBM images with a width that is not a multiple of 8
    + *
    + * We're reading such an XBM image, and check that we got what we've expected,
    + * instead of an error message.
    + *
    + * See also <https://github.com/libgd/libgd/issues/109>.
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +    char *path;
    +
    +    fp = gdTestFileOpen2("xbm", "github_bug_109.xbm");
    +    im = gdImageCreateFromXbm(fp);
    +    fclose(fp);
    +    gdTestAssert(im != NULL);
    +    gdTestAssert(gdImageGetTrueColorPixel(im, 0, 0) == 0);
    +    gdTestAssert(gdImageGetTrueColorPixel(im, 0, 1) == 0xffffff);
    +
    +    path = gdTestFilePath2("xbm", "github_bug_109_exp.png");
    +    gdAssertImageEqualsToFile(path, im);
    +    gdFree(path);
    +
    +    gdImageDestroy(im);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.xbm b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.xbm
    new file mode 100644
    index 00000000000..f427d86a54b
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109.xbm
    @@ -0,0 +1,5 @@
    +#define test_width 10
    +#define test_height 10
    +static unsigned char test_bits[] = {
    +  0xFF, 0x03, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 
    +  0xFF, 0x03, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00};
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109_exp.png b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109_exp.png
    new file mode 100644
    index 00000000000..505b5457c85
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_109_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c
    new file mode 100644
    index 00000000000..99b9019c5f7
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.c
    @@ -0,0 +1,32 @@
    +/**
    + * Test reading of an X10 style XBM file
    + *
    + * X10 style XBMs define a short[] instead of a char[] array. We're testing
    + * that such files are read correctly, particularly regarding the line padding,
    + * which is 2 bytes instead of 1, and the endianess.
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +    char *path;
    +
    +    fp = gdTestFileOpen2("xbm", "x10_basic_read.xbm");
    +    im = gdImageCreateFromXbm(fp);
    +    fclose(fp);
    +    gdTestAssert(im != NULL);
    +
    +    path = gdTestFilePath2("xbm", "x10_basic_read_exp.png");
    +    gdAssertImageEqualsToFile(path, im);
    +    gdFree(path);
    +
    +    gdImageDestroy(im);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.xbm b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.xbm
    new file mode 100644
    index 00000000000..d8ca2cd4292
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read.xbm
    @@ -0,0 +1,4 @@
    +#define x10_basic_read_width 17
    +#define x10_basic_read_height 3
    +static unsigned short x10_basic_read_bits[] = {
    +  0xFFFF, 0x0001, 0x0000, 0x0000, 0xFFFF, 0x0001};
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read_exp.png b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read_exp.png
    new file mode 100644
    index 00000000000..fbcdf0cfe57
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/xbm/x10_basic_read_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt
    index 1301bc3f824..0b1a106c6fe 100644
    --- a/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/xpm/CMakeLists.txt
    @@ -1,5 +1,5 @@
     IF(XPM_FOUND)
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	bug00166
     	bug00185
     	color_name
    diff --git a/Build/source/libs/gd/libgd-src/windows/Makefile.vc b/Build/source/libs/gd/libgd-src/windows/Makefile.vc
    index 2c72877a25b..c87583c5089 100644
    --- a/Build/source/libs/gd/libgd-src/windows/Makefile.vc
    +++ b/Build/source/libs/gd/libgd-src/windows/Makefile.vc
    @@ -97,14 +97,30 @@ LIB_OBJS= \
       $(LIBGD_OBJ_DIR)\gd_webp.obj
     
     LIBS=kernel32.lib ole32.lib user32.lib advapi32.lib shell32.lib ws2_32.lib Dnsapi.lib Gdi32.Lib
    -LIBS_GD=libjpeg_a.lib freetype_a.lib libpng_a.lib libiconv_a.lib  zlib_a.lib libwebp_a.lib libxpm_a.lib
    -
    -INCLUDES=/Isrc /I$(WITH_DEVEL)\include -I$(WITH_DEVEL)\include\libpng16 -I$(WITH_DEVEL)\include\freetype /Itests /Itests\gdtest -I$(WITH_DEVEL)\include\
    +LIBS_GD=libjpeg_a.lib freetype_a.lib libpng_a.lib libiconv_a.lib  zlib_a.lib libwebp_a.lib libxpm_a.lib libtiff.lib
    +
    +PROG_EXES= \
    +	$(LIBGD_OBJ_DIR)\gdcmpgif.exe \
    +	$(LIBGD_OBJ_DIR)\gdtopng.exe \
    +	$(LIBGD_OBJ_DIR)\pngtogd.exe \
    +	$(LIBGD_OBJ_DIR)\gdparttopng.exe \
    +	$(LIBGD_OBJ_DIR)\gd2topng.exe \
    +	$(LIBGD_OBJ_DIR)\pngtogd2.exe \
    +	$(LIBGD_OBJ_DIR)\annotate.exe \
    +	$(LIBGD_OBJ_DIR)\gd2copypal.exe \
    +	$(LIBGD_OBJ_DIR)\gd2togif.exe \
    +	$(LIBGD_OBJ_DIR)\giftogd2.exe
    +PROG_OBJS=$(PROG_EXES:exe=obj)
    +
    +INCLUDES=/Isrc /I$(WITH_DEVEL)\include -I$(WITH_DEVEL)\include\libpng16 -I$(WITH_DEVEL)\include\freetype -I$(WITH_DEVEL)\include\freetype2 /Itests /Itests\gdtest -I$(WITH_DEVEL)\include\
     
     LDFLAGS=/nologo /nodefaultlib:libcmt /libpath:$(WITH_DEVEL)\lib /MACHINE:$(PLATFORM)
    +!IF $(DEBUG)
    +LDFLAGS=$(LDFLAGS) /DEBUG
    +!ENDIF
     
     !IF $(DEBUG)
    -CFLAGS=/nologo /Qvec-report:1 /MD /TC /Zi /Debug
    +CFLAGS=/nologo /Qvec-report:1 /MD /TC /Zi
     !ELSE
     CFLAGS=/nologo /O2 /Qvec-report:1 /MD /TC
     !ENDIF
    @@ -124,6 +140,7 @@ CFLAGS= $(CFLAGS) \
     	   /DHAVE_LIBWEBP=1\
            /DHAVE_LIBZ=1\
     	   /DHAVE_LIBXPM=1\
    +       /DHAVE_LIBTIFF=1\
            $(INCLUDES)
     
     TEST_CFLAGS=$(CFLAGS)
    @@ -147,7 +164,8 @@ TEST_OBJS=$(TEST_OBJS:exe=obj)
     
     # pseudotargets
     build_libs: make_dirs $(TARGETDLL) $(TARGETLIB)
    -all: build_libs build_tests
    +build_progs: build_libs $(PROG_OBJS) $(PROG_EXES)
    +all: build_libs build_tests build_progs
     check: all run_tests
     
     clean:
    @@ -189,7 +207,10 @@ make_dirs:
     	@echo #endif>> $(GD_CONFIG_H)
     	@echo #ifndef HAVE_SYS_STAT_H>> $(GD_CONFIG_H)
     	@echo #define HAVE_SYS_STAT_H>> $(GD_CONFIG_H)
    -	@echo #endif>> $(GD_CONFIG_H)	
    +	@echo #endif>> $(GD_CONFIG_H)
    +	@echo #ifndef HAVE_LIBTIFF>> $(GD_CONFIG_H)
    +	@echo #define HAVE_LIBTIFF>> $(GD_CONFIG_H)
    +	@echo #endif>> $(GD_CONFIG_H)
     
     run_tests: pretest
     	@cd $(TDR)
    @@ -209,29 +230,28 @@ $(TARGETLIB): $(LIB_OBJS)
       @$(LB) /OUT:$@ $(LIB_OBJS) $(LDFLAGS)
     
     {$(LIBGD_SRC_DIR)\}.c{$(LIBGD_OBJ_DIR)\}.obj:
    -	$(CC) $(CFLAGS) /Fo"$@"  $<
    +	$(CC) $(CFLAGS) /c /Fo"$@" /Fd$*.pdb $<
     
     all: $(LIBGD_OBJ_DIR) $(LIBGD_BIN_DIR) $(LIB_OBJS) $(STATICLIB)
     
    -.SUFFIXES: .c .obj .res
    +.SUFFIXES: .c .obj .res .exe
     
    -{$(LIBGD_SRC_DIR)\}.c{$(LIBGD_OBJ_DIR)\}.obj:
    -	$(CC) $(CFLAGS) /Fo"$@" $<
    -
    -{src\}.c{$(SDR)}.obj::
    -    $(CC) $(CFLAGS) /c $< /Fo$(SDR)
    -  
     # tests
     
     !INCLUDE $(TEST_MK)
     build_tests: $(TEST_LIST) $(SDR)readdir.obj $(SDR)gdtest.obj $(TEST_EXES)
     
     $(SDR)gdtest.obj: $(TARGETDLL) tests\gdtest\gdtest.c
    -  @$(CC) $(CFLAGS) /DGDTEST_TOP_DIR=\"$(MAKEDIR:\=\\)\\tests\" /c tests\gdtest\gdtest.c /Fo$(SDR)gdtest.obj
    +  @$(CC) $(CFLAGS) /DGDTEST_TOP_DIR=\"$(MAKEDIR:\=\\)\\tests\" /c tests\gdtest\gdtest.c /Fd$(SDR)gdtest.pdb /Fo$(SDR)gdtest.obj
     
     $(SDR)readdir.obj: $(TARGETDLL) tests\gdtest\readdir.c
    -  @$(CC) $(CFLAGS) /c tests\gdtest\readdir.c /Fo$(SDR)readdir.obj
    +  @$(CC) $(CFLAGS) /c tests\gdtest\readdir.c /Fd$(SDR)readdir.pdb /Fo$(SDR)readdir.obj
     
     pretest: $(TARGETDLL)
     	if not exist $(TDR) mkdir $(TDR)
    -	copy $(TARGETDLL) $(TDR)$(GD_DLL)
    \ No newline at end of file
    +	copy $(TARGETDLL) $(TDR)$(GD_DLL)
    +
    +# programs
    +
    +{$(LIBGD_OBJ_DIR)}.obj{$(LIBGD_OBJ_DIR)}.exe:
    +	$(LD) $(LDFLAGS) $** $(BUILD_DIR)\libgd.lib /out:$@
    diff --git a/Build/source/libs/gd/libgd-src/windows/gentest.bat b/Build/source/libs/gd/libgd-src/windows/gentest.bat
    index 9c2cbeb7ed6..f57d08b6708 100644
    --- a/Build/source/libs/gd/libgd-src/windows/gentest.bat
    +++ b/Build/source/libs/gd/libgd-src/windows/gentest.bat
    @@ -1,35 +1,35 @@
    -SETLOCAL ENABLEDELAYEDEXPANSION
    -@echo off
    -set testsdir=%~1
    -set builddir=%~2
    -set CFLAGS=%~3
    -set LDFLAGS=%~4
    -set CC=%~5
    -set LD=%~6
    -set TESTMK=%~7
    -set TESTLIST=%~8
    -echo %*
    -echo recieved !testsdir! !builddir! !CFLAGS! !LDFLAGS! !CC!
    -
    -copy NUL !TESTMK! > nul
    -copy NUL !TESTLIST! > nul
    -
    -for /D %%d in (!testsdir!/*) do (
    -	if NOT "%%d"=="gdtest" for %%f in (!testsdir!/%%d/*.c) do (
    -		echo TEST_EXES=!builddir!\tests\%%d_%%~nf.exe ^$^(TEST_EXES^) >> !TESTMK!
    -	)
    -)
    -
    -for /D %%d in (!testsdir!/*) do (
    -    if NOT "%%d"=="gdtest" for %%f in (!testsdir!/%%d/*.c) do (
    -		echo !builddir!\%%d_%%~nf.obj: !testsdir!\%%d\%%f; ^$^(CC^) ^$^(TEST_CFLAGS^) /c ^$** /Fo:$@  >> !TESTMK!
    -	)
    -)
    -
    -for /D %%d in (!testsdir!/*) do (
    -    if NOT "%%d"=="gdtest" for %%f in (!testsdir!/%%d/*.c) do (
    -		echo !builddir!\tests\%%d_%%~nf.exe: !builddir!\%%d_%%~nf.obj; !LD! !LDFLAGS! $** /out:$@ >> !TESTMK!
    -		echo %%d_%%~nf.exe >> !TESTLIST!
    -	)
    -)
    +SETLOCAL ENABLEDELAYEDEXPANSION
    +@echo off
    +set testsdir=%~1
    +set builddir=%~2
    +set CFLAGS=%~3
    +set LDFLAGS=%~4
    +set CC=%~5
    +set LD=%~6
    +set TESTMK=%~7
    +set TESTLIST=%~8
    +echo %*
    +echo recieved !testsdir! !builddir! !CFLAGS! !LDFLAGS! !CC!
    +
    +copy NUL !TESTMK! > nul
    +copy NUL !TESTLIST! > nul
    +
    +for /D %%d in (!testsdir!/*) do (
    +	if NOT "%%d"=="fontconfig" if NOT "%%d"=="gdtest" for %%f in (!testsdir!/%%d/*.c) do (
    +		echo TEST_EXES=!builddir!\tests\%%d_%%~nf.exe ^$^(TEST_EXES^) >> !TESTMK!
    +	)
    +)
    +
    +for /D %%d in (!testsdir!/*) do (
    +    if NOT "%%d"=="fontconfig" if NOT "%%d"=="gdtest" for %%f in (!testsdir!/%%d/*.c) do (
    +		echo !builddir!\%%d_%%~nf.obj: !testsdir!\%%d\%%f; ^$^(CC^) ^$^(TEST_CFLAGS^) /c ^$** /Fd$*.pdb /Fo:$@  >> !TESTMK!
    +	)
    +)
    +
    +for /D %%d in (!testsdir!/*) do (
    +    if NOT "%%d"=="fontconfig" if NOT "%%d"=="gdtest" for %%f in (!testsdir!/%%d/*.c) do (
    +		echo !builddir!\tests\%%d_%%~nf.exe: !builddir!\%%d_%%~nf.obj; !LD! !LDFLAGS! $** /out:$@ >> !TESTMK!
    +		echo %%d_%%~nf.exe >> !TESTLIST!
    +	)
    +)
     ENDLOCAL
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/libgd-src/windows/readme.md b/Build/source/libs/gd/libgd-src/windows/readme.md
    index 8753b704723..cd95b790331 100644
    --- a/Build/source/libs/gd/libgd-src/windows/readme.md
    +++ b/Build/source/libs/gd/libgd-src/windows/readme.md
    @@ -1,11 +1,53 @@
    -# Building on Windows with Visual Studio 2013
    -
    -Open the VS2013 x64 Native Tools Command Prompt. 2012 will *not* work.
    -Change to the gd-libgd folder.
    -git clone https://github.com/imazen/gd-win-dependencies into the folder. 
    -Run 
    -nmake /f windows/Makefile.vc all
    -nmake /f windows/Makefile.vc check
    -
    -Before rebuilding, run:
    -nmake /f windows/Makefile.vc clean 
    \ No newline at end of file
    +# Building on Windows with Visual Studio 2015
    +
    +* Get the required dependencies from
    +  http://windows.php.net/downloads/php-sdk/deps/vc14/ and
    +  http://windows.php.net/downloads/pecl/deps/, respectively. Choose the x86 or
    +  x64 packages depending on your needs.
    +  
    +  * freetype
    +  * libiconv
    +  * libjpeg
    +  * libpng
    +  * libtiff
    +  * libwebp
    +  * libxpm
    +  * zlib
    +  
    +* Unpack all dependency packages into the same folder.
    +
    +* Open the VS2015 x86 or x64 Native Tools Command Prompt.
    +
    +* Set the environment variable `WITH_DEVEL` to the path where you have unpacked
    +  the dependencies. `WITH_DEVEL` defaults to `..\deps`.
    +
    +* If you want a debug build, do
    +````
    +set DEBUG=1
    +````
    +  
    +* `cd` into the libgd source folder.
    +
    +* To build the libraries, do:
    +```
    +nmake /f windows\Makefile.vc
    +```
    +
    +* To build and run the tests, do:
    +````
    +nmake /f windows\Makefile.vc check
    +````
    +
    +* To build the executable programs, do:
    +````
    +nmake /f windows\Makefile.vc build_progs
    +````
    +
    +* After a successful build, you find the libraries and test executables in
    +  `..\gdbuild`. You can change the build folder by setting the environment
    +  variable `WITH_BUILD` to the desired path.
    +
    +* Before rebuilding, you may have to run:
    +```
    +nmake /f windows\Makefile.vc clean
    +```
    diff --git a/Build/source/libs/gd/libgd-src/windows/run_tests.bat b/Build/source/libs/gd/libgd-src/windows/run_tests.bat
    index 9e9c5e4d93e..bd739469d2a 100644
    --- a/Build/source/libs/gd/libgd-src/windows/run_tests.bat
    +++ b/Build/source/libs/gd/libgd-src/windows/run_tests.bat
    @@ -1,28 +1,43 @@
    -@echo off
    -setlocal EnableDelayedExpansion
    -if [%PLATFORM%]==[] set PLATFORM=x86
    -if [%PREFERREDTOOLARCHITECTURE%]==[x64] set PLATFORM=x64
    -set PLATFORM=%PLATFORM:X=x%
    -
    -for /f %%T in (testlist.txt) do (
    -  set test=%%T
    -  set output=test: !test!....................................................................
    -  set target=%%~nT.exe
    -  if not exist !target! SET result=NotFound
    -  call !target! && (SET result=Passed) || (SET result=Failed)
    -  
    -  rem > last_test.out 2> last_test.err
    -  rem set /p testerr=<last_test.err
    -  rem set /p testout=<last_test.out
    -  
    -  echo !output:~0,70!!result!
    -  
    -  rem if defined testerr echo error: !testerr!
    -  rem if defined testout echo msg: !testout!
    -  
    -  if defined APPVEYOR (
    -    appveyor AddTest "!test! %PLATFORM%" -Outcome !result! -Framework Custom -Filename %%~nT.exe -Duration 0
    -  )
    -)
    -
    +@echo off
    +setlocal EnableDelayedExpansion
    +if [%PLATFORM%]==[] set PLATFORM=x86
    +if [%PREFERREDTOOLARCHITECTURE%]==[x64] set PLATFORM=x64
    +set PLATFORM=%PLATFORM:X=x%
    +
    +set total=0
    +set total_passed=0
    +set total_failed=0
    +set total_missing=0
    +
    +for /f %%T in (testlist.txt) do (
    +  set test=%%T
    +  set output=test: !test!....................................................................
    +  set target=%%~nT.exe
    +  if not exist !target! SET result=NotFound
    +  call !target! && (SET result=Passed) || (SET result=Failed)
    +  
    +  rem > last_test.out 2> last_test.err
    +  rem set /p testerr=<last_test.err
    +  rem set /p testout=<last_test.out
    +  
    +  echo !output:~0,70!!result!
    +  
    +  rem if defined testerr echo error: !testerr!
    +  rem if defined testout echo msg: !testout!
    +  
    +  set /a total=total+1
    +  if "!result!"=="Passed" set /a total_passed=total_passed+1
    +  if "!result!"=="Failed" set /a total_failed=total_failed+1
    +  if "!result!"=="NotFound" set /a total_missing=total_missing+1
    +
    +  if defined APPVEYOR (
    +    appveyor AddTest "!test! %PLATFORM%" -Outcome !result! -Framework Custom -Filename %%~nT.exe -Duration 0
    +  )
    +)
    +echo.
    +echo Tests:   !total!
    +echo Passed:  !total_passed!
    +echo Failed:  !total_failed!
    +echo Missing: !total_missing!
    +
     exit /b 0
    \ No newline at end of file
    diff --git a/Build/source/libs/gd/version.ac b/Build/source/libs/gd/version.ac
    index e5c89ec45e8..ce56a629a49 100644
    --- a/Build/source/libs/gd/version.ac
    +++ b/Build/source/libs/gd/version.ac
    @@ -8,4 +8,4 @@ dnl
     dnl --------------------------------------------------------
     dnl
     dnl  m4-include this file to define the current gd version
    -m4_define([gd_version], [2.2.4])
    +m4_define([gd_version], [2.2.5])
    -- 
    cgit v1.2.3