From 503c0227622254c0ae3209a1fa72bcb68bb450bc Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Fri, 10 Apr 2020 03:40:48 +0000 Subject: libgd 2.3.0 git-svn-id: svn://tug.org/texlive/trunk@54636 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 | 62 +- Build/source/libs/gd/TLpatches/patch-02-no-stdcall | 6 +- Build/source/libs/gd/configure | 20 +- Build/source/libs/gd/libgd-src/CHANGELOG.md | 51 + Build/source/libs/gd/libgd-src/CMakeLists.txt | 132 +- Build/source/libs/gd/libgd-src/CONTRIBUTING.md | 138 ++ Build/source/libs/gd/libgd-src/CONTRIBUTORS | 4 +- Build/source/libs/gd/libgd-src/COPYING | 1 - Build/source/libs/gd/libgd-src/Makefile.am | 2 +- Build/source/libs/gd/libgd-src/README.md | 8 +- Build/source/libs/gd/libgd-src/VMS/CONFIGURE.COM | 58 +- Build/source/libs/gd/libgd-src/VMS/README.VMS | 14 +- Build/source/libs/gd/libgd-src/bootstrap.sh | 6 +- .../libgd-src/cmake/modules/AC_HEADER_STDC.cmake | 5 - .../cmake/modules/CMakeParseArguments.cmake | 156 -- .../cmake/modules/CheckDIRSymbolExists.cmake | 16 +- .../cmake/modules/CheckPrototypeExists.cmake | 7 +- .../libgd-src/cmake/modules/FindFontConfig.cmake | 8 +- .../gd/libgd-src/cmake/modules/FindFreetype.cmake | 128 -- .../gd/libgd-src/cmake/modules/FindICONV.cmake | 46 +- .../libs/gd/libgd-src/cmake/modules/FindJPEG.cmake | 60 - .../libs/gd/libgd-src/cmake/modules/FindLIQ.cmake | 36 +- .../libs/gd/libgd-src/cmake/modules/FindPNG.cmake | 93 -- .../gd/libgd-src/cmake/modules/FindPTHREAD.cmake | 182 ++- .../modules/FindPackageHandleStandardArgs.cmake | 317 ---- .../libs/gd/libgd-src/cmake/modules/FindRAQM.cmake | 69 + .../libs/gd/libgd-src/cmake/modules/FindWEBP.cmake | 9 +- .../libs/gd/libgd-src/cmake/modules/FindXPM.cmake | 10 +- .../cmake/modules/TestForHighBitCharacters.c | 2 +- .../cmake/modules/TestForHighBitCharacters.cmake | 4 +- .../libs/gd/libgd-src/cmake/modules/gd.cmake | 6 +- Build/source/libs/gd/libgd-src/config/Makefile.am | 4 +- .../libs/gd/libgd-src/config/gdlib-config.in | 99 -- .../source/libs/gd/libgd-src/config/gdlib.pc.cmake | 9 + Build/source/libs/gd/libgd-src/config/getver.pl | 7 +- Build/source/libs/gd/libgd-src/configure.ac | 83 +- Build/source/libs/gd/libgd-src/docs/INSTALL | 1 - Build/source/libs/gd/libgd-src/docs/NEWS.historic | 12 +- Build/source/libs/gd/libgd-src/docs/README.CMAKE | 4 + Build/source/libs/gd/libgd-src/docs/README.JPN | 53 +- Build/source/libs/gd/libgd-src/docs/README.TESTING | 15 +- Build/source/libs/gd/libgd-src/docs/README.TXT | 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 22444 -> 0 bytes .../docs/naturaldocs/html/images/emboss.jpg | Bin 20811 -> 0 bytes .../docs/naturaldocs/html/images/mean_removal.jpg | Bin 27366 -> 0 bytes .../docs/naturaldocs/html/images/smooth.jpg | Bin 15528 -> 0 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 - .../libs/gd/libgd-src/docs/naturaldocs/nobgd.pl | 1 - .../gd/libgd-src/docs/naturaldocs/preamble.txt | 8 +- .../naturaldocs/project/Data/ClassHierarchy.nd | Bin 7 -> 0 bytes .../naturaldocs/project/Data/ConfigFileInfo.nd | Bin 26 -> 0 bytes .../docs/naturaldocs/project/Data/FileInfo.nd | 95 -- .../docs/naturaldocs/project/Data/ImageFileInfo.nd | Bin 245 -> 0 bytes .../project/Data/ImageReferenceTable.nd | Bin 654 -> 0 bytes .../docs/naturaldocs/project/Data/IndexInfo.nd | Bin 222 -> 0 bytes .../naturaldocs/project/Data/PreviousMenuState.nd | Bin 2657 -> 0 bytes .../naturaldocs/project/Data/PreviousSettings.nd | Bin 96 -> 0 bytes .../docs/naturaldocs/project/Data/SymbolTable.nd | Bin 77342 -> 0 bytes .../docs/naturaldocs/project/Languages.txt | 113 -- .../gd/libgd-src/docs/naturaldocs/project/Menu.txt | 11 +- .../libgd-src/docs/naturaldocs/project/Topics.txt | 81 -- .../libs/gd/libgd-src/docs/naturaldocs/run_docs.sh | 2 - .../libs/gd/libgd-src/examples/CMakeLists.txt | 28 +- Build/source/libs/gd/libgd-src/examples/arc.c | 5 - .../libs/gd/libgd-src/examples/copyrotated.c | 5 +- Build/source/libs/gd/libgd-src/examples/crop.c | 11 - Build/source/libs/gd/libgd-src/examples/flip.c | 1 - Build/source/libs/gd/libgd-src/examples/gif.c | 2 +- Build/source/libs/gd/libgd-src/examples/nnquant.c | 11 - Build/source/libs/gd/libgd-src/examples/resize.c | 2 +- Build/source/libs/gd/libgd-src/examples/tgaread.c | 7 +- Build/source/libs/gd/libgd-src/examples/tiffread.c | 1 - Build/source/libs/gd/libgd-src/examples/windows.c | 1 - .../source/libs/gd/libgd-src/m4/ax_append_flag.m4 | 33 +- .../libs/gd/libgd-src/m4/ax_cflags_warn_all.m4 | 6 +- Build/source/libs/gd/libgd-src/m4/ax_pthread.m4 | 6 +- .../libs/gd/libgd-src/m4/ax_require_defined.m4 | 4 +- .../libs/gd/libgd-src/netware/Makefile.netware | 553 ------- Build/source/libs/gd/libgd-src/netware/get_exp.awk | 37 - Build/source/libs/gd/libgd-src/netware/get_ver.awk | 28 - .../source/libs/gd/libgd-src/netware/keepscreen.c | 27 - Build/source/libs/gd/libgd-src/netware/nwlibc.c | 290 ---- .../gd/libgd-src/netware/tests/Makefile.netware | 285 ---- Build/source/libs/gd/libgd-src/src/CMakeLists.txt | 42 +- Build/source/libs/gd/libgd-src/src/COPYING | 28 +- Build/source/libs/gd/libgd-src/src/Makefile.am | 17 +- Build/source/libs/gd/libgd-src/src/annotate.c | 46 +- Build/source/libs/gd/libgd-src/src/bdftogd | 15 +- Build/source/libs/gd/libgd-src/src/bmp.h | 11 +- .../source/libs/gd/libgd-src/src/circletexttest.c | 5 - Build/source/libs/gd/libgd-src/src/config.h.cmake | 21 +- Build/source/libs/gd/libgd-src/src/config.hin | 15 +- Build/source/libs/gd/libgd-src/src/entities.html | 26 +- .../source/libs/gd/libgd-src/src/fontconfigtest.c | 4 +- Build/source/libs/gd/libgd-src/src/fontsizetest.c | 13 - Build/source/libs/gd/libgd-src/src/fontwheeltest.c | 6 - Build/source/libs/gd/libgd-src/src/gd.c | 103 +- Build/source/libs/gd/libgd-src/src/gd.h | 94 +- Build/source/libs/gd/libgd-src/src/gd2copypal.c | 1 - Build/source/libs/gd/libgd-src/src/gd2togif.c | 1 - Build/source/libs/gd/libgd-src/src/gd2topng.c | 5 - Build/source/libs/gd/libgd-src/src/gd_bmp.c | 57 +- .../source/libs/gd/libgd-src/src/gd_color_match.c | 5 +- Build/source/libs/gd/libgd-src/src/gd_crop.c | 51 +- Build/source/libs/gd/libgd-src/src/gd_filename.c | 21 +- Build/source/libs/gd/libgd-src/src/gd_filter.c | 14 +- Build/source/libs/gd/libgd-src/src/gd_gd.c | 76 +- Build/source/libs/gd/libgd-src/src/gd_gd2.c | 45 +- Build/source/libs/gd/libgd-src/src/gd_gif_in.c | 24 +- Build/source/libs/gd/libgd-src/src/gd_gif_out.c | 54 +- Build/source/libs/gd/libgd-src/src/gd_intern.h | 4 - .../libs/gd/libgd-src/src/gd_interpolation.c | 139 +- Build/source/libs/gd/libgd-src/src/gd_io.c | 4 +- Build/source/libs/gd/libgd-src/src/gd_io.h | 22 +- Build/source/libs/gd/libgd-src/src/gd_io_dp.c | 2 +- .../source/libs/gd/libgd-src/src/gd_io_stream.cxx | 15 +- Build/source/libs/gd/libgd-src/src/gd_io_stream.h | 5 +- Build/source/libs/gd/libgd-src/src/gd_jpeg.c | 91 +- Build/source/libs/gd/libgd-src/src/gd_matrix.c | 5 +- Build/source/libs/gd/libgd-src/src/gd_nnquant.c | 2 +- Build/source/libs/gd/libgd-src/src/gd_nnquant.h | 3 - Build/source/libs/gd/libgd-src/src/gd_png.c | 67 +- Build/source/libs/gd/libgd-src/src/gd_tga.c | 3 +- Build/source/libs/gd/libgd-src/src/gd_tiff.c | 48 +- Build/source/libs/gd/libgd-src/src/gd_topal.c | 17 +- Build/source/libs/gd/libgd-src/src/gd_transform.c | 2 - Build/source/libs/gd/libgd-src/src/gd_wbmp.c | 23 +- Build/source/libs/gd/libgd-src/src/gd_webp.c | 58 +- Build/source/libs/gd/libgd-src/src/gd_xbm.c | 8 +- Build/source/libs/gd/libgd-src/src/gdcache.c | 15 +- Build/source/libs/gd/libgd-src/src/gdcache.h | 4 +- Build/source/libs/gd/libgd-src/src/gdcmpgif.c | 2 - Build/source/libs/gd/libgd-src/src/gddemo.c | 5 - Build/source/libs/gd/libgd-src/src/gdfontg.c | 2 - Build/source/libs/gd/libgd-src/src/gdfontl.c | 2 - Build/source/libs/gd/libgd-src/src/gdfontmb.c | 2 - Build/source/libs/gd/libgd-src/src/gdfontt.c | 2 - Build/source/libs/gd/libgd-src/src/gdft.c | 272 ++-- Build/source/libs/gd/libgd-src/src/gdfx.c | 1 - Build/source/libs/gd/libgd-src/src/gdfx.h | 11 +- Build/source/libs/gd/libgd-src/src/gdhelpers.c | 2 - Build/source/libs/gd/libgd-src/src/gdhelpers.h | 10 +- Build/source/libs/gd/libgd-src/src/gdkanji.c | 24 +- Build/source/libs/gd/libgd-src/src/gdparttopng.c | 5 - Build/source/libs/gd/libgd-src/src/gdpp.cxx | 85 +- Build/source/libs/gd/libgd-src/src/gdpp.h | 22 +- Build/source/libs/gd/libgd-src/src/gdtables.c | 1 - Build/source/libs/gd/libgd-src/src/gdtest.c | 10 +- Build/source/libs/gd/libgd-src/src/gdtestft.c | 14 +- Build/source/libs/gd/libgd-src/src/gdtopng.c | 5 - Build/source/libs/gd/libgd-src/src/getopt.c | 129 ++ Build/source/libs/gd/libgd-src/src/gifanimtest.c | 1 - Build/source/libs/gd/libgd-src/src/giftogd2.c | 1 - Build/source/libs/gd/libgd-src/src/jisx0208.h | 8 +- .../libs/gd/libgd-src/src/msinttypes/inttypes.h | 18 +- .../libs/gd/libgd-src/src/msinttypes/stdint.h | 18 +- Build/source/libs/gd/libgd-src/src/pngtogd.c | 4 - Build/source/libs/gd/libgd-src/src/pngtogd2.c | 6 - Build/source/libs/gd/libgd-src/src/snprintf.c | 25 + Build/source/libs/gd/libgd-src/src/testac.c | 9 - Build/source/libs/gd/libgd-src/src/testtr.c | 14 +- Build/source/libs/gd/libgd-src/src/wbmp.c | 3 +- Build/source/libs/gd/libgd-src/src/wbmp.h | 12 +- Build/source/libs/gd/libgd-src/src/webpng.c | 6 - .../source/libs/gd/libgd-src/tests/CMakeLists.txt | 15 +- Build/source/libs/gd/libgd-src/tests/Makefile.am | 14 + .../libs/gd/libgd-src/tests/bmp/CMakeLists.txt | 6 +- .../libs/gd/libgd-src/tests/bmp/Makemodule.am | 8 +- .../source/libs/gd/libgd-src/tests/bmp/bug00275.c | 4 +- .../source/libs/gd/libgd-src/tests/bmp/bug00276.c | 2 + .../libs/gd/libgd-src/tests/bmp/bug00450.bmp | Bin 0 -> 102 bytes .../source/libs/gd/libgd-src/tests/bmp/bug00450.c | 40 + .../libs/gd/libgd-src/tests/freetype/Makemodule.am | 2 +- .../libs/gd/libgd-src/tests/gd/CMakeLists.txt | 9 +- .../libs/gd/libgd-src/tests/gd/Makemodule.am | 8 +- Build/source/libs/gd/libgd-src/tests/gd/bug00383.c | 32 + .../source/libs/gd/libgd-src/tests/gd/bug00383.gd | Bin 0 -> 1101 bytes .../libs/gd/libgd-src/tests/gd2/CMakeLists.txt | 14 +- .../libs/gd/libgd-src/tests/gd2/Makemodule.am | 16 +- .../source/libs/gd/libgd-src/tests/gd2/bug00209.c | 18 +- .../source/libs/gd/libgd-src/tests/gd2/bug00354.c | 28 +- .../source/libs/gd/libgd-src/tests/gd2/bug00383.c | 32 + .../libs/gd/libgd-src/tests/gd2/bug00383.gd2 | Bin 0 -> 1113 bytes Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c | 2 + .../libgd-src/tests/gd2/createimagefromgd2part.c | 35 + .../tests/gd2/createimagefromgd2partptr.c | 59 + .../source/libs/gd/libgd-src/tests/gd2/gd2_read.c | 3 +- .../libs/gd/libgd-src/tests/gd2/php_bug_72339.c | 2 +- .../gd/libgd-src/tests/gdimagebrightness/basic.c | 36 +- .../gd/libgd-src/tests/gdimageclone/CMakeLists.txt | 1 + .../gd/libgd-src/tests/gdimageclone/Makemodule.am | 3 +- .../libs/gd/libgd-src/tests/gdimageclone/style.c | 30 + .../libs/gd/libgd-src/tests/gdimagecolor/basic.c | 26 +- .../tests/gdimagecolorclosest/CMakeLists.txt | 2 - .../tests/gdimagecolorclosest/Makemodule.am | 2 - .../tests/gdimagecolorclosesthwb/CMakeLists.txt | 7 + .../tests/gdimagecolorclosesthwb/Makemodule.am | 7 + .../gdImageColorClosestHWB.c | 26 + .../tests/gdimagecolorexact/CMakeLists.txt | 2 - .../tests/gdimagecolorexact/Makemodule.am | 2 - .../tests/gdimagecolormatch/CMakeLists.txt | 6 + .../tests/gdimagecolormatch/Makemodule.am | 6 + .../tests/gdimagecolormatch/cve_2019_6977.c | 25 + .../tests/gdimagecolormatch/gdimagecolormatch.c | 32 + .../tests/gdimagecolorreplace/CMakeLists.txt | 2 - .../tests/gdimagecolorreplace/Makemodule.am | 2 - .../gdimagecolorreplace/gdimagecolorreplace.c | 22 +- .../tests/gdimagecolorresolve/CMakeLists.txt | 2 - .../tests/gdimagecolorresolve/Makemodule.am | 2 - .../libgd-src/tests/gdimagecompare/CMakeLists.txt | 4 + .../libgd-src/tests/gdimagecompare/Makemodule.am | 5 + .../tests/gdimagecompare/gdimagecompare.c | 56 + .../gd/libgd-src/tests/gdimagecontrast/basic.c | 36 +- .../tests/gdimageconvolution/CMakeLists.txt | 2 + .../tests/gdimageconvolution/Makemodule.am | 3 + .../gd/libgd-src/tests/gdimageconvolution/basic.c | 47 +- .../libgd-src/tests/gdimageconvolution/bug00369.c | 28 + .../tests/gdimagecopymerge/CMakeLists.txt | 7 + .../libgd-src/tests/gdimagecopymerge/Makemodule.am | 8 + .../tests/gdimagecopymerge/gdimagecopymerge.c | 38 + .../gdimagecopymerge/gdimagecopymerge_exp.png | Bin 0 -> 124 bytes .../tests/gdimagecopymergegray/CMakeLists.txt | 7 + .../tests/gdimagecopymergegray/Makemodule.am | 8 + .../gdimagecopymergegray/gdimagecopymergegray.c | 38 + .../gdimagecopymergegray_exp.png | Bin 0 -> 124 bytes .../tests/gdimagecopyresampled/CMakeLists.txt | 4 +- .../tests/gdimagecopyresampled/Makemodule.am | 4 +- .../tests/gdimagecopyresampled/bug00201.c | 8 +- .../tests/gdimagecopyresized/CMakeLists.txt | 7 + .../tests/gdimagecopyresized/Makemodule.am | 8 + .../tests/gdimagecopyresized/gdimagecopyresized.c | 35 + .../gdimagecopyresized/gdimagecopyresized_exp.png | Bin 0 -> 129 bytes .../libgd-src/tests/gdimagecreate/CMakeLists.txt | 2 +- .../gd/libgd-src/tests/gdimagecreate/bug00340.c | 16 +- .../gd/libgd-src/tests/gdimagecrop/CMakeLists.txt | 6 +- .../gd/libgd-src/tests/gdimagecrop/Makemodule.am | 4 + .../libs/gd/libgd-src/tests/gdimagecrop/bug00432.c | 45 + .../gd/libgd-src/tests/gdimagecrop/bug00485_auto.c | 52 + .../tests/gdimagecrop/bug00485_threshold.c | 48 + .../libs/gd/libgd-src/tests/gdimagecrop/bug00486.c | 48 + .../libgd-src/tests/gdimageellipse/CMakeLists.txt | 7 + .../libgd-src/tests/gdimageellipse/Makemodule.am | 8 + .../gd/libgd-src/tests/gdimageellipse/bug00169.c | 22 + .../tests/gdimageellipse/bug00169_exp.png | Bin 0 -> 24802 bytes .../gd/libgd-src/tests/gdimagefile/Makemodule.am | 2 + .../gd/libgd-src/tests/gdimagefile/gdnametest.c | 236 ++- .../gd/libgd-src/tests/gdimagefill/bug00002_1.c | 1 - .../gd/libgd-src/tests/gdimagefill/bug00002_2.c | 1 - .../gd/libgd-src/tests/gdimagefill/bug00002_3.c | 1 - .../gd/libgd-src/tests/gdimagefill/bug00104_1.c | 10 +- .../tests/gdimagefilledarc/CMakeLists.txt | 1 + .../libgd-src/tests/gdimagefilledarc/Makemodule.am | 2 + .../gd/libgd-src/tests/gdimagefilledarc/bug00351.c | 30 + .../tests/gdimagefilledarc/bug00351_exp.png | Bin 0 -> 2652 bytes .../tests/gdimagefilledellipse/CMakeLists.txt | 1 + .../tests/gdimagefilledellipse/Makemodule.am | 2 + .../tests/gdimagefilledellipse/bug00169.c | 22 + .../tests/gdimagefilledellipse/bug00169_exp.png | Bin 0 -> 27696 bytes .../tests/gdimagefilledellipse/github_bug_00238.c | 2 +- .../tests/gdimagefilledpolygon/self_intersecting.c | 28 +- .../tests/gdimagefilledrectangle/bug00004.c | 1 - .../tests/gdimagefilledrectangle/bug00078.c | 1 - .../bug00106_gdimagefilledrectangle.c | 1 - .../tests/gdimagefilltoborder/CMakeLists.txt | 2 - .../tests/gdimagefilltoborder/Makemodule.am | 2 - .../libgd-src/tests/gdimagefilltoborder/bug00037.c | 1 - .../libgd-src/tests/gdimagefilter/gdCopyBlurred.c | 2 +- .../gd/libgd-src/tests/gdimageflip/gdimageflip.c | 33 +- .../gd/libgd-src/tests/gdimagegrayscale/basic.c | 26 +- .../gd/libgd-src/tests/gdimagegrayscale/bug00386.c | 2 + .../gd/libgd-src/tests/gdimageline/CMakeLists.txt | 3 +- .../gd/libgd-src/tests/gdimageline/Makemodule.am | 2 + .../libs/gd/libgd-src/tests/gdimageline/bug00315.c | 37 + .../libgd-src/tests/gdimageline/bug00315_exp.png | Bin 0 -> 120 bytes .../libs/gd/libgd-src/tests/gdimagenegate/basic.c | 26 +- .../tests/gdimagepixelate/gdimagepixelate.c | 38 +- .../tests/gdimagerectangle/github_bug_00172.c | 7 - .../tests/gdimagerectangle/point_ordering.c | 6 +- .../libgd-src/tests/gdimagerotate/CMakeLists.txt | 5 - .../gd/libgd-src/tests/gdimagerotate/Makemodule.am | 6 +- .../libgd-src/tests/gdimagerotate/php_bug_65070.c | 2 - .../tests/gdimagerotate/php_bug_65070_exp.png | Bin 32722 -> 32699 bytes .../gd/libgd-src/tests/gdimagescale/bug00329.c | 63 +- .../gd/libgd-src/tests/gdimagescale/bug00330.c | 26 +- .../gdimagescale/bug_overflow_large_new_size.c | 3 +- .../gdimagesetinterpolationmethod/CMakeLists.txt | 5 + .../gdimagesetinterpolationmethod/Makemodule.am | 5 + .../github_bug_00584.c | 31 + .../tests/gdimagesetpixel/alpha_blending.c | 86 +- .../tests/gdimagesquaretocircle/CMakeLists.txt | 7 + .../tests/gdimagesquaretocircle/Makemodule.am | 6 + .../gdimagesquaretocircle/gdimagesquaretocircle.c | 32 + .../gdimagesquaretocircle_exp.png | Bin 0 -> 1414 bytes .../libgd-src/tests/gdimagestring/CMakeLists.txt | 7 + .../gd/libgd-src/tests/gdimagestring/Makemodule.am | 8 + .../libgd-src/tests/gdimagestring/gdimagestring.c | 34 + .../tests/gdimagestring/gdimagestring_exp.png | Bin 0 -> 179 bytes .../libgd-src/tests/gdimagestring16/CMakeLists.txt | 7 + .../libgd-src/tests/gdimagestring16/Makemodule.am | 8 + .../tests/gdimagestring16/gdimagestring16.c | 32 + .../tests/gdimagestring16/gdimagestring16_exp.png | Bin 0 -> 118 bytes .../libgd-src/tests/gdimagestringft/CMakeLists.txt | 4 +- .../libgd-src/tests/gdimagestringft/Makemodule.am | 2 - .../tests/gdimagestringft/gdimagestringft_bbox.c | 32 +- .../libgd-src/tests/gdimagestringup/CMakeLists.txt | 7 + .../libgd-src/tests/gdimagestringup/Makemodule.am | 8 + .../tests/gdimagestringup/gdimagestringup.c | 34 + .../tests/gdimagestringup/gdimagestringup_exp.png | Bin 0 -> 180 bytes .../tests/gdimagestringup16/CMakeLists.txt | 7 + .../tests/gdimagestringup16/Makemodule.am | 8 + .../tests/gdimagestringup16/gdimagestringup16.c | 31 + .../gdimagestringup16/gdimagestringup16_exp.png | Bin 0 -> 117 bytes .../tests/gdimagetruecolortopalette/CMakeLists.txt | 2 +- .../tests/gdimagetruecolortopalette/bug00307.c | 2 +- .../tests/gdinterpolatedscale/CMakeLists.txt | 3 + .../source/libs/gd/libgd-src/tests/gdtest/gdtest.c | 39 +- .../source/libs/gd/libgd-src/tests/gdtest/gdtest.h | 3 - .../libs/gd/libgd-src/tests/gdtiled/bug00032.c | 1 - .../github_bug_00221.c | 4 +- .../tests/gdtransformaffinecopy/CMakeLists.txt | 8 + .../tests/gdtransformaffinecopy/Makemodule.am | 8 + .../tests/gdtransformaffinecopy/github_bug_00583.c | 30 + .../tests/gdtransformaffinecopy/github_bug_00585.c | 33 + .../tests/gdtransformaffinecopy/github_bug_00586.c | 26 + .../tests/gdtransformaffinecopy/github_bug_00596.c | 42 + .../libs/gd/libgd-src/tests/gif/CMakeLists.txt | 11 +- .../libs/gd/libgd-src/tests/gif/Makemodule.am | 15 +- .../source/libs/gd/libgd-src/tests/gif/bug00006.c | 1 + .../source/libs/gd/libgd-src/tests/gif/bug00181.c | 1 + .../source/libs/gd/libgd-src/tests/gif/bug00227.c | 2 + .../source/libs/gd/libgd-src/tests/gif/bug00499.c | 51 + .../libs/gd/libgd-src/tests/gif/ossfuzz5700.c | 13 + .../libs/gd/libgd-src/tests/gif/ossfuzz5700.gif | Bin 0 -> 30 bytes .../libs/gd/libgd-src/tests/gif/php_bug_75571.c | 28 + .../libs/gd/libgd-src/tests/gif/php_bug_75571.gif | Bin 0 -> 1731 bytes .../libs/gd/libgd-src/tests/jpeg/CMakeLists.txt | 3 +- .../libs/gd/libgd-src/tests/jpeg/Makemodule.am | 7 +- .../source/libs/gd/libgd-src/tests/jpeg/bug00338.c | 35 +- .../gd/libgd-src/tests/jpeg/jpeg_ptr_double_free.c | 31 + .../libs/gd/libgd-src/tests/png/CMakeLists.txt | 5 + .../libs/gd/libgd-src/tests/png/Makemodule.am | 6 +- .../source/libs/gd/libgd-src/tests/png/bug00338.c | 32 +- .../libs/gd/libgd-src/tests/png/png_resolution.c | 2 +- .../libs/gd/libgd-src/tests/tiff/CMakeLists.txt | 5 + .../libs/gd/libgd-src/tests/tiff/Makemodule.am | 6 +- .../source/libs/gd/libgd-src/tests/tiff/tiff_dpi.c | 4 +- .../libs/gd/libgd-src/tests/tiff/tiff_read_bw.c | 29 +- .../libs/gd/libgd-src/tests/wbmp/CMakeLists.txt | 5 - .../libs/gd/libgd-src/tests/wbmp/Makemodule.am | 6 +- .../libs/gd/libgd-src/tests/webp/CMakeLists.txt | 1 + .../libs/gd/libgd-src/tests/webp/Makemodule.am | 3 +- .../libs/gd/libgd-src/tests/webp/gdImageWebpEx.c | 26 + .../libs/gd/libgd-src/tests/xbm/CMakeLists.txt | 6 +- .../libs/gd/libgd-src/tests/xbm/Makemodule.am | 8 +- .../libs/gd/libgd-src/tests/xbm/github_bug_109.c | 30 +- .../libs/gd/libgd-src/tests/xbm/github_bug_170.c | 2 +- .../libs/gd/libgd-src/tests/xbm/github_bug_501.c | 39 + .../libs/gd/libgd-src/tests/xbm/github_bug_501.xbm | 4 + .../libs/gd/libgd-src/tests/xbm/x10_basic_read.c | 26 +- Build/source/libs/gd/libgd-src/windows/Makefile.vc | 6 +- .../libs/gd/libgd-src/windows/Makefiletest.vc | 117 ++ Build/source/libs/gd/libgd-src/windows/gentest.bat | 70 +- Build/source/libs/gd/libgd-src/windows/libgd.rc | 4 +- .../source/libs/gd/libgd-src/windows/msys/Makefile | 18 +- .../libs/gd/libgd-src/windows/msys/README.MSYS.md | 13 +- .../libs/gd/libgd-src/windows/msys/run_tests.sh | 11 +- Build/source/libs/gd/libgd-src/windows/readme.md | 106 +- .../source/libs/gd/libgd-src/windows/run_tests.bat | 86 +- Build/source/libs/gd/version.ac | 2 +- 465 files changed, 4530 insertions(+), 11453 deletions(-) create mode 100644 Build/source/libs/gd/libgd-src/CONTRIBUTING.md delete mode 100644 Build/source/libs/gd/libgd-src/cmake/modules/CMakeParseArguments.cmake delete mode 100644 Build/source/libs/gd/libgd-src/cmake/modules/FindFreetype.cmake delete mode 100644 Build/source/libs/gd/libgd-src/cmake/modules/FindJPEG.cmake delete mode 100644 Build/source/libs/gd/libgd-src/cmake/modules/FindPNG.cmake delete mode 100644 Build/source/libs/gd/libgd-src/cmake/modules/FindPackageHandleStandardArgs.cmake create mode 100644 Build/source/libs/gd/libgd-src/cmake/modules/FindRAQM.cmake delete mode 100644 Build/source/libs/gd/libgd-src/config/gdlib-config.in create mode 100644 Build/source/libs/gd/libgd-src/config/gdlib.pc.cmake delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-h.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_bmp-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_map-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_match-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_crop-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filename-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filter-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd2-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_in-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_out-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_interpolation-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io-h.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_dp-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_file-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_ss-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_jpeg-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_matrix-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_nnquant-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_png-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_ss-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tga-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tiff-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_topal-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_transform-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_version-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_wbmp-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_webp-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_xbm-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontg-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontl-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontmb-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfonts-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontt-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdft-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfx-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdhelpers-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdxpm-c.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/license-txt.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/preamble-txt.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/edge_detect_quick.jpg delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/emboss.jpg delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/mean_removal.jpg delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/smooth.jpg delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Constants.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Files.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Functions.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General2.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General3.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Macros.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Types.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/main.js delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/prettify.js delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/searchdata.js delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsG.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsS.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesB.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesC.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesF.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesG.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesI.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesJ.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesL.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesM.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesP.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesS.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesT.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesW.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesX.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FunctionsG.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralA.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralB.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralC.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralE.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralF.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralG.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralI.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralJ.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralL.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralM.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralNumbers.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralO.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralP.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralS.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralT.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralW.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralX.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/MacrosG.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/NoResults.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/TypesG.html delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/1.css delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/2.css delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/main.css delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ClassHierarchy.nd delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ConfigFileInfo.nd delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/FileInfo.nd delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageFileInfo.nd delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageReferenceTable.nd delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/IndexInfo.nd delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousMenuState.nd delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousSettings.nd delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/SymbolTable.nd delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Languages.txt delete mode 100644 Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Topics.txt delete mode 100644 Build/source/libs/gd/libgd-src/netware/Makefile.netware delete mode 100644 Build/source/libs/gd/libgd-src/netware/get_exp.awk delete mode 100644 Build/source/libs/gd/libgd-src/netware/get_ver.awk delete mode 100644 Build/source/libs/gd/libgd-src/netware/keepscreen.c delete mode 100644 Build/source/libs/gd/libgd-src/netware/nwlibc.c delete mode 100644 Build/source/libs/gd/libgd-src/netware/tests/Makefile.netware create mode 100644 Build/source/libs/gd/libgd-src/src/getopt.c create mode 100644 Build/source/libs/gd/libgd-src/src/snprintf.c create mode 100644 Build/source/libs/gd/libgd-src/tests/bmp/bug00450.bmp create mode 100644 Build/source/libs/gd/libgd-src/tests/bmp/bug00450.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gd/bug00383.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gd/bug00383.gd create mode 100644 Build/source/libs/gd/libgd-src/tests/gd2/bug00383.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gd2/bug00383.gd2 create mode 100644 Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2part.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2partptr.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimageclone/style.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/gdImageColorClosestHWB.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/cve_2019_6977.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/gdimagecolormatch.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecompare/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecompare/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecompare/gdimagecompare.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00432.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_auto.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_threshold.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00486.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimageellipse/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimageellipse/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/github_bug_00584.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestring/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestring/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestring16/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestring16/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestringup/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestringup/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestringup16/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestringup16/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16_exp.png create mode 100644 Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/CMakeLists.txt create mode 100644 Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/Makemodule.am create mode 100644 Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00583.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00585.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00586.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00596.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gif/bug00499.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.gif create mode 100644 Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.c create mode 100644 Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.gif create mode 100644 Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_ptr_double_free.c create mode 100644 Build/source/libs/gd/libgd-src/tests/webp/gdImageWebpEx.c create mode 100644 Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.c create mode 100644 Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.xbm create mode 100644 Build/source/libs/gd/libgd-src/windows/Makefiletest.vc (limited to 'Build/source') diff --git a/Build/source/libs/README b/Build/source/libs/README index ccb2dba4de8..4c95e0ea6ac 100644 --- a/Build/source/libs/README +++ b/Build/source/libs/README @@ -15,7 +15,7 @@ cairo 1.16.0 - checked 20oct18 freetype2 2.10.1 - checked 02jul19 http://savannah.nongnu.org/download/freetype/ -gd 2.2.5 - checked 30aug17 +gd 2.3.0 - checked 10apr20 https://github.com/libgd/libgd/releases gmp 6.2.0 - checked 20jan20 diff --git a/Build/source/libs/gd/ChangeLog b/Build/source/libs/gd/ChangeLog index 24b8ba21d6d..b7bdd68c5cc 100644 --- a/Build/source/libs/gd/ChangeLog +++ b/Build/source/libs/gd/ChangeLog @@ -1,3 +1,8 @@ +2020-04-10 Akira Kakuto + + Import libgd-2.3.0. + * version.ac: Adapted. + 2017-08-30 Akira Kakuto Import libgd-2.2.5. diff --git a/Build/source/libs/gd/README b/Build/source/libs/gd/README index 9bd12699112..9fcde4a09c2 100644 --- a/Build/source/libs/gd/README +++ b/Build/source/libs/gd/README @@ -1,4 +1,4 @@ - Building libgd-2.2.5 as part of the TL tree + Building libgd-2.3.0 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-08-30 Akira Kakuto +2020-04-10 Akira Kakuto diff --git a/Build/source/libs/gd/TLpatches/ChangeLog b/Build/source/libs/gd/TLpatches/ChangeLog index 31121f5ca1f..b4e56063fcc 100644 --- a/Build/source/libs/gd/TLpatches/ChangeLog +++ b/Build/source/libs/gd/TLpatches/ChangeLog @@ -1,3 +1,10 @@ +2020-04-10 Akira Kakuto + + Import libgd-2.3.0 source tree from: + https://github.com/libgd/libgd/releases + * patch-01-win32: Adapted. + * patch-02-no-stdcall: Adapted. + 2017-08-30 Akira Kakuto Import libgd-2.2.5 source tree from: diff --git a/Build/source/libs/gd/TLpatches/TL-Changes b/Build/source/libs/gd/TLpatches/TL-Changes index 921ec63987b..a2332a72bba 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.5/ tree as obtained from: +Changes applied to the libgd-2.3.0/ 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 1f20e4d53ae..1a9a0788576 100644 --- a/Build/source/libs/gd/TLpatches/patch-01-win32 +++ b/Build/source/libs/gd/TLpatches/patch-01-win32 @@ -1,17 +1,65 @@ -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 @@ +diff -ur libgd-2.3.0/src/gd_interpolation.c libgd-src/src/gd_interpolation.c +--- libgd-2.3.0/src/gd_interpolation.c Sun Mar 22 22:42:38 2020 ++++ libgd-src/src/gd_interpolation.c Mon Mar 30 07:00:26 2020 +@@ -1988,19 +1988,19 @@ + static int getPixelRgbInterpolated(gdImagePtr im, const int tcolor) + { + unsigned char r, g, b, a; +- int ct; ++ int ct, i; + + b = (unsigned char)tcolor; +- g = (unsigned char)tcolor >> 8; +- r = (unsigned char)tcolor >> 16; +- a = (unsigned char)tcolor >> 24; ++ g = (unsigned char)(tcolor >> 8); ++ r = (unsigned char)(tcolor >> 16); ++ a = (unsigned char)(tcolor >> 24); + + b = CLAMP(b, 0, 255); + g = CLAMP(g, 0, 255); + r = CLAMP(r, 0, 255); + a = CLAMP(a, 0, 127); + +- for (int i = 0; i < im->colorsTotal; i++) { ++ for (i = 0; i < im->colorsTotal; i++) { + if (im->red[i] == r && im->green[i] == g && im->blue[i] == b && im->alpha[i] == a) { + return i; + } +diff -ur libgd-2.3.0/src/gdft.c libgd-src/src/gdft.c +--- libgd-2.3.0/src/gdft.c Sun Mar 22 22:42:38 2020 ++++ libgd-src/src/gdft.c Mon Mar 30 07:01:24 2020 +@@ -1519,6 +1519,8 @@ + } + + if (render) { ++ FT_Pos pen_x; ++ FT_Pos pen_y; + FT_Activate_Size (platform_specific); + + /* load glyph again into the slot (erase previous one) - this time with scaling */ +@@ -1552,8 +1554,8 @@ + bm = (FT_BitmapGlyph) image; + /* position rounded down to nearest pixel at current dpi + (the estimate was rounded up to next 1/METRIC_RES, so this should fit) */ +- FT_Pos pen_x = penf.x + info[i].x_offset; +- FT_Pos pen_y = penf.y - info[i].y_offset; ++ pen_x = penf.x + info[i].x_offset; ++ pen_y = penf.y - info[i].y_offset; + gdft_draw_bitmap (tc_cache, im, fg, bm->bitmap, + (int)(x + (pen_x * cos_a + pen_y * sin_a)*hdpi/(METRIC_RES*64) + bm->left), + (int)(y - (pen_x * sin_a - pen_y * cos_a)*vdpi/(METRIC_RES*64) - bm->top)); +@@ -1787,6 +1789,16 @@ */ *fontpath = NULL; fontsearchpath = getenv ("GDFONTPATH"); +#ifdef _WIN32 + if (!fontsearchpath) { -+ char *ffptr = getenv ("SYSTEMROOT"); ++ char *ffptr = getenv ("WINDIR"); + if (ffptr) { -+ fontsearchpath = malloc (strlen(ffptr) + strlen("\\fonts") + 1); ++ fontsearchpath = malloc (strlen(ffptr) + strlen("\\Fonts") + 1); + strcpy(fontsearchpath, ffptr); -+ strcat(fontsearchpath, "\\fonts"); ++ strcat(fontsearchpath, "\\Fonts"); + } + } +#endif diff --git a/Build/source/libs/gd/TLpatches/patch-02-no-stdcall b/Build/source/libs/gd/TLpatches/patch-02-no-stdcall index e3d283599bb..329990d1a60 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.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 +diff -ur libgd-2.3.0/src/gd.h libgd-src/src/gd.h +--- libgd-2.3.0/src/gd.h Sun Mar 22 22:42:41 2020 ++++ libgd-src/src/gd.h Mon Mar 30 07:02:16 2020 @@ -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 0d2268d6235..60b7dc408ad 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.5. +# Generated by GNU Autoconf 2.69 for gd (TeX Live) 2.3.0. # # 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.5' -PACKAGE_STRING='gd (TeX Live) 2.2.5' +PACKAGE_VERSION='2.3.0' +PACKAGE_STRING='gd (TeX Live) 2.3.0' 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.5 to adapt to many kinds of systems. +\`configure' configures gd (TeX Live) 2.3.0 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.5:";; + short | recursive ) echo "Configuration of gd (TeX Live) 2.3.0:";; 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.5 +gd (TeX Live) configure 2.3.0 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.5, which was +It was created by gd (TeX Live) $as_me 2.3.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3832,7 +3832,7 @@ fi # Define the identity of the package. PACKAGE='gd--tex-live-' - VERSION='2.2.5' + VERSION='2.3.0' cat >>confdefs.h <<_ACEOF @@ -6671,7 +6671,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.5, which was +This file was extended by gd (TeX Live) $as_me 2.3.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -6737,7 +6737,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.5 +gd (TeX Live) config.status 2.3.0 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 index aa31ecd1250..32396d097aa 100644 --- a/Build/source/libs/gd/libgd-src/CHANGELOG.md +++ b/Build/source/libs/gd/libgd-src/CHANGELOG.md @@ -4,6 +4,57 @@ 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.3.0] - 2020-03-22 + +### Security + +- Potential double-free in gdImage*Ptr(). (CVE-2019-6978) +- gdImageColorMatch() out of bounds write on heap. (CVE-2019-6977) +- Uninitialized read in gdImageCreateFromXbm(). (CVE-2019-11038) +- Double-free in gdImageBmp. (CVE-2018-1000222) +- Potential NULL pointer dereference in gdImageClone(). (CVE-2018-14553) +- Potential infinite loop in gdImageCreateFromGifCtx(). (CVE-2018-5711) + +### Fixed + +* Fix #597: add codecov support + +- Fix #596: gdTransformAffineCopy run error + +- Fix #589: Install dependencies move to .travis.yml + +- Fix #586: gdTransformAffineCopy() segfaults on palette images +- Fix #585: gdTransformAffineCopy() changes interpolation method +- Fix #584: gdImageSetInterpolationMethod(im, GD_DEFAULT) inconsistent +- Fix #583: gdTransformAffineCopy() may use unitialized values +- Fix #533: Remove cmake modules +- Fix #539: Add RAQM support for cmake +- Fix #499: gdImageGifAnimAddPtr: heap corruption with 2 identical images +- Fix #486: gdImageCropAuto(…, GD_CROP_SIDES) crops left but not right +- Fix #485: auto cropping has insufficient precision +- Fix #479: Provide a suitable malloc function to liq +- Fix #474: libtiff link returns 404 HTTP code +- Fix #450: Failed to open 1 bit per pixel bitmap +- Fix #440: new_width & new_height exception handling +- Fix #432: gdImageCrop neglecting transparency +- Fix #420: Potential infinite loop in gdImageCreateFromGifCtx +- Fix #411: gd_gd.c format documentation appears to be incorrect +- Fix #369: Fix new_a init error in gdImageConvolution() +- Fix #351: gdImageFilledArc() doesn't properly draw pies +- Fix #338: Fatal and normal libjpeg/libpng errors not distinguishable +- Fix #169: Update var type to hold bigger w&h for ellipse +- Fix #164: update doc files install directory in CMakeLists.txt +- Correct some test depend errors +- Update cmake min version to 3.7 +- Delete libimagequant source code download action in CMakeLists.txt +- Improve msys support +- Fix some logic error in CMakeLists.txt +- Remove the following macro: HAVE_STDLIB_H, HAVE_STRING_H, HAVE_STDDEF_H, HAVE_LIMITS_H, HAVE_ERRNO_H, AC_C_CONST + +### Added + +- test cases for following API: gdImageCopyResized(), gdImageWebpEx(), gdImageCreateFromGd2PartPtr(), gdImageCloneMatch(), gdImageColorClosestHWB(), gdImageColorMatch(), gdImageStringUp(), gdImageStringUp16(), gdImageString(), gdImageString16(), gdImageCopyMergeGray(), gdImageCopyMerge() + ## [2.2.5] - 2017-08-30 ### Security diff --git a/Build/source/libs/gd/libgd-src/CMakeLists.txt b/Build/source/libs/gd/libgd-src/CMakeLists.txt index 8c99816d893..fc76868a940 100644 --- a/Build/source/libs/gd/libgd-src/CMakeLists.txt +++ b/Build/source/libs/gd/libgd-src/CMakeLists.txt @@ -1,16 +1,15 @@ -# $Id$ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR) +CMAKE_MINIMUM_REQUIRED(VERSION 3.7 FATAL_ERROR) SET(PACKAGE GD) SET(PACKAGE_NAME GD) -CMAKE_POLICY(SET CMP0017 OLD) PROJECT(GD) SET(CMAKE_MODULE_PATH "${GD_SOURCE_DIR}/cmake/modules") include(gd) +OPTION(ENABLE_GD_FORMATS "Enable GD image formats" 0) OPTION(ENABLE_PNG "Enable PNG support" 0) OPTION(ENABLE_LIQ "Enable libimagequant support" 0) OPTION(ENABLE_JPEG "Enable JPEG support" 0) @@ -20,6 +19,7 @@ OPTION(ENABLE_XPM "Enable XPM support" 0) OPTION(ENABLE_FREETYPE "Enable Freetype2 support" 0) OPTION(ENABLE_FONTCONFIG "Enable FontConfig support" 0) OPTION(ENABLE_WEBP "Enable WebP support" 0) +OPTION(ENABLE_RAQM "Enable RAQM support" 0) if (BUILD_TEST) ENABLE_TESTING() @@ -31,24 +31,24 @@ endif(BUILD_TEST) IF(CMAKE_COMPILER_IS_GNUCC) SET(CMAKE_C_FLAGS_DEBUG "-g -Wall -Wextra -O0") # will be added to CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug" ENDIF(CMAKE_COMPILER_IS_GNUCC) -SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/Bin - CACHE PATH - "Single Directory for all Libraries" +SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/Bin + CACHE PATH + "Single Directory for all Libraries" ) -# --------- Setup the Executable output Directory ------------- -SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/Bin - CACHE PATH - "Single Directory for all Executables." +# --------- Setup the Executable output Directory ------------- +SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/Bin + CACHE PATH + "Single Directory for all Executables." ) -# --------- Setup the Executable output Directory ------------- -SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY - ${PROJECT_BINARY_DIR}/Bin - CACHE PATH - "Single Directory for all static libraries." +# --------- Setup the Executable output Directory ------------- +SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY + ${PROJECT_BINARY_DIR}/Bin + CACHE PATH + "Single Directory for all static libraries." ) if (USE_EXT_GD) @@ -69,14 +69,30 @@ if (USE_EXT_GD) endif (GD_FOUND) else (USE_EXT_GD) - SET(GD_VERSION_MAJOR "2") - SET(GD_VERSION_MINOR "2") - 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 "2020555") + MACRO(GV VER VAR) + execute_process( + COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/config/getver.pl ${VER} + OUTPUT_VARIABLE ${VAR} + ) + ENDMACRO(GV) + + GV(MAJOR GDLIB_MAJOR) + GV(MINOR GDLIB_MINOR) + GV(RELEASE GDLIB_REVISION) + GV(EXTRA GDLIB_EXTRA) + SET(GDLIB_VERSION "${GDLIB_MAJOR}.${GDLIB_MINOR}.${GDLIB_REVISION}${GDLIB_EXTRA}") + MESSAGE(STATUS "gd version ${GDLIB_VERSION}") + + MACRO(GV_LT VER VAR) + execute_process( + COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/config/getlib.sh ${VER} + OUTPUT_VARIABLE ${VAR} + ) + ENDMACRO(GV_LT) + + GV_LT(SONAME GDLIB_LIB_SOVERSION) + GV_LT(VERSION GDLIB_LIB_VERSION) + MESSAGE(STATUS "gd shared lib version ${GDLIB_LIB_SOVERSION} (${GDLIB_LIB_VERSION})") SET(CMAKE_REQUIRED_INCLUDES "/usr/include" "/usr/local/include") @@ -89,7 +105,7 @@ else (USE_EXT_GD) if (ENABLE_PNG) FIND_PACKAGE(PNG REQUIRED) endif (ENABLE_PNG) - + if (ENABLE_ICONV) FIND_PACKAGE(ICONV REQUIRED) endif (ENABLE_ICONV) @@ -128,6 +144,12 @@ else (USE_EXT_GD) FIND_PACKAGE(FontConfig) endif (ENABLE_FONTCONFIG) + if (ENABLE_RAQM) + FIND_PACKAGE(RAQM) + endif (ENABLE_RAQM) + + SET(ENABLE_GD_FORMATS ${ENABLE_GD_FORMATS}) + if (FREETYPE_FOUND) INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS}) SET(HAVE_FT2BUILD_H 1) @@ -148,7 +170,7 @@ else (USE_EXT_GD) INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR}) SET(HAVE_LIBPNG 1) ENDIF(PNG_FOUND) - + IF(ICONV_FOUND) INCLUDE_DIRECTORIES(${ICONV_INCLUDE_DIR}) SET(HAVE_ICONV 1) @@ -184,6 +206,10 @@ else (USE_EXT_GD) SET(FONTCONFIG_LIB_DIR "") ENDIF(FONTCONFIG_FOUND) + IF(RAQM_FOUND) + INCLUDE_DIRECTORIES(${RAQM_INCLUDE_DIR}) + ENDIF(RAQM_FOUND) + SET(HAVE_CONFIG_H 1) ADD_DEFINITIONS(-DHAVE_CONFIG_H) @@ -230,10 +256,10 @@ add_custom_target(distclean ${GD_SOURCE_DIR}/cmake/distclean.sh) SET(CPACK_PACKAGE_NAME "libgd") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "libGD, powerful and easy to use graphic library") -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 "5") +SET(CPACK_PACKAGE_VENDOR "https://www.libgd.org") +SET(CPACK_PACKAGE_VERSION_MAJOR ${GDLIB_MAJOR}) +SET(CPACK_PACKAGE_VERSION_MINOR ${GDLIB_MINOR}) +SET(CPACK_PACKAGE_VERSION_PATCH ${GDLIB_REVISION}${GDLIB_EXTRA}) if(WIN32) set(CPACK_GENERATOR ZIP) @@ -241,33 +267,28 @@ else(WIN32) set(CPACK_GENERATOR TGZ) endif(WIN32) -IF (ENABLE_LIQ AND LIQ_BUILD) - ADD_DEPENDENCIES(${GD_LIB} libimagequant) - ADD_DEPENDENCIES(${GD_LIB_STATIC} libimagequant) -ENDIF(ENABLE_LIQ AND LIQ_BUILD) +INSTALL(FILES docs/INSTALL DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES docs/README.JPN DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES docs/README.CMAKE DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES docs/README.TESTING DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES docs/README.TXT DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) -INSTALL(FILES docs/INSTALL DESTINATION share/docs) -INSTALL(FILES docs/README.JPN DESTINATION share/docs) -INSTALL(FILES docs/README.CMAKE DESTINATION share/docs) -INSTALL(FILES docs/README.TESTING DESTINATION share/docs) -INSTALL(FILES docs/README.TXT DESTINATION share/docs) - -INSTALL(FILES examples/arc.c DESTINATION share/docs) -INSTALL(FILES examples/copyrotated.c DESTINATION share/docs) -INSTALL(FILES examples/crop.c DESTINATION share/docs) -INSTALL(FILES examples/flip.c DESTINATION share/docs) -INSTALL(FILES examples/gif.c DESTINATION share/docs) -INSTALL(FILES examples/nnquant.c DESTINATION share/docs) -INSTALL(FILES examples/noIcon.pic DESTINATION share/docs) -INSTALL(FILES examples/noIcon.sgi DESTINATION share/docs) -INSTALL(FILES examples/noIcon.tga DESTINATION share/docs) -INSTALL(FILES examples/noIconAlpha.tga DESTINATION share/docs) -INSTALL(FILES examples/test_crop_threshold.png DESTINATION share/docs) -INSTALL(FILES examples/tgaread.c DESTINATION share/docs) -INSTALL(FILES examples/tiffread.c DESTINATION share/docs) -INSTALL(FILES examples/windows.c DESTINATION share/docs) +INSTALL(FILES examples/arc.c DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/copyrotated.c DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/crop.c DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/flip.c DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/gif.c DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/nnquant.c DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/noIcon.pic DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/noIcon.sgi DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/noIcon.tga DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/noIconAlpha.tga DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/test_crop_threshold.png DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/tgaread.c DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/tiffread.c DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) +INSTALL(FILES examples/windows.c DESTINATION share/doc/gd-${GDLIB_MAJOR}.${GDLIB_MINOR}) set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING") @@ -283,4 +304,3 @@ set(CPACK_SOURCE_IGNORE_FILES ) install(FILES ${top_level_DOCFILES} DESTINATION ${DOC_DIR}) INCLUDE(CPack) - diff --git a/Build/source/libs/gd/libgd-src/CONTRIBUTING.md b/Build/source/libs/gd/libgd-src/CONTRIBUTING.md new file mode 100644 index 00000000000..ca95eb4e1c0 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/CONTRIBUTING.md @@ -0,0 +1,138 @@ +# Contributing to libgd + +:+1::tada: First off, thanks for taking the time to contribute! :tada::+1: + +#### Table Of Contents + +[What should I know before I get started?](#what-should-i-know-before-i-get-started) + * [Code of Conduct](#code-of-conduct) + * [Repositories](#Repositories) + +[How Can I Contribute?](#how-can-i-contribute) + * [Reporting Bugs](#reporting-bugs) + * [Suggesting Enhancements](#suggesting-enhancements) + * [Your First Code Contribution](#your-first-code-contribution) + * [Pull Requests](#pull-requests) + +[Styleguides](#styleguides) + * [Git Commit Messages](#git-commit-messages) + * [Coding standard](#coding-standard) + * [Documentation Styleguide](#documentation-styleguide) + +## What should I know before I get started? + +### Code of Conduct + +This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDUCT.md). +By participating, you are expected to uphold this code. +Please report unacceptable behavior to [security@libg.org](mailto:security@libgd.org). + +### Repositories + +* [The main libGD repository](https://github.com/libgd/libgd) for the library and utilities released as part of libgd +* [The libgd website repository](https://github.com/libgd/website) for the libgd.org website +* [The Pango support for libgd repository](https://github.com/libgd/gd-pango) for the for libGD Pango support + + +## How Can I Contribute? + +### Reporting Bugs + +This section guides you through submitting a bug report for Atom. Following these guidelines helps maintainers and the community understand your report :pencil:, reproduce the behavior :computer: :computer:, and find related reports :mag_right:. + +Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). If you'd like, you can use [this template](#template-for-submitting-bug-reports) to structure the information. + +#### Before Submitting A Bug Report + +* **Determine [which repository the problem should be reported in](#atom-and-packages)**. +* **Perform a [cursory search](https://github.com/issues?q=+is%3Aissue+user%3Alibgd)** to see if the problem has already been reported. If it has, add a comment to the existing issue instead of opening a new one. + +#### How Do I Submit A (Good) Bug Report? + +For security related bugs, github does not support private issues, that's why we have to handle security issues outside the issues tracker for now. Please drop a mail to [security@libg.org](mailto:security@libgd.org). + +Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined [which repository](#repositories) your bug is related to, create an issue on that repository and provide the following information. + +Explain the problem and include additional details to help maintainers reproduce the problem: + +* **Use a clear and descriptive title** for the issue to identify the problem. +* **Describe the exact steps which reproduce the problem** in as many details as possible. +* **Provide specific examples to demonstrate the steps**. Include links to files or GitHub projects, or copy/pasteable workable example (for example see [this simple test case](https://github.com/libgd/libgd/blob/master/tests/gd/gd_null.c), which you use in those examples. If you're providing snippets in the issue, use [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines). +* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior. +* **Explain which behavior you expected to see instead and why.** +* **Include images, expected and result images** which show you following the described steps and clearly demonstrate the problem. +* **If you're reporting that libGD crashed**, include a crash report with a stack trace from the operating system. Include the crash report in the issue in a [code block](https://help.github.com/articles/markdown-basics/#multiple-lines), a [file attachment](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests/), or put it in a [gist](https://gist.github.com/) and provide link to that gist. + + +This text has been largely inspired by the Atom contributing notes, which are amazingly complete. + + +## Styleguides + +These sections tend to bore people. But if you don't follow them, it slows +down reviews from developers (and tends to tire/annoy them). Please give it +a look over and feel free to ask questions. + +### Git Commit Messages + +Rather than duplicate a ton of great explanations, please read this site: +http://chris.beams.io/posts/git-commit/ + +Yes, it's long, but once you read and understand it once, it applies to +every git project out there, not just GD. + +In case that site is broken, here is an archived link: +http://web.archive.org/web/20160706012209/http://chris.beams.io/posts/git-commit/ + +### Coding standard + +#### Style + +First, coding style should be consistent. If you're modifying a file that +might not follow this section, stick with that file's style. If we want to +fix the style later, we can. + +As for the rest, TBD! + +#### Practices + +Check for invalid settings (where reasonable) and return an error directly. +Do not use `assert` and do not require the user to follow the documented API. +e.g. Check for `NULL` pointers, and check enum values are within range. The +GD library is used in a lot of hostile environments (like websites) and is +given hostile (user controlled) data. When GD mishandles memory, that can be +used to attack servers. When GD crashes (or calls `assert`), that can take +out a web session. + +#### Testing + +We love unit tests. Every bugfix, new API, etc... should include a test update +to make sure future work doesn't break things or regress. We want to fix bugs +just once, not over and over again. + +Note that we say "should". While we really like tests, we understand that not +all changes are trivial to verify. + +Some general guidelines: + +* Tests should be standalone: One test should test one thing only. +* Tests should be reproducible: Avoid relying on system settings like /etc. +* Tests must be fast: A good guideline is that they should take <1 second, + and must take <5 seconds. +* Tests must be documented: Just add a comment block to the top of the file + with a short description and any existing bugs/URLs. + +### Documentation Styleguide + +Do everything in markdown. It's readable even in plain text, and converts +well into other formats (e.g. HTML). The question is which flavor! + +For files that end in `.md`, use +[GitHub markdown](https://guides.github.com/features/mastering-markdown/). + +For API documentation (embedded in the code), we use +[Natural Docs](http://www.naturaldocs.org/). You can find more info about +it under the [docs/naturaldocs/](docs/naturaldocs/) subdirectory. + +Try to keep the file linewrapped to 80 cols. Sometimes you won't be able to +because of long strings (like links), and that's OK. diff --git a/Build/source/libs/gd/libgd-src/CONTRIBUTORS b/Build/source/libs/gd/libgd-src/CONTRIBUTORS index 37ae474b6c3..8cf0bdd8297 100644 --- a/Build/source/libs/gd/libgd-src/CONTRIBUTORS +++ b/Build/source/libs/gd/libgd-src/CONTRIBUTORS @@ -1,5 +1,7 @@ chapg +Chen Pingping (Wilson) Chris Reuter +Christoph M. Becker Colin Watson Dimitar Dobrev edink @@ -11,7 +13,7 @@ lhecking Marcin Wojdyr mattias Mike Frysinger -mloskot +Mateusz Loskot (mloskot) Nathanael Jones nlopess Ondřej Surý diff --git a/Build/source/libs/gd/libgd-src/COPYING b/Build/source/libs/gd/libgd-src/COPYING index 725d1b545d2..555e2c9c47a 100644 --- a/Build/source/libs/gd/libgd-src/COPYING +++ b/Build/source/libs/gd/libgd-src/COPYING @@ -70,4 +70,3 @@ 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. - diff --git a/Build/source/libs/gd/libgd-src/Makefile.am b/Build/source/libs/gd/libgd-src/Makefile.am index 17a362c295e..e1feffc136d 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 CHANGELOG.md +EXTRA_DIST = test docs examples windows VMS cmake bootstrap.sh CMakeLists.txt CONTRIBUTORS README.md CHANGELOG.md CONTRIBUTING.md clean-local: $(srcdir)/cmake/distclean.sh --automake diff --git a/Build/source/libs/gd/libgd-src/README.md b/Build/source/libs/gd/libgd-src/README.md index 83debad3015..af0e8cf2c84 100644 --- a/Build/source/libs/gd/libgd-src/README.md +++ b/Build/source/libs/gd/libgd-src/README.md @@ -2,6 +2,8 @@ [![Build Status](https://travis-ci.org/libgd/libgd.svg?branch=master)](https://travis-ci.org/libgd/libgd) [![Build Status](https://scan.coverity.com/projects/3810/badge.svg)](https://scan.coverity.com/projects/libgd) +[![Chat](https://badges.gitter.im/libgd/libgd.svg)](https://gitter.im/libgd/libgd) +[![codecov.io](https://codecov.io/github/libgd/libgd/coverage.svg?branch=master)](https://codecov.io/github/libgd/libgd/) GD is an open source code library for the dynamic creation of images by programmers. @@ -18,6 +20,10 @@ The library was originally developed by Thomas Boutell and is now maintained by many contributors (see the [CONTRIBUTORS](CONTRIBUTORS) file) under the umbrella of PHP.net. +If you like to contribute, report bugs, see [how to contribute document](CONTRIBUTING.md) + +For security related issues, please contact us at security@libgd.org + ## Downloads/etc... Please visit our [homepage](http://www.libgd.org/) for more details. @@ -36,6 +42,6 @@ It also has optional support for more formats via external libraries: * [JPEG](https://en.wikipedia.org/wiki/JPEG) via [IJG/libjpeg](http://www.ijg.org/) or [libjpeg-turbo](http://libjpeg-turbo.virtualgl.org/) * Does not include [JPEG 2000](https://en.wikipedia.org/wiki/JPEG_2000) * [PNG](https://en.wikipedia.org/wiki/Portable_Network_Graphics) via [libpng](http://www.libpng.org/) -* [TIFF](https://en.wikipedia.org/wiki/Tagged_Image_File_Format) via [libtiff](http://www.remotesensing.org/libtiff/) +* [TIFF](https://en.wikipedia.org/wiki/Tagged_Image_File_Format) via [libtiff](http://www.libtiff.org/) * [WebP](https://en.wikipedia.org/wiki/WebP) via [libwebp](https://developers.google.com/speed/webp/) * [XPM](https://en.wikipedia.org/wiki/X_PixMap) via [libXpm](http://xorg.freedesktop.org/) diff --git a/Build/source/libs/gd/libgd-src/VMS/CONFIGURE.COM b/Build/source/libs/gd/libgd-src/VMS/CONFIGURE.COM index f7b92f6a779..f2679d6ac77 100644 --- a/Build/source/libs/gd/libgd-src/VMS/CONFIGURE.COM +++ b/Build/source/libs/gd/libgd-src/VMS/CONFIGURE.COM @@ -1,6 +1,6 @@ $! (c) Alexey Chupahin 18-APR-2006, 15-DEC-2007 $! OpenVMS 8.2 Alpha DEC 2000 model 300 -$! OpenVMS 8.3 Itanium rx1620 +$! OpenVMS 8.3 Itanium rx1620 $! GNU $! $! @@ -26,9 +26,9 @@ $ SHARED=32 $ENDIF $DECC = F$SEARCH("SYS$SYSTEM:DECC$COMPILER.EXE") .NES. "" $IF (DECC) THEN $WRITE SYS$OUTPUT "Compiler ... DEC C" -$IF (.NOT. DECC) THEN $WRITE SYS$OUTPUT "BAD compiler" GOTO EXIT +$IF (.NOT. DECC) THEN $WRITE SYS$OUTPUT "BAD compiler" GOTO EXIT $MMS = F$SEARCH("SYS$SYSTEM:MMS.EXE") .NES. "" -$MMK = F$TYPE(MMK) +$MMK = F$TYPE(MMK) $IF (MMS .OR. MMK.NES."") THEN GOTO TEST_LIBRARIES $WRITE SYS$OUTPUT "Please install MMS from DECSET or MMK" $! I cant find any make tool @@ -150,7 +150,7 @@ $ CC/OBJECT=TEST.OBJ/INCLUDE=(FREETYPE2) SYS$INPUT int main(int argc, char *argv[]) { -#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR <= 1 +#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR <= 1 printf("This version is too old. Please get newest\n"); printf("From fafner.dyndns.org/~alexey/libsdl/required.html\n"); exit(2); @@ -220,8 +220,8 @@ $ CC/OBJECT=TEST.OBJ/INCLUDE=(PNG,ZLIB) SYS$INPUT n=png_access_version_number(); n3=n%100; n=n/100; n2=n%100; n=n/100; - n1=n%100; - if ( (n1<=1)&&(n2<2) ) + n1=n%100; + if ( (n1<=1)&&(n2<2) ) { printf("checking version libPNG: %d.%d.%d\n",n1,n2,n3); printf("This version is too old. Please get newest\n"); printf("From fafner.dyndns.org/~alexey/libsdl/public.html\n"); @@ -252,7 +252,7 @@ $ LIBPNG_STATIC=0 $ HAVE_LIBPNG=0 $ GOTO NEXT2 $ ELSE -$ HAVE_LIBPNG=1 +$ HAVE_LIBPNG=1 $ LIBPNG_STATIC=1 $ ENDIF $ ELSE @@ -287,7 +287,7 @@ $ CC/OBJECT=TEST.OBJ/INCLUDE=(JPEG) SYS$INPUT #include #include #include - #include + #include int main() { printf("checking version jpeg: %s\n",JVERSION); @@ -805,7 +805,7 @@ $ THEN $ IF (ZLIB_STATIC.EQ.0) $ THEN $ APP SYS$INPUT [.SRC]LIBGD.OPT - SYS$SHARE:LIBZSHR/SHARE + SYS$SHARE:LIBZSHR/SHARE $ ELSE $ APP SYS$INPUT [.SRC]LIBGD.OPT ZLIB:LIBZ/LIB @@ -857,11 +857,6 @@ $COPY SYS$INPUT [.SRC]CONFIG.H /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 -/* Define to 1 if you have the header file. */ -#define HAVE_ERRNO_H 1 - - - /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 @@ -894,12 +889,6 @@ $COPY SYS$INPUT [.SRC]CONFIG.H /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBPNG_PNG_H */ - - -/* Define to 1 if you have the header file. */ -//#define HAVE_LIMITS_H 1 - - /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 @@ -907,21 +896,12 @@ $COPY SYS$INPUT [.SRC]CONFIG.H /* Define if you have POSIX threads libraries and header files. */ #define HAVE_PTHREAD 1 -/* Define to 1 if you have the header file. */ -#define HAVE_STDDEF_H 1 - /* Define to 1 if you have the header file. */ //#define HAVE_STDINT_H 1 -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 @@ -954,29 +934,29 @@ $ APP SYS$INPUT [.SRC]CONFIG.H /* Define if defines iconv_t. */ #define HAVE_ICONV_T_DEF 1 $ENDIF -$IF HAVE_TIFF.EQ.1 -$ THEN +$IF HAVE_TIFF.EQ.1 +$ THEN $ APP SYS$INPUT [.SRC]CONFIG.H #define HAVE_LIBTIFF 1 $ENDIF -$IF HAVE_LIBPNG.EQ.1 -$ THEN +$IF HAVE_LIBPNG.EQ.1 +$ THEN $ APP SYS$INPUT [.SRC]CONFIG.H #define HAVE_LIBPNG 1 $ENDIF $IF HAVE_FREETYPE.EQ.1 -$ THEN +$ THEN $ APP SYS$INPUT [.SRC]CONFIG.H #define HAVE_LIBFREETYPE 1 #define HAVE_FT2BUILD_H 1 $ENDIF -$IF HAVE_JPEG.EQ.1 -$ THEN +$IF HAVE_JPEG.EQ.1 +$ THEN $ APP SYS$INPUT [.SRC]CONFIG.H #define HAVE_LIBJPEG 1 $ENDIF -$IF HAVE_ZLIB.EQ.1 -$ THEN +$IF HAVE_ZLIB.EQ.1 +$ THEN $ APP SYS$INPUT [.SRC]CONFIG.H #define HAVE_LIBZ 1 $ENDIF @@ -994,7 +974,7 @@ $COP SYS$INPUT [.SRC]DESCRIP.MMS # Alexey Chupahin elvis_75@mail.ru # OpenVMS 7.3-1,8.2 DEC 2000 mod.300 # OpenVMS 8.3 HP rx1620 - + .FIRST DEF LIBGD [] diff --git a/Build/source/libs/gd/libgd-src/VMS/README.VMS b/Build/source/libs/gd/libgd-src/VMS/README.VMS index cdeee561654..108a120eed9 100644 --- a/Build/source/libs/gd/libgd-src/VMS/README.VMS +++ b/Build/source/libs/gd/libgd-src/VMS/README.VMS @@ -1,6 +1,6 @@ Dear OpenVMS user, -Installation process is identical to one in *nix* world and consist to +Installation process is identical to one in *nix* world and consist to four simple steps: 1. Installing required libraries 2. Configuration @@ -18,7 +18,7 @@ four simple steps: All may be found at OpenVMS libSDL porting project site http://fafner.dyndns.org/~alexey/libsdl/required.html -Also, system should have MMS make utility from DEC or +Also, system should have MMS make utility from DEC or free analogue MMK. And C compiler with runtime, of course. ;) @@ -27,14 +27,14 @@ free analogue MMK. And C compiler with runtime, of course. ;) $@[.VMS]CONFIGURE The script detects hardware,system and required libraries have been installed. -Compilation stage will be prepeared to create shared and static libraries. -Alpha,IA64 or VAX platform are supported. Optional argument "static" +Compilation stage will be prepeared to create shared and static libraries. +Alpha,IA64 or VAX platform are supported. Optional argument "static" tells to configurator to make static libraries only: $@[.VMS]CONFIGURE STATIC -CONFIGURE script checks your ZLIB, FREETYPE, JPEG, PNG libraries. -If it detects any troubles, you may get and install good and tested ones +CONFIGURE script checks your ZLIB, FREETYPE, JPEG, PNG libraries. +If it detects any troubles, you may get and install good and tested ones from OpenVMS libSDL porting project site: http://fafner.dyndns.org/~alexey/libsdl/required.html @@ -54,7 +54,7 @@ $@LIBGD$STARTUP LIBGD and its utilites are ready to using. -Optionally you may insert this startup file into your LOGIN.COM +Optionally you may insert this startup file into your LOGIN.COM to set libGD environment every time you login automatically. To learn libGD please refer libGD official documentation. diff --git a/Build/source/libs/gd/libgd-src/bootstrap.sh b/Build/source/libs/gd/libgd-src/bootstrap.sh index ffd978c82ef..fe7dd0fd35b 100755 --- a/Build/source/libs/gd/libgd-src/bootstrap.sh +++ b/Build/source/libs/gd/libgd-src/bootstrap.sh @@ -1,5 +1,4 @@ #!/bin/sh -- -# $Id$ # Small shell script to build gd from source v() { echo "$@"; "$@"; } @@ -11,7 +10,7 @@ v() { echo "$@"; "$@"; } v docs/naturaldocs/run_docs.sh --nonfatal if echo "${OSTYPE:-$(uname)}" | grep -q '^darwin' ; then - echo "Having trouble on OS X? Try: brew install autoconf libtool automake gettext apple-gcc42 pkg-config cmake" + echo "Having trouble on OS X? Try: brew install autoconf libtool automake gettext pkg-config cmake" fi if ! v autoreconf -f -i ; then @@ -20,8 +19,9 @@ fi ( echo "/* Generated from config.hin via autoheader for cmake; see bootstrap.sh. */" -sed \ +sed -E \ -e '1d' \ + -e '/ENABLE_/{s:#undef:#define:;s:([^ ]*)$:\1 @\1@:;}' \ -e 's:#undef:#cmakedefine:' \ src/config.hin ) > src/config.h.cmake diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/AC_HEADER_STDC.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/AC_HEADER_STDC.cmake index d3775ea3013..fafc76beb96 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/AC_HEADER_STDC.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/AC_HEADER_STDC.cmake @@ -1,13 +1,8 @@ # Keep in sync with AC_CHECK_HEADERS in configure.ac. check_include_files(dirent.h HAVE_DIRENT_H) -check_include_files(errno.h HAVE_ERRNO_H) check_include_files(inttypes.h HAVE_INTTYPES_H) -check_include_files(limits.h HAVE_LIMITS_H) -check_include_files(stddef.h HAVE_STDDEF_H) check_include_files(stdint.h HAVE_STDINT_H) -check_include_files(stdlib.h HAVE_STDLIB_H) -check_include_files(string.h HAVE_STRING_H) check_include_files(strings.h HAVE_STRINGS_H) check_include_files(unistd.h HAVE_UNISTD_H) diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/CMakeParseArguments.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/CMakeParseArguments.cmake deleted file mode 100644 index b57b0296d3f..00000000000 --- a/Build/source/libs/gd/libgd-src/cmake/modules/CMakeParseArguments.cmake +++ /dev/null @@ -1,156 +0,0 @@ -# CMAKE_PARSE_ARGUMENTS( args...) -# -# CMAKE_PARSE_ARGUMENTS() is intended to be used in macros or functions for -# parsing the arguments given to that macro or function. -# It processes the arguments and defines a set of variables which hold the -# values of the respective options. -# -# The argument contains all options for the respective macro, -# i.e. keywords which can be used when calling the macro without any value -# following, like e.g. the OPTIONAL keyword of the install() command. -# -# The argument contains all keywords for this macro -# which are followed by one value, like e.g. DESTINATION keyword of the -# install() command. -# -# The argument contains all keywords for this macro -# which can be followed by more than one value, like e.g. the TARGETS or -# FILES keywords of the install() command. -# -# When done, CMAKE_PARSE_ARGUMENTS() will have defined for each of the -# keywords listed in , and -# a variable composed of the given -# followed by "_" and the name of the respective keyword. -# These variables will then hold the respective value from the argument list. -# For the keywords this will be TRUE or FALSE. -# -# All remaining arguments are collected in a variable -# _UNPARSED_ARGUMENTS, this can be checked afterwards to see whether -# your macro was called with unrecognized parameters. -# -# As an example here a my_install() macro, which takes similar arguments as the -# real install() command: -# -# function(MY_INSTALL) -# set(options OPTIONAL FAST) -# set(oneValueArgs DESTINATION RENAME) -# set(multiValueArgs TARGETS CONFIGURATIONS) -# cmake_parse_arguments(MY_INSTALL "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) -# ... -# -# Assume my_install() has been called like this: -# my_install(TARGETS foo bar DESTINATION bin OPTIONAL blub) -# -# After the cmake_parse_arguments() call the macro will have set the following -# variables: -# MY_INSTALL_OPTIONAL = TRUE -# MY_INSTALL_FAST = FALSE (this option was not used when calling my_install() -# MY_INSTALL_DESTINATION = "bin" -# MY_INSTALL_RENAME = "" (was not used) -# MY_INSTALL_TARGETS = "foo;bar" -# MY_INSTALL_CONFIGURATIONS = "" (was not used) -# MY_INSTALL_UNPARSED_ARGUMENTS = "blub" (no value expected after "OPTIONAL" -# -# You can the continue and process these variables. -# -# Keywords terminate lists of values, e.g. if directly after a one_value_keyword -# another recognized keyword follows, this is interpreted as the beginning of -# the new option. -# E.g. my_install(TARGETS foo DESTINATION OPTIONAL) would result in -# MY_INSTALL_DESTINATION set to "OPTIONAL", but MY_INSTALL_DESTINATION would -# be empty and MY_INSTALL_OPTIONAL would be set to TRUE therefor. - -#============================================================================= -# Copyright 2010 Alexander Neundorf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * The names of Kitware, Inc., the Insight Consortium, or the names of -# any consortium members, or of any contributors, may not be used to -# endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#============================================================================= - - -if(__CMAKE_PARSE_ARGUMENTS_INCLUDED) - return() -endif() -set(__CMAKE_PARSE_ARGUMENTS_INCLUDED TRUE) - - -function(CMAKE_PARSE_ARGUMENTS prefix _optionNames _singleArgNames _multiArgNames) - # first set all result variables to empty/FALSE - foreach(arg_name ${_singleArgNames} ${_multiArgNames}) - set(${prefix}_${arg_name}) - endforeach() - - foreach(option ${_optionNames}) - set(${prefix}_${option} FALSE) - endforeach() - - set(${prefix}_UNPARSED_ARGUMENTS) - - set(insideValues FALSE) - set(currentArgName) - - # now iterate over all arguments and fill the result variables - foreach(currentArg ${ARGN}) - list(FIND _optionNames "${currentArg}" optionIndex) # ... then this marks the end of the arguments belonging to this keyword - list(FIND _singleArgNames "${currentArg}" singleArgIndex) # ... then this marks the end of the arguments belonging to this keyword - list(FIND _multiArgNames "${currentArg}" multiArgIndex) # ... then this marks the end of the arguments belonging to this keyword - - if(${optionIndex} EQUAL -1 AND ${singleArgIndex} EQUAL -1 AND ${multiArgIndex} EQUAL -1) - if(insideValues) - if("${insideValues}" STREQUAL "SINGLE") - set(${prefix}_${currentArgName} ${currentArg}) - set(insideValues FALSE) - elseif("${insideValues}" STREQUAL "MULTI") - list(APPEND ${prefix}_${currentArgName} ${currentArg}) - endif() - else() - list(APPEND ${prefix}_UNPARSED_ARGUMENTS ${currentArg}) - endif() - else() - if(NOT ${optionIndex} EQUAL -1) - set(${prefix}_${currentArg} TRUE) - set(insideValues FALSE) - elseif(NOT ${singleArgIndex} EQUAL -1) - set(currentArgName ${currentArg}) - set(${prefix}_${currentArgName}) - set(insideValues "SINGLE") - elseif(NOT ${multiArgIndex} EQUAL -1) - set(currentArgName ${currentArg}) - set(${prefix}_${currentArgName}) - set(insideValues "MULTI") - endif() - endif() - - endforeach() - - # propagate the result variables to the caller: - foreach(arg_name ${_singleArgNames} ${_multiArgNames} ${_optionNames}) - set(${prefix}_${arg_name} ${${prefix}_${arg_name}} PARENT_SCOPE) - endforeach() - set(${prefix}_UNPARSED_ARGUMENTS ${${prefix}_UNPARSED_ARGUMENTS} PARENT_SCOPE) - -endfunction() diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/CheckDIRSymbolExists.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/CheckDIRSymbolExists.cmake index dde6c7f3af8..fd71e7f5e32 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/CheckDIRSymbolExists.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/CheckDIRSymbolExists.cmake @@ -7,16 +7,16 @@ # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. -# +# # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# +# # * The names of Kitware, Inc., the Insight Consortium, or the names of # any consortium members, or of any contributors, may not be used to # endorse or promote products derived from this software without # specific prior written permission. -# +# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -39,7 +39,7 @@ # the AC_HEADER_DIRENT test programme rather than the CheckSymbolExists.cmake # test programme which always fails since DIR tends to be typedef'd # rather than #define'd. -# +# # The following variables may be set before calling this macro to # modify the way the check is run: # @@ -53,7 +53,7 @@ MACRO(CHECK_DIRSYMBOL_EXISTS FILES VARIABLE) SET(CMAKE_CONFIGURABLE_FILE_CONTENT "/* */\n") SET(MACRO_CHECK_DIRSYMBOL_EXISTS_FLAGS ${CMAKE_REQUIRED_FLAGS}) IF(CMAKE_REQUIRED_LIBRARIES) - SET(CHECK_DIRSYMBOL_EXISTS_LIBS + SET(CHECK_DIRSYMBOL_EXISTS_LIBS "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}") ELSE(CMAKE_REQUIRED_LIBRARIES) SET(CHECK_DIRSYMBOL_EXISTS_LIBS) @@ -79,7 +79,7 @@ MACRO(CHECK_DIRSYMBOL_EXISTS FILES VARIABLE) ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} - CMAKE_FLAGS + CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_DIRSYMBOL_EXISTS_FLAGS} "${CHECK_DIRSYMBOL_EXISTS_LIBS}" "${CMAKE_DIRSYMBOL_EXISTS_INCLUDES}" @@ -87,7 +87,7 @@ MACRO(CHECK_DIRSYMBOL_EXISTS FILES VARIABLE) IF(${VARIABLE}) MESSAGE(STATUS "Looking for DIR in ${FILES} - found") SET(${VARIABLE} 1 CACHE INTERNAL "Have symbol DIR") - FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log + FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeOutput.log "Determining if the DIR symbol is defined as in AC_HEADER_DIRENT " "passed with the following output:\n" "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c:\n" @@ -95,7 +95,7 @@ MACRO(CHECK_DIRSYMBOL_EXISTS FILES VARIABLE) ELSE(${VARIABLE}) MESSAGE(STATUS "Looking for DIR in ${FILES} - not found.") SET(${VARIABLE} "" CACHE INTERNAL "Have symbol DIR") - FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log + FILE(APPEND ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeError.log "Determining if the DIR symbol is defined as in AC_HEADER_DIRENT " "failed with the following output:\n" "${OUTPUT}\nFile ${CMAKE_BINARY_DIR}/CMakeFiles/CMakeTmp/CheckDIRSymbolExists.c:\n" diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/CheckPrototypeExists.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/CheckPrototypeExists.cmake index 85a171758bc..191615c6fba 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/CheckPrototypeExists.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/CheckPrototypeExists.cmake @@ -7,16 +7,16 @@ # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. -# +# # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# +# # * The names of Kitware, Inc., the Insight Consortium, or the names of # any consortium members, or of any contributors, may not be used to # endorse or promote products derived from this software without # specific prior written permission. -# +# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -66,4 +66,3 @@ int main() ") CHECK_CXX_SOURCE_COMPILES("${_CHECK_PROTO_EXISTS_SOURCE_CODE}" ${_RESULT}) ENDMACRO(CHECK_PROTOTYPE_EXISTS _SYMBOL _HEADER _RESULT) - diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindFontConfig.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindFontConfig.cmake index 23d0020c52e..afe967eb6a9 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/FindFontConfig.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/FindFontConfig.cmake @@ -1,17 +1,17 @@ # Copyright (c) 2006,2007 Laurent Montel, -# +# # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: -# +# # 1. Redistributions of source code must retain the copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. -# 3. The name of the author may not be used to endorse or promote products +# 3. The name of the author may not be used to endorse or promote products # derived from this software without specific prior written permission. -# +# # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindFreetype.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindFreetype.cmake deleted file mode 100644 index dd4db279e0c..00000000000 --- a/Build/source/libs/gd/libgd-src/cmake/modules/FindFreetype.cmake +++ /dev/null @@ -1,128 +0,0 @@ -# - Locate FreeType library -# This module defines -# FREETYPE_LIBRARIES, the library to link against -# FREETYPE_FOUND, if false, do not try to link to FREETYPE -# FREETYPE_INCLUDE_DIRS, where to find headers. -# FREETYPE_VERSION_STRING, the version of freetype found (since CMake 2.8.8) -# This is the concatenation of the paths: -# FREETYPE_INCLUDE_DIR_ft2build -# FREETYPE_INCLUDE_DIR_freetype2 -# -# $FREETYPE_DIR is an environment variable that would -# correspond to the ./configure --prefix=$FREETYPE_DIR -# used in building FREETYPE. - -#============================================================================= -# Copyright 2007-2009 Kitware, Inc. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * The names of Kitware, Inc., the Insight Consortium, or the names of -# any consortium members, or of any contributors, may not be used to -# endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# Created by Eric Wing. -# Modifications by Alexander Neundorf. -# This file has been renamed to "FindFreetype.cmake" instead of the correct -# "FindFreeType.cmake" in order to be compatible with the one from KDE4, Alex. - -# Ugh, FreeType seems to use some #include trickery which -# makes this harder than it should be. It looks like they -# put ft2build.h in a common/easier-to-find location which -# then contains a #include to a more specific header in a -# more specific location (#include ). -# Then from there, they need to set a bunch of #define's -# so you can do something like: -# #include FT_FREETYPE_H -# Unfortunately, using CMake's mechanisms like include_directories() -# wants explicit full paths and this trickery doesn't work too well. -# I'm going to attempt to cut out the middleman and hope -# everything still works. -find_path(FREETYPE_INCLUDE_DIR_ft2build ft2build.h - HINTS - ENV FREETYPE_DIR - PATHS - /usr/local/X11R6 - /usr/local/X11 - /usr/freeware - PATH_SUFFIXES include/freetype2 include -) - -find_path(FREETYPE_INCLUDE_DIR_freetype2 config/ftheader.h - HINTS - ENV FREETYPE_DIR - PATHS - /usr/local/X11R6 - /usr/local/X11 - /usr/freeware - PATH_SUFFIXES include/freetype2 include -) - -find_library(FREETYPE_LIBRARY - NAMES freetype libfreetype freetype219 freetype_a - HINTS - ENV FREETYPE_DIR - PATH_SUFFIXES lib - PATHS - /usr/local/X11R6 - /usr/local/X11 - /usr/freeware -) - -# set the user variables -if(FREETYPE_INCLUDE_DIR_ft2build AND FREETYPE_INCLUDE_DIR_freetype2) - set(FREETYPE_INCLUDE_DIRS "${FREETYPE_INCLUDE_DIR_ft2build};${FREETYPE_INCLUDE_DIR_freetype2}") -endif() -set(FREETYPE_LIBRARIES "${FREETYPE_LIBRARY}") - -if(FREETYPE_INCLUDE_DIR_freetype2 AND EXISTS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h") - file(STRINGS "${FREETYPE_INCLUDE_DIR_freetype2}/freetype/freetype.h" freetype_version_str - REGEX "^#[\t ]*define[\t ]+FREETYPE_(MAJOR|MINOR|PATCH)[\t ]+[0-9]+$") - - unset(FREETYPE_VERSION_STRING) - foreach(VPART MAJOR MINOR PATCH) - foreach(VLINE ${freetype_version_str}) - if(VLINE MATCHES "^#[\t ]*define[\t ]+FREETYPE_${VPART}") - string(REGEX REPLACE "^#[\t ]*define[\t ]+FREETYPE_${VPART}[\t ]+([0-9]+)$" "\\1" - FREETYPE_VERSION_PART "${VLINE}") - if(FREETYPE_VERSION_STRING) - set(FREETYPE_VERSION_STRING "${FREETYPE_VERSION_STRING}.${FREETYPE_VERSION_PART}") - else() - set(FREETYPE_VERSION_STRING "${FREETYPE_VERSION_PART}") - endif() - unset(FREETYPE_VERSION_PART) - endif() - endforeach() - endforeach() -endif() - - -# handle the QUIETLY and REQUIRED arguments and set FREETYPE_FOUND to TRUE if -# all listed variables are TRUE -include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(Freetype - REQUIRED_VARS FREETYPE_LIBRARY FREETYPE_INCLUDE_DIRS - VERSION_VAR FREETYPE_VERSION_STRING) - -mark_as_advanced(FREETYPE_LIBRARY FREETYPE_INCLUDE_DIR_freetype2 FREETYPE_INCLUDE_DIR_ft2build) diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindICONV.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindICONV.cmake index 49d5f6b95a0..6973a56f6e9 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/FindICONV.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/FindICONV.cmake @@ -1,11 +1,11 @@ -# - Try to find Iconv -# Once done this will define -# -# ICONV_FOUND - system has Iconv -# ICONV_INCLUDE_DIR - the Iconv include directory -# ICONV_LIBRARIES - Link these to use Iconv +# - Try to find Iconv +# Once done this will define +# +# ICONV_FOUND - system has Iconv +# ICONV_INCLUDE_DIR - the Iconv include directory +# ICONV_LIBRARIES - Link these to use Iconv # ICONV_SECOND_ARGUMENT_IS_CONST - the second argument for iconv() is const -# +# include(CheckCCompilerFlag) include(CheckCSourceCompiles) @@ -14,13 +14,13 @@ IF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) SET(ICONV_FIND_QUIETLY TRUE) ENDIF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) -FIND_PATH(ICONV_INCLUDE_DIR iconv.h HINTS /sw/include/ PATHS /opt/local) - +FIND_PATH(ICONV_INCLUDE_DIR iconv.h HINTS /sw/include/ PATHS /opt/local) + FIND_LIBRARY(ICONV_LIBRARIES NAMES libiconv_a iconv libiconv c PATHS /opt/local) - -IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) - SET(ICONV_FOUND TRUE) -ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) + +IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) + SET(ICONV_FOUND TRUE) +ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR}) set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES}) @@ -47,18 +47,18 @@ ENDIF(ICONV_FOUND) set(CMAKE_REQUIRED_INCLUDES) set(CMAKE_REQUIRED_LIBRARIES) -IF(ICONV_FOUND) - IF(NOT ICONV_FIND_QUIETLY) - MESSAGE(STATUS "Found Iconv: ${ICONV_LIBRARIES}") - ENDIF(NOT ICONV_FIND_QUIETLY) -ELSE(ICONV_FOUND) - IF(Iconv_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "Could not find Iconv") - ENDIF(Iconv_FIND_REQUIRED) -ENDIF(ICONV_FOUND) +IF(ICONV_FOUND) + IF(NOT ICONV_FIND_QUIETLY) + MESSAGE(STATUS "Found Iconv: ${ICONV_LIBRARIES}") + ENDIF(NOT ICONV_FIND_QUIETLY) +ELSE(ICONV_FOUND) + IF(Iconv_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find Iconv") + ENDIF(Iconv_FIND_REQUIRED) +ENDIF(ICONV_FOUND) MARK_AS_ADVANCED( ICONV_INCLUDE_DIR ICONV_LIBRARIES ICONV_SECOND_ARGUMENT_IS_CONST -) \ No newline at end of file +) diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindJPEG.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindJPEG.cmake deleted file mode 100644 index bb310d65dcb..00000000000 --- a/Build/source/libs/gd/libgd-src/cmake/modules/FindJPEG.cmake +++ /dev/null @@ -1,60 +0,0 @@ -# - Find JPEG -# Find the native JPEG includes and library -# This module defines -# JPEG_INCLUDE_DIR, where to find jpeglib.h, etc. -# JPEG_LIBRARIES, the libraries needed to use JPEG. -# JPEG_FOUND, If false, do not try to use JPEG. -# also defined, but not for general use are -# JPEG_LIBRARY, where to find the JPEG library. - -#============================================================================= -# Copyright 2001-2009 Kitware, Inc. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * The names of Kitware, Inc., the Insight Consortium, or the names of -# any consortium members, or of any contributors, may not be used to -# endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -find_path(JPEG_INCLUDE_DIR jpeglib.h) - -set(JPEG_NAMES ${JPEG_NAMES} jpeg libjpeg_a) -find_library(JPEG_LIBRARY NAMES ${JPEG_NAMES} ) - -# handle the QUIETLY and REQUIRED arguments and set JPEG_FOUND to TRUE if -# all listed variables are TRUE -include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(JPEG DEFAULT_MSG JPEG_LIBRARY JPEG_INCLUDE_DIR) - -if(JPEG_FOUND) - set(JPEG_LIBRARIES ${JPEG_LIBRARY}) -endif() - -# Deprecated declarations. -set (NATIVE_JPEG_INCLUDE_PATH ${JPEG_INCLUDE_DIR} ) -if(JPEG_LIBRARY) - get_filename_component (NATIVE_JPEG_LIB_PATH ${JPEG_LIBRARY} PATH) -endif() - -mark_as_advanced(JPEG_LIBRARY JPEG_INCLUDE_DIR ) diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindLIQ.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindLIQ.cmake index bf17fcfc92e..4f730f09685 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/FindLIQ.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/FindLIQ.cmake @@ -4,56 +4,30 @@ # This module defines # LIQ_INCLUDE_DIR, where to find libimagequant.h # LIQ_LIBRARIES, the libraries to link against to use libimagequant. -# LIQ_FOUND, If false, do not try to use libimagequant. +# LIQ_FOUND, if false, do not try to use libimagequant. SET(LIQ_FOUND "NO") FIND_PATH(LIQ_INCLUDE_DIR libimagequant.h -"${PROJECT_SOURCE_DIR}/libimagequant" -"${PROJECT_SOURCE_DIR}/pngquant/lib" -/usr/local/include -/usr/include + /usr/local/include + /usr/include ) FIND_LIBRARY(LIQ_LIBRARY NAMES libimagequant imagequant - PATHS "${PROJECT_SOURCE_DIR}/libimagequant" "${PROJECT_SOURCE_DIR}/pngquant/lib" /usr/lib64 /usr/lib /usr/local/lib + PATHS /usr/lib64 /usr/lib /usr/local/lib ) IF (LIQ_LIBRARY AND LIQ_INCLUDE_DIR) SET(LIQ_FOUND "YES") SET(LIQ_LIBRARIES ${LIQ_LIBRARY}) - SET(HAVE_LIBIMAGEQUANT 1) + SET(HAVE_LIBIMAGEQUANT 1) ENDIF (LIQ_LIBRARY AND LIQ_INCLUDE_DIR) IF (LIQ_FOUND) IF (NOT LIQ_FIND_QUIETLY) MESSAGE(STATUS "Found LIQ: ${LIQ_LIBRARY} ${LIQ_INCLUDE_DIR}") ENDIF (NOT LIQ_FIND_QUIETLY) -ELSE (LIQ_FOUND) - # if existing library not found, then download and build it - IF (NOT WIN32 OR CYGWIN OR MINGW) # MSVC's C compiler is too old to compile libimagequant - IF (CMAKE_VERSION VERSION_GREATER "2.8.1") - MESSAGE(STATUS "LIQ will be built") - INCLUDE(ExternalProject) - EXTERNALPROJECT_ADD( - libimagequant - URL "http://pngquant.org/libimagequant-2.0.0-src.tar.bz2" - SOURCE_DIR libimagequant - BUILD_IN_SOURCE 1 - INSTALL_DIR libimagequant - INSTALL_COMMAND true - CONFIGURE_COMMAND true - BUILD_COMMAND make static CFLAGSADD='-fPIC' - ) - - SET(LIQ_FOUND "SORTOF") - SET(LIQ_BUILD "YES") - SET(LIQ_LIBRARIES "${PROJECT_BINARY_DIR}/libimagequant/libimagequant.a") - SET(LIQ_INCLUDE_DIR "${PROJECT_BINARY_DIR}/libimagequant/") - SET(HAVE_LIBIMAGEQUANT 1) - ENDIF(CMAKE_VERSION VERSION_GREATER "2.8.1") - ENDIF(NOT WIN32 OR CYGWIN OR MINGW) ENDIF (LIQ_FOUND) MARK_AS_ADVANCED(LIQ_INCLUDE_DIR LIQ_LIBRARIES LIQ_BUILD) diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindPNG.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindPNG.cmake deleted file mode 100644 index a44affcfcc0..00000000000 --- a/Build/source/libs/gd/libgd-src/cmake/modules/FindPNG.cmake +++ /dev/null @@ -1,93 +0,0 @@ -# - Find the native PNG includes and library -# -# This module searches libpng, the library for working with PNG images. -# -# It defines the following variables -# PNG_INCLUDE_DIRS, where to find png.h, etc. -# PNG_LIBRARIES, the libraries to link against to use PNG. -# PNG_DEFINITIONS - You should add_definitons(${PNG_DEFINITIONS}) before compiling code that includes png library files. -# PNG_FOUND, If false, do not try to use PNG. -# PNG_VERSION_STRING - the version of the PNG library found (since CMake 2.8.8) -# Also defined, but not for general use are -# PNG_LIBRARY, where to find the PNG library. -# For backward compatiblity the variable PNG_INCLUDE_DIR is also set. It has the same value as PNG_INCLUDE_DIRS. -# -# Since PNG depends on the ZLib compression library, none of the above will be -# defined unless ZLib can be found. - -#============================================================================= -# Copyright 2002-2009 Kitware, Inc. -# -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * The names of Kitware, Inc., the Insight Consortium, or the names of -# any consortium members, or of any contributors, may not be used to -# endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -if(PNG_FIND_QUIETLY) - set(_FIND_ZLIB_ARG QUIET) -endif() -find_package(ZLIB ${_FIND_ZLIB_ARG}) - -if(ZLIB_FOUND) - find_path(PNG_PNG_INCLUDE_DIR png.h - /usr/local/include/libpng # OpenBSD - ) - - set(PNG_NAMES ${PNG_NAMES} png libpng png15 libpng15 png15d libpng15d png14 libpng14 png14d libpng14d png12 libpng12 png12d libpng12d libpng_a) - find_library(PNG_LIBRARY NAMES ${PNG_NAMES} ) - - if (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR) - # png.h includes zlib.h. Sigh. - set(PNG_INCLUDE_DIRS ${PNG_PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} ) - set(PNG_INCLUDE_DIR ${PNG_INCLUDE_DIRS} ) # for backward compatiblity - set(PNG_LIBRARIES ${PNG_LIBRARY} ${ZLIB_LIBRARY}) - - if (CYGWIN) - if(BUILD_SHARED_LIBS) - # No need to define PNG_USE_DLL here, because it's default for Cygwin. - else() - set (PNG_DEFINITIONS -DPNG_STATIC) - endif() - endif () - - endif () - - if (PNG_PNG_INCLUDE_DIR AND EXISTS "${PNG_PNG_INCLUDE_DIR}/png.h") - file(STRINGS "${PNG_PNG_INCLUDE_DIR}/png.h" png_version_str REGEX "^#define[ \t]+PNG_LIBPNG_VER_STRING[ \t]+\".+\"") - - string(REGEX REPLACE "^#define[ \t]+PNG_LIBPNG_VER_STRING[ \t]+\"([^\"]+)\".*" "\\1" PNG_VERSION_STRING "${png_version_str}") - unset(png_version_str) - endif () -endif() - -# handle the QUIETLY and REQUIRED arguments and set PNG_FOUND to TRUE if -# all listed variables are TRUE -include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) -find_package_handle_standard_args(PNG - REQUIRED_VARS PNG_LIBRARY PNG_PNG_INCLUDE_DIR - VERSION_VAR PNG_VERSION_STRING) - -mark_as_advanced(PNG_PNG_INCLUDE_DIR PNG_LIBRARY ) diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindPTHREAD.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindPTHREAD.cmake index 0627c6d0a44..0331e17562f 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/FindPTHREAD.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/FindPTHREAD.cmake @@ -1,92 +1,90 @@ -############################################################################# -# -# $Id: FindPTHREAD.cmake 4056 2013-01-05 13:04:42Z fspindle $ -# -# This file is part of the ViSP software. -# Copyright (C) 2005 - 2013 by INRIA. All rights reserved. -# -# This software is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# ("GPL") version 2 as published by the Free Software Foundation. -# See the file LICENSE.txt at the root directory of this source -# distribution for additional information about the GNU GPL. -# -# For using ViSP with software that can not be combined with the GNU -# GPL, please contact INRIA about acquiring a ViSP Professional -# Edition License. -# -# See http://www.irisa.fr/lagadic/visp/visp.html for more information. -# -# This software was developed at: -# INRIA Rennes - Bretagne Atlantique -# Campus Universitaire de Beaulieu -# 35042 Rennes Cedex -# France -# http://www.irisa.fr/lagadic -# -# If you have questions regarding the use of this file, please contact -# INRIA at visp@inria.fr -# -# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE -# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -# -# Description: -# Try to find pthread library. -# Once run this will define: -# -# PTHREAD_FOUND -# PTHREAD_INCLUDE_DIRS -# PTHREAD_LIBRARIES -# -# Authors: -# Fabien Spindler -# -############################################################################# - - - FIND_PATH(PTHREAD_INCLUDE_DIR pthread.h - "$ENV{PTHREAD_HOME}/include" - "$ENV{PTHREAD_DIR}/include" - /usr/include - "C:/MinGW/include" - ) - #MESSAGE("DBG PTHREAD_INCLUDE_DIR=${PTHREAD_INCLUDE_DIR}") - - # pthreadVSE pthreadGCE pthreadGC pthreadVC1 pthreadVC2 are comming from web - FIND_LIBRARY(PTHREAD_LIBRARY - NAMES pthread pthreadGC2 pthreadVSE pthreadGCE pthreadGC pthreadVC1 pthreadVC2 - PATHS - "$ENV{PTHREAD_HOME}/lib" - "$ENV{PTHREAD_DIR}/lib" - /usr/lib - /usr/local/lib - /lib - "C:/MinGW/lib" - ) - - #MESSAGE(STATUS "DBG PTHREAD_LIBRARY=${PTHREAD_LIBRARY}") - - ## -------------------------------- - - IF(PTHREAD_LIBRARY) - SET(PTHREAD_LIBRARIES ${PTHREAD_LIBRARY}) - ELSE(PTHREAD_LIBRARY) - #MESSAGE(SEND_ERROR "pthread library not found.") - ENDIF(PTHREAD_LIBRARY) - - IF(NOT PTHREAD_INCLUDE_DIR) - #MESSAGE(SEND_ERROR "pthread include dir not found.") - ENDIF(NOT PTHREAD_INCLUDE_DIR) - - IF(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR) - SET(PTHREAD_INCLUDE_DIRS ${PTHREAD_INCLUDE_DIR}) - SET(PTHREAD_FOUND TRUE) - ELSE(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR) - SET(PTHREAD_FOUND FALSE) - ENDIF(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR) - - MARK_AS_ADVANCED( - PTHREAD_INCLUDE_DIR - PTHREAD_LIBRARY - ) - #MESSAGE(STATUS "PTHREAD_FOUND : ${PTHREAD_FOUND}") +############################################################################# +# +# This file is part of the ViSP software. +# Copyright (C) 2005 - 2013 by INRIA. All rights reserved. +# +# This software is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# ("GPL") version 2 as published by the Free Software Foundation. +# See the file LICENSE.txt at the root directory of this source +# distribution for additional information about the GNU GPL. +# +# For using ViSP with software that can not be combined with the GNU +# GPL, please contact INRIA about acquiring a ViSP Professional +# Edition License. +# +# See http://www.irisa.fr/lagadic/visp/visp.html for more information. +# +# This software was developed at: +# INRIA Rennes - Bretagne Atlantique +# Campus Universitaire de Beaulieu +# 35042 Rennes Cedex +# France +# http://www.irisa.fr/lagadic +# +# If you have questions regarding the use of this file, please contact +# INRIA at visp@inria.fr +# +# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +# +# Description: +# Try to find pthread library. +# Once run this will define: +# +# PTHREAD_FOUND +# PTHREAD_INCLUDE_DIRS +# PTHREAD_LIBRARIES +# +# Authors: +# Fabien Spindler +# +############################################################################# + + + FIND_PATH(PTHREAD_INCLUDE_DIR pthread.h + "$ENV{PTHREAD_HOME}/include" + "$ENV{PTHREAD_DIR}/include" + /usr/include + "C:/MinGW/include" + ) + #MESSAGE("DBG PTHREAD_INCLUDE_DIR=${PTHREAD_INCLUDE_DIR}") + + # pthreadVSE pthreadGCE pthreadGC pthreadVC1 pthreadVC2 are comming from web + FIND_LIBRARY(PTHREAD_LIBRARY + NAMES pthread pthreadGC2 pthreadVSE pthreadGCE pthreadGC pthreadVC1 pthreadVC2 + PATHS + "$ENV{PTHREAD_HOME}/lib" + "$ENV{PTHREAD_DIR}/lib" + /usr/lib + /usr/local/lib + /lib + "C:/MinGW/lib" + ) + + #MESSAGE(STATUS "DBG PTHREAD_LIBRARY=${PTHREAD_LIBRARY}") + + ## -------------------------------- + + IF(PTHREAD_LIBRARY) + SET(PTHREAD_LIBRARIES ${PTHREAD_LIBRARY}) + ELSE(PTHREAD_LIBRARY) + #MESSAGE(SEND_ERROR "pthread library not found.") + ENDIF(PTHREAD_LIBRARY) + + IF(NOT PTHREAD_INCLUDE_DIR) + #MESSAGE(SEND_ERROR "pthread include dir not found.") + ENDIF(NOT PTHREAD_INCLUDE_DIR) + + IF(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR) + SET(PTHREAD_INCLUDE_DIRS ${PTHREAD_INCLUDE_DIR}) + SET(PTHREAD_FOUND TRUE) + ELSE(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR) + SET(PTHREAD_FOUND FALSE) + ENDIF(PTHREAD_LIBRARIES AND PTHREAD_INCLUDE_DIR) + + MARK_AS_ADVANCED( + PTHREAD_INCLUDE_DIR + PTHREAD_LIBRARY + ) + #MESSAGE(STATUS "PTHREAD_FOUND : ${PTHREAD_FOUND}") diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindPackageHandleStandardArgs.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindPackageHandleStandardArgs.cmake deleted file mode 100644 index de124acce43..00000000000 --- a/Build/source/libs/gd/libgd-src/cmake/modules/FindPackageHandleStandardArgs.cmake +++ /dev/null @@ -1,317 +0,0 @@ -# FIND_PACKAGE_HANDLE_STANDARD_ARGS( ... ) -# -# This function is intended to be used in FindXXX.cmake modules files. -# It handles the REQUIRED, QUIET and version-related arguments to find_package(). -# It also sets the _FOUND variable. -# The package is considered found if all variables ... listed contain -# valid results, e.g. valid filepaths. -# -# There are two modes of this function. The first argument in both modes is -# the name of the Find-module where it is called (in original casing). -# -# The first simple mode looks like this: -# FIND_PACKAGE_HANDLE_STANDARD_ARGS( (DEFAULT_MSG|"Custom failure message") ... ) -# If the variables to are all valid, then _FOUND -# will be set to TRUE. -# If DEFAULT_MSG is given as second argument, then the function will generate -# itself useful success and error messages. You can also supply a custom error message -# for the failure case. This is not recommended. -# -# The second mode is more powerful and also supports version checking: -# FIND_PACKAGE_HANDLE_STANDARD_ARGS(NAME [REQUIRED_VARS ...] -# [VERSION_VAR ] -# [HANDLE_COMPONENTS] -# [CONFIG_MODE] -# [FAIL_MESSAGE "Custom failure message"] ) -# -# As above, if through are all valid, _FOUND -# will be set to TRUE. -# After REQUIRED_VARS the variables which are required for this package are listed. -# Following VERSION_VAR the name of the variable can be specified which holds -# the version of the package which has been found. If this is done, this version -# will be checked against the (potentially) specified required version used -# in the find_package() call. The EXACT keyword is also handled. The default -# messages include information about the required version and the version -# which has been actually found, both if the version is ok or not. -# If the package supports components, use the HANDLE_COMPONENTS option to enable -# handling them. In this case, find_package_handle_standard_args() will report -# which components have been found and which are missing, and the _FOUND -# variable will be set to FALSE if any of the required components (i.e. not the -# ones listed after OPTIONAL_COMPONENTS) are missing. -# Use the option CONFIG_MODE if your FindXXX.cmake module is a wrapper for -# a find_package(... NO_MODULE) call. In this case VERSION_VAR will be set -# to _VERSION and the macro will automatically check whether the -# Config module was found. -# Via FAIL_MESSAGE a custom failure message can be specified, if this is not -# used, the default message will be displayed. -# -# Example for mode 1: -# -# FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibXml2 DEFAULT_MSG LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) -# -# LibXml2 is considered to be found, if both LIBXML2_LIBRARY and -# LIBXML2_INCLUDE_DIR are valid. Then also LIBXML2_FOUND is set to TRUE. -# If it is not found and REQUIRED was used, it fails with FATAL_ERROR, -# independent whether QUIET was used or not. -# If it is found, success will be reported, including the content of . -# On repeated Cmake runs, the same message won't be printed again. -# -# Example for mode 2: -# -# FIND_PACKAGE_HANDLE_STANDARD_ARGS(BISON REQUIRED_VARS BISON_EXECUTABLE -# VERSION_VAR BISON_VERSION) -# In this case, BISON is considered to be found if the variable(s) listed -# after REQUIRED_VAR are all valid, i.e. BISON_EXECUTABLE in this case. -# Also the version of BISON will be checked by using the version contained -# in BISON_VERSION. -# Since no FAIL_MESSAGE is given, the default messages will be printed. -# -# Another example for mode 2: -# -# find_package(Automoc4 QUIET NO_MODULE HINTS /opt/automoc4) -# FIND_PACKAGE_HANDLE_STANDARD_ARGS(Automoc4 CONFIG_MODE) -# In this case, FindAutmoc4.cmake wraps a call to find_package(Automoc4 NO_MODULE) -# and adds an additional search directory for automoc4. -# The following FIND_PACKAGE_HANDLE_STANDARD_ARGS() call produces a proper -# success/error message. - -#============================================================================= -# Copyright 2007-2009 Kitware, Inc. -# -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# * The names of Kitware, Inc., the Insight Consortium, or the names of -# any consortium members, or of any contributors, may not be used to -# endorse or promote products derived from this software without -# specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR -# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -include(FindPackageMessage) -include(CMakeParseArguments) - -# internal helper macro -macro(_FPHSA_FAILURE_MESSAGE _msg) - if (${_NAME}_FIND_REQUIRED) - message(FATAL_ERROR "${_msg}") - else () - if (NOT ${_NAME}_FIND_QUIETLY) - message(STATUS "${_msg}") - endif () - endif () -endmacro() - - -# internal helper macro to generate the failure message when used in CONFIG_MODE: -macro(_FPHSA_HANDLE_FAILURE_CONFIG_MODE) - # _CONFIG is set, but FOUND is false, this means that some other of the REQUIRED_VARS was not found: - if(${_NAME}_CONFIG) - _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: missing: ${MISSING_VARS} (found ${${_NAME}_CONFIG} ${VERSION_MSG})") - else() - # If _CONSIDERED_CONFIGS is set, the config-file has been found, but no suitable version. - # List them all in the error message: - if(${_NAME}_CONSIDERED_CONFIGS) - set(configsText "") - list(LENGTH ${_NAME}_CONSIDERED_CONFIGS configsCount) - math(EXPR configsCount "${configsCount} - 1") - foreach(currentConfigIndex RANGE ${configsCount}) - list(GET ${_NAME}_CONSIDERED_CONFIGS ${currentConfigIndex} filename) - list(GET ${_NAME}_CONSIDERED_VERSIONS ${currentConfigIndex} version) - set(configsText "${configsText} ${filename} (version ${version})\n") - endforeach() - if (${_NAME}_NOT_FOUND_MESSAGE) - set(configsText "${configsText} Reason given by package: ${${_NAME}_NOT_FOUND_MESSAGE}\n") - endif() - _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} ${VERSION_MSG}, checked the following files:\n${configsText}") - - else() - # Simple case: No Config-file was found at all: - _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: found neither ${_NAME}Config.cmake nor ${_NAME_LOWER}-config.cmake ${VERSION_MSG}") - endif() - endif() -endmacro() - - -function(FIND_PACKAGE_HANDLE_STANDARD_ARGS _NAME _FIRST_ARG) - -# set up the arguments for CMAKE_PARSE_ARGUMENTS and check whether we are in -# new extended or in the "old" mode: - set(options CONFIG_MODE HANDLE_COMPONENTS) - set(oneValueArgs FAIL_MESSAGE VERSION_VAR) - set(multiValueArgs REQUIRED_VARS) - set(_KEYWORDS_FOR_EXTENDED_MODE ${options} ${oneValueArgs} ${multiValueArgs} ) - list(FIND _KEYWORDS_FOR_EXTENDED_MODE "${_FIRST_ARG}" INDEX) - - if(${INDEX} EQUAL -1) - set(FPHSA_FAIL_MESSAGE ${_FIRST_ARG}) - set(FPHSA_REQUIRED_VARS ${ARGN}) - set(FPHSA_VERSION_VAR) - else() - - CMAKE_PARSE_ARGUMENTS(FPHSA "${options}" "${oneValueArgs}" "${multiValueArgs}" ${_FIRST_ARG} ${ARGN}) - - if(FPHSA_UNPARSED_ARGUMENTS) - message(FATAL_ERROR "Unknown keywords given to FIND_PACKAGE_HANDLE_STANDARD_ARGS(): \"${FPHSA_UNPARSED_ARGUMENTS}\"") - endif() - - if(NOT FPHSA_FAIL_MESSAGE) - set(FPHSA_FAIL_MESSAGE "DEFAULT_MSG") - endif() - endif() - -# now that we collected all arguments, process them - - if("${FPHSA_FAIL_MESSAGE}" STREQUAL "DEFAULT_MSG") - set(FPHSA_FAIL_MESSAGE "Could NOT find ${_NAME}") - endif() - - # In config-mode, we rely on the variable _CONFIG, which is set by find_package() - # when it successfully found the config-file, including version checking: - if(FPHSA_CONFIG_MODE) - list(INSERT FPHSA_REQUIRED_VARS 0 ${_NAME}_CONFIG) - list(REMOVE_DUPLICATES FPHSA_REQUIRED_VARS) - set(FPHSA_VERSION_VAR ${_NAME}_VERSION) - endif() - - if(NOT FPHSA_REQUIRED_VARS) - message(FATAL_ERROR "No REQUIRED_VARS specified for FIND_PACKAGE_HANDLE_STANDARD_ARGS()") - endif() - - list(GET FPHSA_REQUIRED_VARS 0 _FIRST_REQUIRED_VAR) - - string(TOUPPER ${_NAME} _NAME_UPPER) - string(TOLOWER ${_NAME} _NAME_LOWER) - - # collect all variables which were not found, so they can be printed, so the - # user knows better what went wrong (#6375) - set(MISSING_VARS "") - set(DETAILS "") - set(${_NAME_UPPER}_FOUND TRUE) - # check if all passed variables are valid - foreach(_CURRENT_VAR ${FPHSA_REQUIRED_VARS}) - if(NOT ${_CURRENT_VAR}) - set(${_NAME_UPPER}_FOUND FALSE) - set(MISSING_VARS "${MISSING_VARS} ${_CURRENT_VAR}") - else() - set(DETAILS "${DETAILS}[${${_CURRENT_VAR}}]") - endif() - endforeach() - - # component handling - unset(FOUND_COMPONENTS_MSG) - unset(MISSING_COMPONENTS_MSG) - - if(FPHSA_HANDLE_COMPONENTS) - foreach(comp ${${_NAME}_FIND_COMPONENTS}) - if(${_NAME}_${comp}_FOUND) - - if(NOT DEFINED FOUND_COMPONENTS_MSG) - set(FOUND_COMPONENTS_MSG "found components: ") - endif() - set(FOUND_COMPONENTS_MSG "${FOUND_COMPONENTS_MSG} ${comp}") - - else() - - if(NOT DEFINED MISSING_COMPONENTS_MSG) - set(MISSING_COMPONENTS_MSG "missing components: ") - endif() - set(MISSING_COMPONENTS_MSG "${MISSING_COMPONENTS_MSG} ${comp}") - - if(${_NAME}_FIND_REQUIRED_${comp}) - set(${_NAME_UPPER}_FOUND FALSE) - set(MISSING_VARS "${MISSING_VARS} ${comp}") - endif() - - endif() - endforeach() - set(COMPONENT_MSG "${FOUND_COMPONENTS_MSG} ${MISSING_COMPONENTS_MSG}") - set(DETAILS "${DETAILS}[c${COMPONENT_MSG}]") - endif() - - # version handling: - set(VERSION_MSG "") - set(VERSION_OK TRUE) - set(VERSION ${${FPHSA_VERSION_VAR}} ) - if (${_NAME}_FIND_VERSION) - - if(VERSION) - - if(${_NAME}_FIND_VERSION_EXACT) # exact version required - if (NOT "${${_NAME}_FIND_VERSION}" VERSION_EQUAL "${VERSION}") - set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is exact version \"${${_NAME}_FIND_VERSION}\"") - set(VERSION_OK FALSE) - else () - set(VERSION_MSG "(found suitable exact version \"${VERSION}\")") - endif () - - else() # minimum version specified: - if ("${${_NAME}_FIND_VERSION}" VERSION_GREATER "${VERSION}") - set(VERSION_MSG "Found unsuitable version \"${VERSION}\", but required is at least \"${${_NAME}_FIND_VERSION}\"") - set(VERSION_OK FALSE) - else () - set(VERSION_MSG "(found suitable version \"${VERSION}\", minimum required is \"${${_NAME}_FIND_VERSION}\")") - endif () - endif() - - else() - - # if the package was not found, but a version was given, add that to the output: - if(${_NAME}_FIND_VERSION_EXACT) - set(VERSION_MSG "(Required is exact version \"${${_NAME}_FIND_VERSION}\")") - else() - set(VERSION_MSG "(Required is at least version \"${${_NAME}_FIND_VERSION}\")") - endif() - - endif() - else () - if(VERSION) - set(VERSION_MSG "(found version \"${VERSION}\")") - endif() - endif () - - if(VERSION_OK) - set(DETAILS "${DETAILS}[v${VERSION}(${${_NAME}_FIND_VERSION})]") - else() - set(${_NAME_UPPER}_FOUND FALSE) - endif() - - - # print the result: - if (${_NAME_UPPER}_FOUND) - FIND_PACKAGE_MESSAGE(${_NAME} "Found ${_NAME}: ${${_FIRST_REQUIRED_VAR}} ${VERSION_MSG} ${COMPONENT_MSG}" "${DETAILS}") - else () - - if(FPHSA_CONFIG_MODE) - _FPHSA_HANDLE_FAILURE_CONFIG_MODE() - else() - if(NOT VERSION_OK) - _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE}: ${VERSION_MSG} (found ${${_FIRST_REQUIRED_VAR}})") - else() - _FPHSA_FAILURE_MESSAGE("${FPHSA_FAIL_MESSAGE} (missing: ${MISSING_VARS}) ${VERSION_MSG}") - endif() - endif() - - endif () - - set(${_NAME_UPPER}_FOUND ${${_NAME_UPPER}_FOUND} PARENT_SCOPE) - -endfunction() diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindRAQM.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindRAQM.cmake new file mode 100644 index 00000000000..ffb908b600b --- /dev/null +++ b/Build/source/libs/gd/libgd-src/cmake/modules/FindRAQM.cmake @@ -0,0 +1,69 @@ +# - Find the native RAQM includes and library +# + +# This module defines +# RAQM_INCLUDE_DIR, where to find raqm.h, etc. +# RAQM_LIBRARIES, the libraries to link against to use RAQM. +# RAQM_FOUND, If false, do not try to use RAQM. +# Also defined, but not for general use are +# RAQM_LIBRARY, where to find the RAQM library. + +# Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * The names of Kitware, Inc., the Insight Consortium, or the names of +# any consortium members, or of any contributors, may not be used to +# endorse or promote products derived from this software without +# specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +SET(RAQM_FOUND "NO") + +FIND_PATH(RAQM_INCLUDE_DIR raqm.h + /usr/local/include + /usr/include +) + +SET(RAQM_NAMES ${RAQM_NAMES} raqm) +FIND_LIBRARY(RAQM_LIBRARY + NAMES ${RAQM_NAMES} + PATH /usr/local/lib /usr/lib +) + +IF (RAQM_LIBRARY AND RAQM_INCLUDE_DIR) + SET(RAQM_FOUND "YES") + SET(HAVE_LIBRAQM 1) + SET(RAQM_LIBRARIES ${RAQM_LIBRARY}) +ENDIF (RAQM_LIBRARY AND RAQM_INCLUDE_DIR) + +IF (RAQM_FOUND) + IF (NOT RAQM_FIND_QUIETLY) + MESSAGE(STATUS "Find RAQM: ${RAQM_LIBRARY}") + ENDIF (NOT RAQM_FIND_QUIETLY) +ELSE (RAQM_FOUDN) + IF (RAQM_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find RAQM library") + ENDIF (RAQM_FIND_REQUIRED) +ENDIF (RAQM_FOUND) + +MARK_AS_ADVANCED(RAQM_INCLUDE_DIR RAQM_LIBRARY) diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindWEBP.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindWEBP.cmake index f7b89c3875d..1fc8bf8e592 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/FindWEBP.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/FindWEBP.cmake @@ -2,9 +2,8 @@ # # This module defines -# WEBP_INCLUDE_DIR, where to find png.h, etc. +# WEBP_INCLUDE_DIR, where to find decode.h, etc. # WEBP_LIBRARIES, the libraries to link against to use WEBP. -# WEBP_DEFINITIONS - You should ADD_DEFINITONS(${WEBP_DEFINITIONS}) before compiling code that includes png library files. # WEBP_FOUND, If false, do not try to use WEBP. # also defined, but not for general use are # WEBP_LIBRARY, where to find the WEBP library. @@ -17,16 +16,16 @@ # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. -# +# # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# +# # * The names of Kitware, Inc., the Insight Consortium, or the names of # any consortium members, or of any contributors, may not be used to # endorse or promote products derived from this software without # specific prior written permission. -# +# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/FindXPM.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/FindXPM.cmake index 9b59feaa10e..2cb0c221825 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/FindXPM.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/FindXPM.cmake @@ -2,9 +2,9 @@ # # This module defines -# XPM_INCLUDE_DIR, where to find png.h, etc. +# XPM_INCLUDE_DIR, where to find xpm.h, etc. # XPM_LIBRARIES, the libraries to link against to use XPM. -# XPM_DEFINITIONS - You should ADD_DEFINITONS(${XPM_DEFINITIONS}) before compiling code that includes png library files. +# XPM_DEFINITIONS - You should ADD_DEFINITONS(${XPM_DEFINITIONS}) before compiling code that includes xpm library files. # XPM_FOUND, If false, do not try to use XPM. # also defined, but not for general use are # XPM_LIBRARY, where to find the XPM library. @@ -17,16 +17,16 @@ # # * Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. -# +# # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# +# # * The names of Kitware, Inc., the Insight Consortium, or the names of # any consortium members, or of any contributors, may not be used to # endorse or promote products derived from this software without # specific prior written permission. -# +# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/TestForHighBitCharacters.c b/Build/source/libs/gd/libgd-src/cmake/modules/TestForHighBitCharacters.c index 2be51745ac8..0bc34d9cbc7 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/TestForHighBitCharacters.c +++ b/Build/source/libs/gd/libgd-src/cmake/modules/TestForHighBitCharacters.c @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) 2006 Alan W. Irwin * * This file is part of PLplot. diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/TestForHighBitCharacters.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/TestForHighBitCharacters.cmake index b1a1b908223..dabf6b221dc 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/TestForHighBitCharacters.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/TestForHighBitCharacters.cmake @@ -19,11 +19,11 @@ # Check if ctype.h macros work on characters with the high bit set. if(NOT DEFINED CMAKE_HIGH_BIT_CHARACTERS) - message(STATUS + message(STATUS "Check for whether ctype.h macros work on characters with the\n" " high bit set." ) - try_compile(CMAKE_HIGH_BIT_CHARACTERS + try_compile(CMAKE_HIGH_BIT_CHARACTERS ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/CMakeModules/TestForHighBitCharacters.c OUTPUT_VARIABLE OUTPUT) diff --git a/Build/source/libs/gd/libgd-src/cmake/modules/gd.cmake b/Build/source/libs/gd/libgd-src/cmake/modules/gd.cmake index bef21f94f36..963b4aeed59 100644 --- a/Build/source/libs/gd/libgd-src/cmake/modules/gd.cmake +++ b/Build/source/libs/gd/libgd-src/cmake/modules/gd.cmake @@ -7,7 +7,11 @@ MACRO(ADD_GD_TESTS) FOREACH(test_name ${TESTS_FILES}) SET(test_prog_name "test_${TEST_PREFIX}_${test_name}") add_executable(${test_prog_name} "${test_name}.c") - target_link_libraries (${test_prog_name} gdTest ${ARGV0}) + IF(WIN32) + target_link_libraries (${test_prog_name} gdTest ${ARGV0}) + ELSE(WIN32) + target_link_libraries (${test_prog_name} gdTest m ${ARGV0}) + ENDIF(WIN32) add_test(NAME ${test_prog_name} COMMAND ${test_prog_name}) ENDFOREACH(test_name) ENDMACRO(ADD_GD_TESTS) diff --git a/Build/source/libs/gd/libgd-src/config/Makefile.am b/Build/source/libs/gd/libgd-src/config/Makefile.am index 5c2db7069cf..122287ee57e 100644 --- a/Build/source/libs/gd/libgd-src/config/Makefile.am +++ b/Build/source/libs/gd/libgd-src/config/Makefile.am @@ -1,7 +1,5 @@ ## Process this file with automake to produce Makefile.in -*-Makefile-*- -EXTRA_DIST = gdlib-config.in gdlib.pc.in getver.pl - -bin_SCRIPTS = gdlib-config +EXTRA_DIST = gdlib.pc.cmake gdlib.pc.in getver.pl pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = gdlib.pc diff --git a/Build/source/libs/gd/libgd-src/config/gdlib-config.in b/Build/source/libs/gd/libgd-src/config/gdlib-config.in deleted file mode 100644 index 6e4e4944747..00000000000 --- a/Build/source/libs/gd/libgd-src/config/gdlib-config.in +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/sh -# -# Return information about the local GD library installation -# -# Modeled after pdflib-config - -echo "gdlib-config: warning: this script is deprecated;" \ - "please use the pkg-config file instead." >&2 - -# installation directories -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ -bindir=@bindir@ - -usage() -{ - cat <&2 -fi - -while test $# -gt 0; do - case "$1" in - -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - case $1 in - --libdir) - echo $libdir - ;; - --includedir) - echo $includedir - ;; - --version) - echo @VERSION@ - ;; - --majorversion) - echo @GDLIB_MAJOR@ - ;; - --minorversion) - echo @GDLIB_MINOR@ - ;; - --revision) - echo @GDLIB_REVISION@ - ;; - --ldflags) - echo @LDFLAGS@ - ;; - --libs) - echo -lgd @LIBS@ @LIBICONV@ - ;; - --cflags|--includes) - echo -I@includedir@ - ;; - --features) - echo @FEATURES@ - ;; - --all) - echo "GD library @VERSION@" - echo "includedir: $includedir" - echo "cflags: -I@includedir@" - echo "ldflags: @LDFLAGS@" - echo "libs: @LIBS@ @LIBICONV@" - echo "libdir: $libdir" - echo "features: @FEATURES@" - ;; - *) - usage 1 1>&2 - ;; - esac - shift -done diff --git a/Build/source/libs/gd/libgd-src/config/gdlib.pc.cmake b/Build/source/libs/gd/libgd-src/config/gdlib.pc.cmake new file mode 100644 index 00000000000..fb828882682 --- /dev/null +++ b/Build/source/libs/gd/libgd-src/config/gdlib.pc.cmake @@ -0,0 +1,9 @@ +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ + +Name: gd +Description: GD graphics library +Version: @GDLIB_VERSION@ +Cflags: -I${includedir} +Libs.private: @LIBGD_DEP_LIBS@ +Libs: -L${libdir} -lgd diff --git a/Build/source/libs/gd/libgd-src/config/getver.pl b/Build/source/libs/gd/libgd-src/config/getver.pl index 38389522fb9..52f1b5888f2 100644 --- a/Build/source/libs/gd/libgd-src/config/getver.pl +++ b/Build/source/libs/gd/libgd-src/config/getver.pl @@ -8,11 +8,14 @@ use strict; +use FindBin; + my $key = shift; my @version_parts = (); +my $dir = $FindBin::Bin; -open FH, ") { next unless m{version605b5d1778}; diff --git a/Build/source/libs/gd/libgd-src/configure.ac b/Build/source/libs/gd/libgd-src/configure.ac index 7663cccf06e..5d2805915af 100644 --- a/Build/source/libs/gd/libgd-src/configure.ac +++ b/Build/source/libs/gd/libgd-src/configure.ac @@ -18,46 +18,21 @@ AC_CONFIG_AUX_DIR(config) AC_CONFIG_MACRO_DIR([m4]) AC_CANONICAL_HOST -# This is not used anywhere. However, Makefile.netware searches -# through configure for these definitions to find the version numbers. -# (Assuming anyone still uses Netware, that should be changed to use -# gd.h via getver.pl instead.) -GDLIB_MAJOR=gd_MAJOR -GDLIB_MINOR=gd_MINOR -GDLIB_REVISION=gd_REVISION -GDLIB_EXTRA=gd_EXTRA -GDLIB_VERSION=gd_PKG_VERSION - -AC_SUBST(GDLIB_MAJOR) -AC_SUBST(GDLIB_MINOR) -AC_SUBST(GDLIB_REVISION) -AC_SUBST(GDLIB_EXTRA) -AC_SUBST(GDLIB_VERSION) - -# Dynamic library version information -# See http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info - -GDLIB_LT_CURRENT=3 -dnl This is the version where the soname (current above) changes. We use it -dnl to reset the revision base back to zero. It's a bit of a pain, but some -dnl systems restrict the revision range below to [0..255] (like OS X). -GDLIB_PREV_MAJOR=2 -GDLIB_PREV_MINOR=2 -dnl This isn't 100% correct, but it tends to be a close enough approximation -dnl for how we manage the codebase. It's rare to do a release that doesn't -dnl modify the library since this project is centered around the library. -GDLIB_LT_REVISION=$(( ((GDLIB_MAJOR - GDLIB_PREV_MAJOR) << 6) | ((GDLIB_MINOR - GDLIB_PREV_MINOR) << 3) | GDLIB_REVISION )) -GDLIB_LT_AGE=0 +dnl Keep the libtool version details in an external script so cmake can +dnl access the values too. +define([lt_gv], [config/getlib.sh ]$1) +m4_define([gd_LT_CURRENT], esyscmd(lt_gv(CURRENT))) +m4_define([gd_LT_REVISION], esyscmd(lt_gv(REVISION))) +m4_define([gd_LT_AGE], esyscmd(lt_gv(AGE))) + +GDLIB_LT_CURRENT=gd_LT_CURRENT +GDLIB_LT_REVISION=gd_LT_REVISION +GDLIB_LT_AGE=gd_LT_AGE + AC_SUBST(GDLIB_LT_CURRENT) AC_SUBST(GDLIB_LT_REVISION) AC_SUBST(GDLIB_LT_AGE) -#Expanded by tests later in this file. TBB 2.0.26 -#2.0.28: GIF is standard now. Doesn't depend on anything else, -#so we always build it. -FEATURES="GD_GIF GD_GIFANIM GD_OPENPOLYGON" -AC_SUBST(FEATURES) - AM_INIT_AUTOMAKE([1.11 foreign dist-xz -Wall -Werror subdir-objects]) AC_CONFIG_HEADERS([src/config.h:src/config.hin]) @@ -85,13 +60,8 @@ dnl Keep in sync with cmake/modules/AC_HEADER_STDC.cmake. AC_HEADER_STDC AC_CHECK_HEADERS_ONCE(m4_flatten([ dirent.h - errno.h inttypes.h - limits.h - stddef.h stdint.h - stdlib.h - string.h strings.h unistd.h sys/stat.h @@ -114,14 +84,12 @@ AC_CHECK_HEADERS(iconv.h, AC_MSG_RESULT(no))]) # Checks for typedefs, structures, and compiler characteristics. -#AC_C_CONST #AC_TYPE_SIZE_T # Checks for library functions. #AC_FUNC_ERROR_AT_LINE #AC_FUNC_MALLOC #AC_FUNC_REALLOC -#AC_FUNC_VPRINTF #AC_CHECK_FUNCS([floor memset sqrt strchr strdup strtol]) dnl do we need to specify -lm explicitly? @@ -130,6 +98,21 @@ AC_CHECK_FUNC(sin,,[AC_CHECK_LIB(m,sin)]) AX_PTHREAD() AX_OPENMP() +dnl We should default this to off in future releases. +AC_MSG_CHECKING([whether to support gd image formats]) +AC_ARG_ENABLE([gd-formats], + [AS_HELP_STRING([--disable-gd-formats], [Disable support for the legacy/testing gd image formats])], + [gd_enable_gd_formats=$enableval], + [gd_enable_gd_formats=yes]) +AC_MSG_RESULT([$gd_enable_gd_formats]) +if test "$gd_enable_gd_formats" = yes; then + gd_ac_value=1 +else + gd_ac_value=0 +fi +AC_DEFINE_UNQUOTED([ENABLE_GD_FORMATS], [$gd_ac_value], [Whether to support gd image formats]) +AM_CONDITIONAL([ENABLE_GD_FORMATS], test "$gd_enable_gd_formats" = yes) + dnl Helper macro for working with external libraries. dnl GD_LIB_CHECK([SYM], [FEATURE], [name], [...test...]) dnl $1 - upper case symbol @@ -173,7 +156,6 @@ m4_define([GD_LIB_CHECK], [dnl if test "$gd_found_lib" = "yes"; then AC_DEFINE([HAVE_$1], [1], [Define if you have $3]) - AS_VAR_APPEND([FEATURES], [" GD_$2"]) dnl Merge the flags into the main LIBS/CPPFLAGS. $1][_LIBS="$gd_lib_ldflags $][$1][_LIBS" $1][_CFLAGS="$gd_lib_cflags $][$1][_CFLAGS" @@ -233,6 +215,14 @@ if test "$gd_with_LIBFREETYPE" = "yes"; then AC_DEFINE([HAVE_FT2BUILD_H], [1], [Define if you have the ft2build.h header.]) fi +dnl Check for Raqm support. +GD_LIB_PKG_CHECK([LIBRAQM], [RAQM], [raqm], [raqm], [ + AC_CHECK_LIB([raqm], [raqm_create], [dnl + AS_VAR_APPEND([LIBRAQM_LIBS], [" -lraqm -lfreetype"]) + gd_found_lib=yes + ]) +]) + dnl Check for fontconfig support. GD_LIB_PKG_CHECK([LIBFONTCONFIG], [FONTCONFIG], [fontconfig], [fontconfig], [ AC_CHECK_LIB([fontconfig], [FcInit], [dnl @@ -242,7 +232,7 @@ GD_LIB_PKG_CHECK([LIBFONTCONFIG], [FONTCONFIG], [fontconfig], [fontconfig], [ ]) dnl Check for jpeg support. -GD_LIB_CHECK([LIBJPEG], [JPEG], [jpeg], [ +GD_LIB_PKG_CHECK([LIBJPEG], [JPEG], [jpeg], [libjpeg], [ AC_CHECK_LIB([jpeg], [jpeg_set_defaults], [dnl AS_VAR_APPEND([LIBJPEG_LIBS], [" -ljpeg"]) gd_found_lib=yes @@ -310,6 +300,7 @@ dnl report configuration AC_MSG_RESULT([ ** Configuration summary for $PACKAGE $VERSION: + Support for gd/gd2 images: $gd_enable_gd_formats Support for Zlib: $gd_with_LIBZ Support for PNG library: $gd_with_LIBPNG Support for JPEG library: $gd_with_LIBJPEG @@ -319,6 +310,7 @@ AC_MSG_RESULT([ Support for Fontconfig library: $gd_with_LIBFONTCONFIG Support for Xpm library: $gd_with_LIBXPM Support for liq library: $gd_with_LIBIMAGEQUANT + Support for complex text: $gd_with_LIBRAQM Support for pthreads: $ax_pthread_ok ]) @@ -326,7 +318,6 @@ AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile config/Makefile - config/gdlib-config config/gdlib.pc]) AC_OUTPUT diff --git a/Build/source/libs/gd/libgd-src/docs/INSTALL b/Build/source/libs/gd/libgd-src/docs/INSTALL index a1e89e18ad2..63bf0760eda 100644 --- a/Build/source/libs/gd/libgd-src/docs/INSTALL +++ b/Build/source/libs/gd/libgd-src/docs/INSTALL @@ -367,4 +367,3 @@ operates. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. - diff --git a/Build/source/libs/gd/libgd-src/docs/NEWS.historic b/Build/source/libs/gd/libgd-src/docs/NEWS.historic index 8bf38434add..057d33bdaeb 100644 --- a/Build/source/libs/gd/libgd-src/docs/NEWS.historic +++ b/Build/source/libs/gd/libgd-src/docs/NEWS.historic @@ -12,7 +12,7 @@ GD 2.0.36 (2007-11-xx) (Pierre, Mark Fisher) 88, Fixed support of PNG grayscale image with alpha channel (Pierre) 95, Added Netware builds script (Guenter) - 97, ease the creation of regexp to match symbols/functions in the sources + 97, ease the creation of regexp to match symbols/functions in the sources (Guenter) 100, spurious horizontal line drawn by gdImageFilledPolygon (Takeshi Abe) 101, _gdCreateFromFile() can crash if gdImageCreate fails (Mattias Bengtsson) @@ -37,17 +37,17 @@ GD 2.0.36 (2007-11-xx) 198, Fixed useFontConfig() to work as documented (Mojca Miklavec, Ethan Merritt) GD 2.0.35 (2007-06-21) -41, Fix valgrind error in gdImageFillTiled (Nuno Lopes) +41, Fix valgrind error in gdImageFillTiled (Nuno Lopes) 45, Add missing custom cmake macros (required for the tests suite) 51, Avoid signature buffer copy in gd_gif_c (Nuno Lopes) -48, Race condition in gdImageStringFTEx (Antony Dogval, Pierre +48, Race condition in gdImageStringFTEx (Antony Dogval, Pierre Scott MacVicar) 52, Reading GIF images is not thread safe (static usage in private functions) (Roman Nemecek, Nuno Lopes, Pierre) 60, GIF Local palette is read twice -66, GIF, Use local frame dimension when possible instead of the +66, GIF, Use local frame dimension when possible instead of the logical screen size (Pierre) -68, OpenVMS build support, see VMS/README.VMS for the details +68, OpenVMS build support, see VMS/README.VMS for the details (Alexey Chupahin) 70, GIF, do not try to use the global colmap if it does not exist (Nuno Lopes, Pierre) @@ -58,7 +58,7 @@ GD 2.0.35 (2007-06-21) (Pierre) 86, Possible infinite loop in libgd/gd_png.c, flaw found by Xavier Roche (Pierre) -87, Fixed segfault when an invalid color index is present in a GIF +87, Fixed segfault when an invalid color index is present in a GIF image data, reported by Elliot (Pierre) 89, Possible integer overflow in gdImageCreateTrueColor (Pierre) 94, gdImageCreateXbm can crash if gdImageCreate fails (Pierre) diff --git a/Build/source/libs/gd/libgd-src/docs/README.CMAKE b/Build/source/libs/gd/libgd-src/docs/README.CMAKE index 213a181d5d2..2be204560df 100644 --- a/Build/source/libs/gd/libgd-src/docs/README.CMAKE +++ b/Build/source/libs/gd/libgd-src/docs/README.CMAKE @@ -10,13 +10,17 @@ $ cmake -DBUILD_TEST=1 .. $ make The available options are: +ENABLE_GD_FORMATS=1 ENABLE_PNG=1 +ENABLE_LIQ=1 ENABLE_JPEG=1 ENABLE_TIFF=1 +ENABLE_ICONV=1 ENABLE_FREETYPE=1 ENABLE_FONTCONFIG=1 ENABLE_XPM=1 ENABLE_WEBP=1 +ENABLE_RAQM=1 You can optionally run our tests suite using: $ ctest . diff --git a/Build/source/libs/gd/libgd-src/docs/README.JPN b/Build/source/libs/gd/libgd-src/docs/README.JPN index 65db00b5534..db128aad6fb 100644 --- a/Build/source/libs/gd/libgd-src/docs/README.JPN +++ b/Build/source/libs/gd/libgd-src/docs/README.JPN @@ -1,39 +1,38 @@ - gd $B%i%$%V%i%j$GF|K\8lJ8;zNs$r;H$&>e$G$NCm0U;v9`(B + gd ライブラリで日本語文字列を使う上での注意事項 - $B;32l@5?M(B (ma@yama-ga.com) + 山賀正人 (ma@yama-ga.com) -gd-1.7.0 $B$+$i$O$=$N$^$^$G(B gdImageStringTTF() $B$KBP$7$F(B -SJIS encoding $B$N%U%)%s%H$,;HMQ$G$-$^$9!#(B +gd-1.7.0 からはそのままで gdImageStringTTF() に対して +SJIS encoding のフォントが使用できます。 - $B"((B Unicode encoding $B$N%U%)%s%H$KBP$7$F$OF|K\8lJ8;zNs$r(B UTF-8 $B$G(B - $B;XDj$9$l$PF|K\8l$,I=<($G$-$^$9!#(B + ※ Unicode encoding のフォントに対しては日本語文字列を UTF-8 で + 指定すれば日本語が表示できます。 -$B$D$^$j(B gdImageStringTTF() $B$G(B SJIS encoding $B$N%U%)%s%H$r;XDj$9$k$H(B -$BJ8;zNs$OL5>r7o$KF|K\8l$G$"$k$H2rl9g$O!"%3%s%Q%$%k;~$K(B -DJISX0208 $B$rIU$1$F%3%s%Q%$%k$7$F$/$@$5$$!#(B -$B$3$&$9$k$H(B gdImageStringTTF() $B$G;XDj$5$l$?J8;zNs$K(B ASCII $B0J30$NJ8;z$,$"$k$H(B -$BL5>r7o$KF|K\8lJ8;zNs$G$"$k$H2rl9g$O(B UTF-8 $B$NF|K\8lJ8;zNs$r07$($J$/$J$j$^$9$N$G!"(B -$B$4MxMQ$N4D6-Ey$K1~$8$F(B -DJISX0208 $B$rIU$1$k$+H]$+$r7h$a$F$/$@$5$$!#(B +ただしこの場合は UTF-8 の日本語文字列を扱えなくなりますので、 +ご利用の環境等に応じて -DJISX0208 を付けるか否かを決めてください。 -$B4A;z%3!<%I$NJQ49$K(B OS $BIUB0$N(B iconv() $B$r;H$&>l9g$O(B -CFLAGS $B$K(B -DHAVE_ICONV $B$rIU$1$F%3%s%Q%$%k$7$F$/$@$5$$!#(B -$B$3$N>l9g$K(B -DHAVE_STDARG_H $B$H(B -DHAVE_ERRNO_H $B$bIU$1$F$*$/$H(B -$B4A;z%3!<%IJQ49$N:]$K%(%i!<$,H/@8$7$?>l9g$KE,@Z$J%a%C%;!<%8$r(B -$BI=<($9$k$h$&$K$J$j$^$9!#(B +漢字コードの変換に OS 付属の iconv() を使う場合は +CFLAGS に -DHAVE_ICONV を付けてコンパイルしてください。 +漢字コード変換の際にエラーが発生した場合に適切なメッセージを +表示するようになります。 -$B!y(B EUC $B$+(B SJIS $B$+H=JL$G$-$J$+$C$?>l9g$N4A;z%3!<%I$NH=JLJ}K!(B +☆ EUC か SJIS か判別できなかった場合の漢字コードの判別方法 - (1) $B4D6-JQ?t(B LC_ALL, LC_CTYPE, LANG $B$r$3$N=gHV$G%A%'%C%/$9$k(B - (2) $B4D6-JQ?t$+$i$bH=JL$G$-$J$+$C$?>l9g$O(B UNIX $B$J$i$P(B EUC$B!"(B - Win32 $B$J$i$P(B SJIS $B$H8+$J$9(B + (1) 環境変数 LC_ALL, LC_CTYPE, LANG をこの順番でチェックする + (2) 環境変数からも判別できなかった場合は UNIX ならば EUC、 + Win32 ならば SJIS と見なす -$B%3%s%Q%$%k;~$K(B -DSJISPRE $B$rIU$1$F%3%s%Q%$%k$9$l$P!"(BUNIX $B$G$"$C$F$b(B -SJIS $B$rM%@h$9$k$h$&$K$J$j$^$9!#(B +コンパイル時に -DSJISPRE を付けてコンパイルすれば、UNIX であっても +SJIS を優先するようになります。 diff --git a/Build/source/libs/gd/libgd-src/docs/README.TESTING b/Build/source/libs/gd/libgd-src/docs/README.TESTING index 65ce58b833b..8a8a102586e 100644 --- a/Build/source/libs/gd/libgd-src/docs/README.TESTING +++ b/Build/source/libs/gd/libgd-src/docs/README.TESTING @@ -25,7 +25,7 @@ export CMAKE_LIBRARY_PATH=/path/to/the/gd/lib then call cmake using: -$ cmake -DUSE_EXT_GD=1 -DBUILD_TEST=1 +$ cmake -DUSE_EXT_GD=1 -DBUILD_TEST=1 $ make and finally: @@ -33,18 +33,18 @@ $ ctest . I will certainly add a nice CMake option to give prefix later. -What to do if tests fail on your platform and you use the last GD release? +What to do if tests fail on your platform and you use the last GD release? either from your favorite distributions or from http://www.libgd.org or git? -If you use a packaged version of the GD Library (installed from RPM, deb or +If you use a packaged version of the GD Library (installed from RPM, deb or ports, gentoo packages or any other packages format or distribution), please try to run the tests using the source releases available at: -http://www.libgd.org/Downloads +https://github.com/libgd/libgd/releases If the tests fail using our source release, please report a bug here: -http://bugs.libgd.org +https://github.com/libgd/libgd/issues You can attach the two files available in: @@ -65,6 +65,9 @@ timeout the default timeout is 5 seconds. Some test may Some features rely on floating point arithmetic and results may vary from one architecture to another. Examples: -on i686, gdimagerotate/bug00067 will fail. The result is still visually +On i686, gdimagerotate/bug00067 will fail. The result is still visually acceptable but i686 default arithmetic mode will generate different results. Adding "-msse -mfpmath=sse" to CFLAGS will solve this difference. +On s390, ppc64, and aarch64, gdimagecopyresampled/bug00201 will fail. +The result is still visually acceptable. +Adding "-ffp-contract=off" to CFLAGS will solve this difference. diff --git a/Build/source/libs/gd/libgd-src/docs/README.TXT b/Build/source/libs/gd/libgd-src/docs/README.TXT index 39725dd62c1..6a4d918267b 100644 --- a/Build/source/libs/gd/libgd-src/docs/README.TXT +++ b/Build/source/libs/gd/libgd-src/docs/README.TXT @@ -55,7 +55,7 @@ you can use the following command line options: --with-xpm=DIR Dto. for xpm library. - + --with-tiff=DIR Dto. for TIFF library. 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 deleted file mode 100644 index c7c0be192e8..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-c.html +++ /dev/null @@ -1,206 +0,0 @@ - - -/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 deleted file mode 100644 index 9e2e416a92e..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd-h.html +++ /dev/null @@ -1,173 +0,0 @@ - - -/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 deleted file mode 100644 index 487e43be691..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_bmp-c.html +++ /dev/null @@ -1,53 +0,0 @@ - - -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 deleted file mode 100644 index 7ebbf70b15d..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_map-c.html +++ /dev/null @@ -1,39 +0,0 @@ - - -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 deleted file mode 100644 index 90d69c66106..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_color_match-c.html +++ /dev/null @@ -1,39 +0,0 @@ - - -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 deleted file mode 100644 index 439f1bc44a1..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_crop-c.html +++ /dev/null @@ -1,52 +0,0 @@ - - -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 deleted file mode 100644 index 40208d43008..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filename-c.html +++ /dev/null @@ -1,47 +0,0 @@ - - -/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 deleted file mode 100644 index 3a09d8b5080..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_filter-c.html +++ /dev/null @@ -1,81 +0,0 @@ - - -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 deleted file mode 100644 index 70914c519e7..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd-c.html +++ /dev/null @@ -1,57 +0,0 @@ - - -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 deleted file mode 100644 index 475c807dd14..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gd2-c.html +++ /dev/null @@ -1,63 +0,0 @@ - - -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 deleted file mode 100644 index 8fcf1556eb8..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_in-c.html +++ /dev/null @@ -1,54 +0,0 @@ - - -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 deleted file mode 100644 index 9317873dccb..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_gif_out-c.html +++ /dev/null @@ -1,124 +0,0 @@ - - -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 deleted file mode 100644 index e510fc616ff..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_interpolation-c.html +++ /dev/null @@ -1,57 +0,0 @@ - - -/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 deleted file mode 100644 index 3e38bde0431..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io-h.html +++ /dev/null @@ -1,56 +0,0 @@ - - -/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 deleted file mode 100644 index 49f4a205f9a..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_dp-c.html +++ /dev/null @@ -1,47 +0,0 @@ - - -/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 deleted file mode 100644 index c7359e5f8be..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_file-c.html +++ /dev/null @@ -1,39 +0,0 @@ - - -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 deleted file mode 100644 index 5eb71e57b6e..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_io_ss-c.html +++ /dev/null @@ -1,39 +0,0 @@ - - -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 deleted file mode 100644 index 64b571c2488..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_jpeg-c.html +++ /dev/null @@ -1,83 +0,0 @@ - - -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 deleted file mode 100644 index db4e2792000..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_matrix-c.html +++ /dev/null @@ -1,65 +0,0 @@ - - -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 deleted file mode 100644 index ce237974559..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_nnquant-c.html +++ /dev/null @@ -1,39 +0,0 @@ - - -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 deleted file mode 100644 index c40669e3a49..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_png-c.html +++ /dev/null @@ -1,77 +0,0 @@ - - -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 deleted file mode 100644 index 1d9b38f1b3d..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_ss-c.html +++ /dev/null @@ -1,45 +0,0 @@ - - -/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 deleted file mode 100644 index 919b92b6f58..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tga-c.html +++ /dev/null @@ -1,47 +0,0 @@ - - -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 deleted file mode 100644 index 6d0a6a60b6c..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_tiff-c.html +++ /dev/null @@ -1,53 +0,0 @@ - - -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 deleted file mode 100644 index 6dc4cb423aa..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_topal-c.html +++ /dev/null @@ -1,49 +0,0 @@ - - -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 deleted file mode 100644 index a537859b2c8..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_transform-c.html +++ /dev/null @@ -1,47 +0,0 @@ - - -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 deleted file mode 100644 index a54d8dbbcc8..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_version-c.html +++ /dev/null @@ -1,51 +0,0 @@ - - -/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 deleted file mode 100644 index 49fd40b3eb6..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_wbmp-c.html +++ /dev/null @@ -1,59 +0,0 @@ - - -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 deleted file mode 100644 index 732d47cb060..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_webp-c.html +++ /dev/null @@ -1,57 +0,0 @@ - - -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 deleted file mode 100644 index 6680c1cb66b..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gd_xbm-c.html +++ /dev/null @@ -1,51 +0,0 @@ - - -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 deleted file mode 100644 index 9e1a01a5a64..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontg-c.html +++ /dev/null @@ -1,43 +0,0 @@ - - -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 deleted file mode 100644 index 630b33b37f6..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontl-c.html +++ /dev/null @@ -1,43 +0,0 @@ - - -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 deleted file mode 100644 index bdc04b248b8..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontmb-c.html +++ /dev/null @@ -1,43 +0,0 @@ - - -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 deleted file mode 100644 index 3cb17f370f0..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfonts-c.html +++ /dev/null @@ -1,43 +0,0 @@ - - -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 deleted file mode 100644 index fd6e07a8473..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfontt-c.html +++ /dev/null @@ -1,43 +0,0 @@ - - -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 deleted file mode 100644 index 8b590817e2e..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdft-c.html +++ /dev/null @@ -1,70 +0,0 @@ - - -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 deleted file mode 100644 index 0568dfa06a8..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdfx-c.html +++ /dev/null @@ -1,47 +0,0 @@ - - -/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 deleted file mode 100644 index 907dcb9f73d..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdhelpers-c.html +++ /dev/null @@ -1,39 +0,0 @@ - - -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 deleted file mode 100644 index 80ef49fc1a2..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/gdxpm-c.html +++ /dev/null @@ -1,49 +0,0 @@ - - -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 deleted file mode 100644 index 21ae1561d6d..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/license-txt.html +++ /dev/null @@ -1,39 +0,0 @@ - - -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 deleted file mode 100644 index ddafb0102aa..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/files/preamble-txt.html +++ /dev/null @@ -1,89 +0,0 @@ - - -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 deleted file mode 100644 index 015fd4f562a..00000000000 Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/edge_detect_quick.jpg and /dev/null 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 deleted file mode 100644 index b818fd56d74..00000000000 Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/emboss.jpg and /dev/null 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 deleted file mode 100644 index d3f9c1191c8..00000000000 Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/mean_removal.jpg and /dev/null 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 deleted file mode 100644 index e6987b8ee49..00000000000 Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/images/smooth.jpg and /dev/null 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 deleted file mode 100644 index d426aa1c9ae..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index.html +++ /dev/null @@ -1 +0,0 @@ - \ 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 deleted file mode 100644 index e9535f760a4..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Constants.html +++ /dev/null @@ -1,38 +0,0 @@ - - -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 deleted file mode 100644 index fd736d4db9e..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Files.html +++ /dev/null @@ -1,82 +0,0 @@ - - -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 deleted file mode 100644 index 4e2a359a3dd..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Functions.html +++ /dev/null @@ -1,34 +0,0 @@ - - -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 deleted file mode 100644 index 8eddc8fa1d4..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General.html +++ /dev/null @@ -1,54 +0,0 @@ - - -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 deleted file mode 100644 index 3e6d3eb4f3f..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General2.html +++ /dev/null @@ -1,34 +0,0 @@ - - -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 deleted file mode 100644 index c627ff0107e..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/General3.html +++ /dev/null @@ -1,70 +0,0 @@ - - -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 deleted file mode 100644 index ada5078fa5e..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Macros.html +++ /dev/null @@ -1,34 +0,0 @@ - - -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 deleted file mode 100644 index 96efb6765be..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/index/Types.html +++ /dev/null @@ -1,34 +0,0 @@ - - -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 deleted file mode 100644 index 3f42acde648..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/main.js +++ /dev/null @@ -1,841 +0,0 @@ -// 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 deleted file mode 100644 index fda4bf1eda7..00000000000 --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/prettify.js +++ /dev/null @@ -1,1526 +0,0 @@ - -// 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
    deleted file mode 100644
    index 6424cb22543..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/javascript/searchdata.js
    +++ /dev/null
    @@ -1,182 +0,0 @@
    -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
    deleted file mode 100644
    index 262a81cf028..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsG.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 20a148f56e9..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/ConstantsS.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 42f9d2e4399..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesB.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index ca704a1d332..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesC.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index e079370e1ea..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesF.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index d1fd7e00a48..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesG.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 3e1ecb8616d..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesI.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 320ae5c3c78..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesJ.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index eeab3ebe450..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesL.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 0d22cccd927..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesM.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index b9fc7e4432e..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesP.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 35205943b6d..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesS.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 2312a68c4f4..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesT.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 65a551d6c74..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesW.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index a1e46bc3837..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FilesX.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 6fbfa3b60b1..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/FunctionsG.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 27194a2e78f..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralA.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 42f9d2e4399..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralB.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 4089be019df..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralC.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index e63de3478cf..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralE.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 337a4cd75a0..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralF.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 2c327f59b40..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralG.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 2f96d88a016..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralI.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 320ae5c3c78..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralJ.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index ff6cbc23f1a..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralL.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index d7fed8f9547..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralM.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index d622d1c1f94..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralNumbers.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 5a150573565..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralO.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 87f2ca72f0f..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralP.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index a04dab5e9e5..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralS.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 5b1fb869119..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralT.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 65a551d6c74..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralW.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index a1e46bc3837..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/GeneralX.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 3d842103821..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/MacrosG.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 8c724966021..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/NoResults.html
    +++ /dev/null
    @@ -1,15 +0,0 @@
    -<!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
    deleted file mode 100644
    index 2890d106c3d..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/search/TypesG.html
    +++ /dev/null
    @@ -1,20 +0,0 @@
    -<!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
    deleted file mode 100644
    index 511703fc455..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/1.css
    +++ /dev/null
    @@ -1,828 +0,0 @@
    -/*
    -   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
    deleted file mode 100644
    index ff83144c574..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/2.css
    +++ /dev/null
    @@ -1,9 +0,0 @@
    -/*
    -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
    deleted file mode 100644
    index a672a94920c..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/html/styles/main.css
    +++ /dev/null
    @@ -1,2 +0,0 @@
    -@import URL("1.css");
    -@import URL("2.css");
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/nobgd.pl b/Build/source/libs/gd/libgd-src/docs/naturaldocs/nobgd.pl
    index e1c34624a81..b9186e09e25 100644
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/nobgd.pl
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/nobgd.pl
    @@ -55,4 +55,3 @@ sub unslurp {
         or die "Error writing file '$filename'\n";
       close ($fh);
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/docs/naturaldocs/preamble.txt b/Build/source/libs/gd/libgd-src/docs/naturaldocs/preamble.txt
    index ca2e43f9db1..5219d2997a4 100644
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/preamble.txt
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/preamble.txt
    @@ -62,14 +62,14 @@ program; it demonstrates additional features!)
     >  /* 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);  
    +>  black = gdImageColorAllocate(im, 0, 0, 0);
     >
     >  /* Allocate the color white (red, green and blue all maximum). */
    ->  white = gdImageColorAllocate(im, 255, 255, 255);  
    ->  
    +>  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);  
    +>  gdImageLine(im, 0, 0, 63, 63, white);
     >
     >  /* Open a file for writing. "wb" means "write binary", important
     >    under MSDOS, harmless under Unix. */
    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
    deleted file mode 100644
    index bc063b0abe6..00000000000
    Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ClassHierarchy.nd and /dev/null 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
    deleted file mode 100644
    index 012137a9505..00000000000
    Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ConfigFileInfo.nd and /dev/null 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
    deleted file mode 100644
    index d5b46fa0d8d..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/FileInfo.nd
    +++ /dev/null
    @@ -1,95 +0,0 @@
    -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
    deleted file mode 100644
    index ae5a61c4372..00000000000
    Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageFileInfo.nd and /dev/null 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
    deleted file mode 100644
    index 9d01775472c..00000000000
    Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/ImageReferenceTable.nd and /dev/null 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
    deleted file mode 100644
    index c616e09bd05..00000000000
    Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/IndexInfo.nd and /dev/null 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
    deleted file mode 100644
    index 3e93e26a1de..00000000000
    Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousMenuState.nd and /dev/null 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
    deleted file mode 100644
    index ad1a41d971e..00000000000
    Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/PreviousSettings.nd and /dev/null 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
    deleted file mode 100644
    index 4c16754501e..00000000000
    Binary files a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Data/SymbolTable.nd and /dev/null 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
    deleted file mode 100644
    index 42b197c21bc..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Languages.txt
    +++ /dev/null
    @@ -1,113 +0,0 @@
    -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 18438bd0b49..2ce9748cf5f 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
    @@ -27,22 +27,22 @@ Format: 1.52
     
     
     # --------------------------------------------------------------------------
    -# 
    +#
     # Cut and paste the lines below to change the order in which your files
     # appear on the menu.  Don't worry about adding or removing files, Natural
     # Docs will take care of that.
    -# 
    +#
     # You can further organize the menu by grouping the entries.  Add a
     # "Group: [name] {" line to start a group, and add a "}" to end it.
    -# 
    +#
     # You can add text and web links to the menu by adding "Text: [text]" and
     # "Link: [name] ([URL])" lines, respectively.
    -# 
    +#
     # The formatting and comments are auto-generated, so don't worry about
     # neatness when editing the file.  Natural Docs will clean it up the next
     # time it is run.  When working with groups, just deal with the braces and
     # forget about the indentation and comments.
    -# 
    +#
     # --------------------------------------------------------------------------
     
     
    @@ -106,4 +106,3 @@ Group: Index  {
        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
    deleted file mode 100644
    index 905270f0e23..00000000000
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/project/Topics.txt
    +++ /dev/null
    @@ -1,81 +0,0 @@
    -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/docs/naturaldocs/run_docs.sh b/Build/source/libs/gd/libgd-src/docs/naturaldocs/run_docs.sh
    index dce3072101f..950d66df17a 100755
    --- a/Build/source/libs/gd/libgd-src/docs/naturaldocs/run_docs.sh
    +++ b/Build/source/libs/gd/libgd-src/docs/naturaldocs/run_docs.sh
    @@ -74,5 +74,3 @@ $(nd) --rebuild --rebuild-output --documented-only \
     
     # And cleanup the temp files.
     rm -rf Data tmp
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/examples/CMakeLists.txt b/Build/source/libs/gd/libgd-src/examples/CMakeLists.txt
    index 869880fa958..120a8f3df4a 100644
    --- a/Build/source/libs/gd/libgd-src/examples/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/examples/CMakeLists.txt
    @@ -1,15 +1,19 @@
     include_directories (BEFORE "${GD_SOURCE_DIR}/src" "${CMAKE_BINARY_DIR}")
     
     SET(TESTS_FILES
    -  arc
    -  crop
    -  gif
    -  nnquant
    -  tgaread
    +	gif
     )
     
    +if (PNG_FOUND)
    +	LIST(APPEND TEST_FILES arc crop tgaread)
    +
    +	if (JPEG_FOUND)
    +		LIST(APPEND TESTS_FILES copyrotated flip nnquant)
    +	endif (JPEG_FOUND)
    +endif (PNG_FOUND)
    +
     if (JPEG_FOUND)
    -	LIST(APPEND TESTS_FILES copyrotated flip)
    +	LIST(APPEND TESTS_FILES resize)
     endif (JPEG_FOUND)
     
     if (TIFF_FOUND)
    @@ -27,11 +31,13 @@ FOREACH(test_name ${TESTS_FILES})
     	target_link_libraries (${test_name} ${GD_LINK_LIB})
     ENDFOREACH(test_name)
     
    -if(JPEG_FOUND)
    -  if(UNIX)
    -    target_link_libraries(copyrotated m)
    -  endif(UNIX)
    -endif(JPEG_FOUND)
    +# Add libraries *after* we've called add_executable on all the tests.
    +
    +if (PNG_FOUND AND JPEG_FOUND)
    +	if (UNIX)
    +		target_link_libraries(copyrotated m)
    +	endif (UNIX)
    +endif(PNG_FOUND AND JPEG_FOUND)
     
     if (WIN32 AND NOT MINGW AND NOT MSYS)
     	add_executable(windows WIN32 "windows.c")
    diff --git a/Build/source/libs/gd/libgd-src/examples/arc.c b/Build/source/libs/gd/libgd-src/examples/arc.c
    index 8e862833855..8b57c14701d 100644
    --- a/Build/source/libs/gd/libgd-src/examples/arc.c
    +++ b/Build/source/libs/gd/libgd-src/examples/arc.c
    @@ -1,4 +1,3 @@
    -/* $Id$ */
     #include "gd.h"
     #include <stdio.h>
     #include <stdlib.h>
    @@ -19,11 +18,7 @@ int main()
     		gdImageDestroy(im);
     		return 1;
     	}
    -#ifdef HAVE_LIBPNG
     	gdImagePng(im, fp);
    -#else
    -	printf("No PNG support. Cannot save image.\n");
    -#endif
     	fclose(fp);
     
     	gdImageDestroy(im);
    diff --git a/Build/source/libs/gd/libgd-src/examples/copyrotated.c b/Build/source/libs/gd/libgd-src/examples/copyrotated.c
    index 03e493d0ce0..9006c0c3e12 100644
    --- a/Build/source/libs/gd/libgd-src/examples/copyrotated.c
    +++ b/Build/source/libs/gd/libgd-src/examples/copyrotated.c
    @@ -1,4 +1,3 @@
    -/* $Id$ */
     #include "gd.h"
     #include <stdio.h>
     #include <stdlib.h>
    @@ -60,9 +59,9 @@ int main(int argc, char **arg)
     	/* to radian */
     	a2 = angle * .0174532925;
     
    -	new_width = ceil(cos(a2) * gdImageSX(im)) +
    +	new_width = fabs(ceil(cos(a2) * gdImageSX(im))) +
     	            fabs(sin(a2) * gdImageSY(im));
    -	new_height = ceil(cos(a2) * gdImageSY(im)) +
    +	new_height = fabs(ceil(cos(a2) * gdImageSY(im))) +
     	             fabs(sin(a2) * gdImageSX(im));
     
     
    diff --git a/Build/source/libs/gd/libgd-src/examples/crop.c b/Build/source/libs/gd/libgd-src/examples/crop.c
    index bafb6df849c..569807c1e2e 100644
    --- a/Build/source/libs/gd/libgd-src/examples/crop.c
    +++ b/Build/source/libs/gd/libgd-src/examples/crop.c
    @@ -1,5 +1,3 @@
    -/* $Id$ */
    -
     #include "gd.h"
     #include <stdio.h>
     #include <stdlib.h>
    @@ -12,11 +10,7 @@ void save_png(gdImagePtr im, const char *filename)
     		fprintf(stderr, "Can't save png image %s\n", filename);
     		return;
     	}
    -#ifdef HAVE_LIBPNG
     	gdImagePng(im, fp);
    -#else
    -	printf("No PNG support. Cannot save image.\n");
    -#endif
     	fclose(fp);
     }
     
    @@ -30,12 +24,7 @@ gdImagePtr read_png(const char *filename)
     		fprintf(stderr, "Can't read png image %s\n", filename);
     		return NULL;
     	}
    -#ifdef HAVE_LIBPNG
     	im = gdImageCreateFromPng(fp);
    -#else
    -	im = NULL;
    -	printf("No PNG support. Cannot read image.\n");
    -#endif
     	fclose(fp);
     	return im;
     }
    diff --git a/Build/source/libs/gd/libgd-src/examples/flip.c b/Build/source/libs/gd/libgd-src/examples/flip.c
    index 2399457b81b..35f92cf46ec 100644
    --- a/Build/source/libs/gd/libgd-src/examples/flip.c
    +++ b/Build/source/libs/gd/libgd-src/examples/flip.c
    @@ -1,4 +1,3 @@
    -/* $Id$ */
     #include "gd.h"
     #include <stdio.h>
     #include <stdlib.h>
    diff --git a/Build/source/libs/gd/libgd-src/examples/gif.c b/Build/source/libs/gd/libgd-src/examples/gif.c
    index d5103f086b3..ce99c3f6a7a 100644
    --- a/Build/source/libs/gd/libgd-src/examples/gif.c
    +++ b/Build/source/libs/gd/libgd-src/examples/gif.c
    @@ -49,4 +49,4 @@ int main(void)
     	fclose(out);
     
     	return 0;
    -}
    \ No newline at end of file
    +}
    diff --git a/Build/source/libs/gd/libgd-src/examples/nnquant.c b/Build/source/libs/gd/libgd-src/examples/nnquant.c
    index 33ed523266e..82e36729c6b 100644
    --- a/Build/source/libs/gd/libgd-src/examples/nnquant.c
    +++ b/Build/source/libs/gd/libgd-src/examples/nnquant.c
    @@ -1,5 +1,3 @@
    -/* $Id$ */
    -
     #include "gd.h"
     #include <stdio.h>
     #include <stdlib.h>
    @@ -12,17 +10,12 @@ void save_png(gdImagePtr im, const char *filename)
     		fprintf(stderr, "Can't save png image %s\n", filename);
     		return;
     	}
    -#ifdef HAVE_LIBPNG
     	gdImagePng(im, fp);
    -#else
    -	printf("No PNG support. Cannot save image.\n");
    -#endif
     	fclose(fp);
     }
     
     int main()
     {
    -#ifdef HAVE_JPEG
     	gdImagePtr im, im2;
     	FILE *fp;
     	char path[2048];
    @@ -56,9 +49,5 @@ int main()
     	save_png(im, "a_jquant_dither.png");
     
     	gdImageDestroy(im);
    -#else
    -	printf("JPEG support is required for this example. Please recompile GD with JPEG or change this example to use another format as input.");
    -	return 1;
    -#endif
     	return 0;
     }
    diff --git a/Build/source/libs/gd/libgd-src/examples/resize.c b/Build/source/libs/gd/libgd-src/examples/resize.c
    index 84543cd434b..8bc3ff7ddcc 100644
    --- a/Build/source/libs/gd/libgd-src/examples/resize.c
    +++ b/Build/source/libs/gd/libgd-src/examples/resize.c
    @@ -56,4 +56,4 @@ int main (int argc, char *argv[]) {
     	gdImageDestroy(out);
     
     	return 0;
    -}
    \ No newline at end of file
    +}
    diff --git a/Build/source/libs/gd/libgd-src/examples/tgaread.c b/Build/source/libs/gd/libgd-src/examples/tgaread.c
    index a8e080782b2..859f4d4254b 100644
    --- a/Build/source/libs/gd/libgd-src/examples/tgaread.c
    +++ b/Build/source/libs/gd/libgd-src/examples/tgaread.c
    @@ -1,4 +1,3 @@
    -/* $Id$ */
     /*
      * You can fetch a set of samples TIFF images here:
      * ftp://ftp.remotesensing.org/pub/libtiff/
    @@ -44,11 +43,7 @@ int main()
     			gdImageDestroy(im);
     			return 1;
     		}
    -#ifdef HAVE_LIBPNG
    -	gdImagePng(im, fp);
    -#else
    -	printf("No PNG support. Cannot save image.\n");
    -#endif
    +		gdImagePng(im, fp);
     		fclose(fp);
     		gdImageDestroy(im);
     	}
    diff --git a/Build/source/libs/gd/libgd-src/examples/tiffread.c b/Build/source/libs/gd/libgd-src/examples/tiffread.c
    index fe63ce00b2c..f1d78369be5 100644
    --- a/Build/source/libs/gd/libgd-src/examples/tiffread.c
    +++ b/Build/source/libs/gd/libgd-src/examples/tiffread.c
    @@ -1,4 +1,3 @@
    -/* $Id$ */
     /*
      * You can fetch a set of samples TIFF images here:
      * ftp://ftp.remotesensing.org/pub/libtiff/
    diff --git a/Build/source/libs/gd/libgd-src/examples/windows.c b/Build/source/libs/gd/libgd-src/examples/windows.c
    index 55976386f4e..d68d7a1eb5c 100644
    --- a/Build/source/libs/gd/libgd-src/examples/windows.c
    +++ b/Build/source/libs/gd/libgd-src/examples/windows.c
    @@ -3,7 +3,6 @@ Sample usage of GD on windows. This little program opens a window, fetch its DIB
     and assigns to a GD truecolor image.
     
     Thanks to Mateusz Loskot (http://mateusz.loskot.net) for the AttachBuffer function!
    -$Id$
     */
     #include <windows.h>
     #include <gd.h>
    diff --git a/Build/source/libs/gd/libgd-src/m4/ax_append_flag.m4 b/Build/source/libs/gd/libgd-src/m4/ax_append_flag.m4
    index 08f2e07ec61..dd6d8b61406 100644
    --- a/Build/source/libs/gd/libgd-src/m4/ax_append_flag.m4
    +++ b/Build/source/libs/gd/libgd-src/m4/ax_append_flag.m4
    @@ -1,5 +1,5 @@
     # ===========================================================================
    -#      http://www.gnu.org/software/autoconf-archive/ax_append_flag.html
    +#      https://www.gnu.org/software/autoconf-archive/ax_append_flag.html
     # ===========================================================================
     #
     # SYNOPSIS
    @@ -23,33 +23,12 @@
     #   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
     #   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
     #
    -#   This program is free software: you can redistribute it and/or modify it
    -#   under the terms of the GNU General Public License as published by the
    -#   Free Software Foundation, either version 3 of the License, or (at your
    -#   option) any later version.
    -#
    -#   This program is distributed in the hope that it will be useful, but
    -#   WITHOUT ANY WARRANTY; without even the implied warranty of
    -#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
    -#   Public License for more details.
    -#
    -#   You should have received a copy of the GNU General Public License along
    -#   with this program. If not, see <http://www.gnu.org/licenses/>.
    -#
    -#   As a special exception, the respective Autoconf Macro's copyright owner
    -#   gives unlimited permission to copy, distribute and modify the configure
    -#   scripts that are the output of Autoconf when processing the Macro. You
    -#   need not follow the terms of the GNU General Public License when using
    -#   or distributing such scripts, even though portions of the text of the
    -#   Macro appear in them. The GNU General Public License (GPL) does govern
    -#   all other use of the material that constitutes the Autoconf Macro.
    -#
    -#   This special exception to the GPL applies to versions of the Autoconf
    -#   Macro released by the Autoconf Archive. When you make and distribute a
    -#   modified version of the Autoconf Macro, you may extend this special
    -#   exception to the GPL to apply to your modified version as well.
    +#   Copying and distribution of this file, with or without modification, are
    +#   permitted in any medium without royalty provided the copyright notice
    +#   and this notice are preserved.  This file is offered as-is, without any
    +#   warranty.
     
    -#serial 6
    +#serial 8
     
     AC_DEFUN([AX_APPEND_FLAG],
     [dnl
    diff --git a/Build/source/libs/gd/libgd-src/m4/ax_cflags_warn_all.m4 b/Build/source/libs/gd/libgd-src/m4/ax_cflags_warn_all.m4
    index 1f0779928aa..094577e4589 100644
    --- a/Build/source/libs/gd/libgd-src/m4/ax_cflags_warn_all.m4
    +++ b/Build/source/libs/gd/libgd-src/m4/ax_cflags_warn_all.m4
    @@ -1,5 +1,5 @@
     # ===========================================================================
    -#    http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html
    +#    https://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html
     # ===========================================================================
     #
     # SYNOPSIS
    @@ -43,7 +43,7 @@
     #   Public License for more details.
     #
     #   You should have received a copy of the GNU General Public License along
    -#   with this program. If not, see <http://www.gnu.org/licenses/>.
    +#   with this program. If not, see <https://www.gnu.org/licenses/>.
     #
     #   As a special exception, the respective Autoconf Macro's copyright owner
     #   gives unlimited permission to copy, distribute and modify the configure
    @@ -58,7 +58,7 @@
     #   modified version of the Autoconf Macro, you may extend this special
     #   exception to the GPL to apply to your modified version as well.
     
    -#serial 15
    +#serial 16
     
     AC_DEFUN([AX_FLAGS_WARN_ALL],[dnl
     AS_VAR_PUSHDEF([FLAGS],[_AC_LANG_PREFIX[]FLAGS])dnl
    diff --git a/Build/source/libs/gd/libgd-src/m4/ax_pthread.m4 b/Build/source/libs/gd/libgd-src/m4/ax_pthread.m4
    index 4c4051ea376..5fbf9fe0d68 100644
    --- a/Build/source/libs/gd/libgd-src/m4/ax_pthread.m4
    +++ b/Build/source/libs/gd/libgd-src/m4/ax_pthread.m4
    @@ -1,5 +1,5 @@
     # ===========================================================================
    -#        http://www.gnu.org/software/autoconf-archive/ax_pthread.html
    +#        https://www.gnu.org/software/autoconf-archive/ax_pthread.html
     # ===========================================================================
     #
     # SYNOPSIS
    @@ -67,7 +67,7 @@
     #   Public License for more details.
     #
     #   You should have received a copy of the GNU General Public License along
    -#   with this program. If not, see <http://www.gnu.org/licenses/>.
    +#   with this program. If not, see <https://www.gnu.org/licenses/>.
     #
     #   As a special exception, the respective Autoconf Macro's copyright owner
     #   gives unlimited permission to copy, distribute and modify the configure
    @@ -82,7 +82,7 @@
     #   modified version of the Autoconf Macro, you may extend this special
     #   exception to the GPL to apply to your modified version as well.
     
    -#serial 23
    +#serial 24
     
     AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
     AC_DEFUN([AX_PTHREAD], [
    diff --git a/Build/source/libs/gd/libgd-src/m4/ax_require_defined.m4 b/Build/source/libs/gd/libgd-src/m4/ax_require_defined.m4
    index cae11112d90..17c3eab7daf 100644
    --- a/Build/source/libs/gd/libgd-src/m4/ax_require_defined.m4
    +++ b/Build/source/libs/gd/libgd-src/m4/ax_require_defined.m4
    @@ -1,5 +1,5 @@
     # ===========================================================================
    -#    http://www.gnu.org/software/autoconf-archive/ax_require_defined.html
    +#    https://www.gnu.org/software/autoconf-archive/ax_require_defined.html
     # ===========================================================================
     #
     # SYNOPSIS
    @@ -30,7 +30,7 @@
     #   and this notice are preserved. This file is offered as-is, without any
     #   warranty.
     
    -#serial 1
    +#serial 2
     
     AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
       m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
    diff --git a/Build/source/libs/gd/libgd-src/netware/Makefile.netware b/Build/source/libs/gd/libgd-src/netware/Makefile.netware
    deleted file mode 100644
    index 3da624349f5..00000000000
    --- a/Build/source/libs/gd/libgd-src/netware/Makefile.netware
    +++ /dev/null
    @@ -1,553 +0,0 @@
    -#################################################################
    -#
    -## Makefile for building libgd.nlm (NetWare version - gnu make)
    -## Use: make -f Makefile
    -##
    -## Comments to: Guenter Knauf <eflash@gmx.net>
    -##
    -## $Id$
    -#
    -#################################################################
    -
    -# Edit the path below to point to the base of your Novell NDK.
    -ifndef NDKBASE
    -NDKBASE	= c:/novell
    -endif
    -
    -# Base for the lib sources
    -ifndef LIBBASE
    -LIBBASE	= ../..
    -endif
    -# All library code is statically linked to avoid problems with other lib NLMs. 
    -
    -# Edit the path below to point to your libpng sources or set environment var.
    -ifndef LIBPNG
    -LIBPNG	= $(LIBBASE)/libpng-1.2.16
    -endif
    -# Edit the path below to point to your libpng sources or set environment var.
    -ifndef LIBJPEG
    -LIBJPEG	= $(LIBBASE)/jpeg-6b
    -endif
    -# Edit the path below to point to your freetype sources or set environment var.
    -ifndef LIBFT2
    -LIBFT2	= $(LIBBASE)/freetype-2.3.4
    -endif
    -# Edit the path below to point to your zlib sources or set environment var.
    -ifndef ZLIBSDK
    -ZLIBSDK	= $(LIBBASE)/zlib-1.2.3
    -endif
    -
    -LIBGD = ..
    -
    -ifndef INSTDIR
    -INSTDIR	= libgd-$(LIBGD_VERSION_STR)-bin-nw
    -endif
    -
    -# Edit the vars below to change NLM target settings.
    -TARGET  = libgd
    -COPYR	= Copyright (C) 1996-2007 Boutell.Com, Inc.
    -WWW	= http://www.libgd.org/
    -DESCR	= libgd $(LIBGD_VERSION_STR) - $(WWW)
    -MTSAFE	= YES
    -STACK	= 64000
    -SCREEN	= none
    -EXPORTS	= @$(TARGET).imp
    -EPREFIX	= LIBGD
    -
    -# Edit the var below to point to your lib architecture.
    -ifndef LIBARCH
    -LIBARCH = LIBC
    -endif
    -
    -# must be equal to DEBUG or NDEBUG
    -DB	= NDEBUG
    -# DB	= DEBUG
    -# Optimization: -O<n> or debugging: -g
    -ifeq ($(DB),NDEBUG)
    -	OPT	= -O2
    -	OBJDIR	= release
    -else
    -	OPT	= -g
    -	OBJDIR	= debug
    -endif
    -
    -# Include the version info retrieved from xml2ver.h
    --include $(OBJDIR)/version.inc
    -
    -# The following line defines your compiler.
    -ifdef METROWERKS
    -	CC = mwccnlm
    -else
    -	CC = gcc
    -endif
    -# http://www.gknw.net/development/prgtools/awk.zip
    -AWK	= awk
    -YACC	= bison -y
    -CP	= cp -afv
    -# RM	= rm -f
    -# if you want to mark the target as MTSAFE you will need a tool for
    -# generating the xdc data for the linker; here's a minimal tool:
    -# http://www.gknw.net/development/prgtools/mkxdc.zip
    -MPKXDC	= mkxdc
    -PATCH	= patch
    -PERLRUN	= perl
    -
    -# Global flags for all compilers
    -CFLAGS	= $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
    -#CFLAGS	+= -DHAVE_LIBPNG=1 -DHAVE_LIBJPEG=1
    -#CFLAGS	+= -DHAVE_LIBFREETYPE=1 -DHAVE_FT2BUILD_H=1
    -#CFLAGS	+= -DHAVE_LIBZ=1
    -
    -ifeq ($(CC),mwccnlm)
    -LD	= mwldnlm
    -LDFLAGS	= -nostdlib $(PRELUDE) $(OBJL) $(LDLIBS) -o $@ -commandfile
    -AR	= mwldnlm
    -ARFLAGS	= -type library -w nocmdline $(OBJS) -o
    -LIBEXT	= lib
    -CFLAGS	+= -msgstyle gcc -gccinc -inline off -opt nointrinsics -proc 586
    -CFLAGS	+= -relax_pointers
    -#CFLAGS	+= -w on
    -ifeq ($(LIBARCH),LIBC)
    -	PRELUDE = $(SDK_LIBC)/imports/libcpre.o
    -	CFLAGS += -align 4
    -else
    -	PRELUDE = "$(METROWERKS)/Novell Support/libraries/runtime/prelude.obj"
    -#	CFLAGS += -include "$(METROWERKS)/Novell Support/headers/nlm_prefix.h"
    -	CFLAGS += -align 1
    -endif
    -else
    -LD	= nlmconv
    -LDFLAGS	= -T
    -AR	= ar
    -ARFLAGS	= -cq
    -LIBEXT	= a
    -CFLAGS	+= -fno-builtin -fpcc-struct-return -fno-strict-aliasing
    -CFLAGS	+= -Wall -Wno-unused -Wno-main # -pedantic
    -ifeq ($(LIBARCH),LIBC)
    -	PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o
    -else
    -	PRELUDE = $(SDK_CLIB)/imports/clibpre.gcc.o
    -	CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
    -endif
    -endif
    -
    -NDK_ROOT = $(NDKBASE)/ndk
    -SDK_CLIB = $(NDK_ROOT)/nwsdk
    -SDK_LIBC = $(NDK_ROOT)/libc
    -
    -INCLUDES = -I. -I$(LIBGD) -I$(LIBPNG) -I$(LIBJPEG) -I$(LIBFT2)/include -I$(ZLIBSDK) 
    -
    -ifeq ($(LIBARCH),LIBC)
    -	INCLUDES += -I$(SDK_LIBC)/include
    -	# INCLUDES += -I$(SDK_LIBC)/include/nks
    -	CFLAGS += -D_POSIX_SOURCE
    -	# CFLAGS += -D__ANSIC__
    -else
    -	INCLUDES += -I$(SDK_CLIB)/include/nlm
    -	# INCLUDES += -I$(SDK_CLIB)/include
    -	# INCLUDES += -I$(SDK_CLIB)/include/nlm/obsolete
    -endif
    -CFLAGS	+= $(INCLUDES)
    -
    -ifeq ($(MTSAFE),YES)
    -	XDCOPT = -n
    -endif
    -ifeq ($(MTSAFE),NO)
    -	XDCOPT = -u
    -endif
    -ifdef XDCOPT
    -	XDCDATA = $(OBJDIR)/$(TARGET).xdc
    -endif
    -
    -ifeq ($(findstring linux,$(OSTYPE)),linux)
    -DL	= '
    -#-include $(NDKBASE)/nlmconv/ncpfs.inc
    -endif
    -
    -GDLIBOBJS	= \
    -	$(OBJDIR)/gd.o \
    -	$(OBJDIR)/gd_gd.o \
    -	$(OBJDIR)/gd_gd2.o \
    -	$(OBJDIR)/gd_gif_in.o \
    -	$(OBJDIR)/gd_gif_out.o \
    -	$(OBJDIR)/gd_io.o \
    -	$(OBJDIR)/gd_io_dp.o \
    -	$(OBJDIR)/gd_io_file.o \
    -	$(OBJDIR)/gd_io_ss.o \
    -	$(OBJDIR)/gd_jpeg.o \
    -	$(OBJDIR)/gd_png.o \
    -	$(OBJDIR)/gd_ss.o \
    -	$(OBJDIR)/gd_topal.o \
    -	$(OBJDIR)/gd_wbmp.o \
    -	$(OBJDIR)/gdcache.o \
    -	$(OBJDIR)/gdfontg.o \
    -	$(OBJDIR)/gdfontl.o \
    -	$(OBJDIR)/gdfontmb.o \
    -	$(OBJDIR)/gdfonts.o \
    -	$(OBJDIR)/gdfontt.o \
    -	$(OBJDIR)/gdft.o \
    -	$(OBJDIR)/gdfx.o \
    -	$(OBJDIR)/gdhelpers.o \
    -	$(OBJDIR)/gdkanji.o \
    -	$(OBJDIR)/gdtables.o \
    -	$(OBJDIR)/gdxpm.o \
    -	$(OBJDIR)/wbmp.o \
    -	$(EOLIST)
    -ifeq "$(wildcard $(LIBGD)/gd_security.c)" "$(LIBGD)/gd_security.c"
    -GDLIBOBJS	+= \
    -	$(OBJDIR)/gd_security.o \
    -	$(EOLIST)
    -endif
    -
    -PNGLIBOBJS	= \
    -	$(OBJDIR)/png.o \
    -	$(OBJDIR)/pngerror.o \
    -	$(OBJDIR)/pngget.o \
    -	$(OBJDIR)/pngmem.o \
    -	$(OBJDIR)/pngpread.o \
    -	$(OBJDIR)/pngread.o \
    -	$(OBJDIR)/pngrio.o \
    -	$(OBJDIR)/pngrtran.o \
    -	$(OBJDIR)/pngrutil.o \
    -	$(OBJDIR)/pngset.o \
    -	$(OBJDIR)/pngtrans.o \
    -	$(OBJDIR)/pngwio.o \
    -	$(OBJDIR)/pngwrite.o \
    -	$(OBJDIR)/pngwtran.o \
    -	$(OBJDIR)/pngwutil.o \
    -	$(EOLIST)
    -ifeq "$(wildcard $(LIBPNG)/pnggccrd.c)" "$(LIBPNG)/pnggccrd.c"
    -PNGLIBOBJS	+= \
    -	$(OBJDIR)/pnggccrd.o \
    -	$(OBJDIR)/pngvcrd.o \
    -	$(EOLIST)
    -endif
    -
    -OBJ_JPG	= $(OBJDIR)
    -JPGLIBOBJS = \
    -	$(OBJ_JPG)/jcapimin.o \
    -	$(OBJ_JPG)/jcapistd.o \
    -	$(OBJ_JPG)/jccoefct.o \
    -	$(OBJ_JPG)/jccolor.o \
    -	$(OBJ_JPG)/jcdctmgr.o \
    -	$(OBJ_JPG)/jchuff.o \
    -	$(OBJ_JPG)/jcinit.o \
    -	$(OBJ_JPG)/jcmainct.o \
    -	$(OBJ_JPG)/jcmarker.o \
    -	$(OBJ_JPG)/jcmaster.o \
    -	$(OBJ_JPG)/jcomapi.o \
    -	$(OBJ_JPG)/jcparam.o \
    -	$(OBJ_JPG)/jcphuff.o \
    -	$(OBJ_JPG)/jcprepct.o \
    -	$(OBJ_JPG)/jcsample.o \
    -	$(OBJ_JPG)/jctrans.o \
    -	$(OBJ_JPG)/jdapimin.o \
    -	$(OBJ_JPG)/jdapistd.o \
    -	$(OBJ_JPG)/jdatadst.o \
    -	$(OBJ_JPG)/jdatasrc.o \
    -	$(OBJ_JPG)/jdcoefct.o \
    -	$(OBJ_JPG)/jdcolor.o \
    -	$(OBJ_JPG)/jddctmgr.o \
    -	$(OBJ_JPG)/jdhuff.o \
    -	$(OBJ_JPG)/jdinput.o \
    -	$(OBJ_JPG)/jdmainct.o \
    -	$(OBJ_JPG)/jdmarker.o \
    -	$(OBJ_JPG)/jdmaster.o \
    -	$(OBJ_JPG)/jdmerge.o \
    -	$(OBJ_JPG)/jdphuff.o \
    -	$(OBJ_JPG)/jdpostct.o \
    -	$(OBJ_JPG)/jdsample.o \
    -	$(OBJ_JPG)/jdtrans.o \
    -	$(OBJ_JPG)/jerror.o \
    -	$(OBJ_JPG)/jfdctflt.o \
    -	$(OBJ_JPG)/jfdctfst.o \
    -	$(OBJ_JPG)/jfdctint.o \
    -	$(OBJ_JPG)/jidctflt.o \
    -	$(OBJ_JPG)/jidctfst.o \
    -	$(OBJ_JPG)/jidctint.o \
    -	$(OBJ_JPG)/jidctred.o \
    -	$(OBJ_JPG)/jquant1.o \
    -	$(OBJ_JPG)/jquant2.o \
    -	$(OBJ_JPG)/jutils.o \
    -	$(OBJ_JPG)/jmemmgr.o \
    -	$(OBJ_JPG)/jmemansi.o \
    -	$(EOLIST)
    -
    -LIBFT2OBJS = \
    -	$(OBJ_FT2)/autohint.o \
    -	$(OBJ_FT2)/bdf.o \
    -	$(OBJ_FT2)/cff.o \
    -	$(OBJ_FT2)/ftbase.o \
    -	$(OBJ_FT2)/ftcache.o \
    -	$(OBJ_FT2)/ftglyph.o \
    -	$(OBJ_FT2)/ftinit.o \
    -	$(OBJ_FT2)/ftmm.o \
    -	$(OBJ_FT2)/ftsystem.o \
    -	$(OBJ_FT2)/pcf.o \
    -	$(OBJ_FT2)/pfr.o \
    -	$(OBJ_FT2)/psaux.o \
    -	$(OBJ_FT2)/pshinter.o \
    -	$(OBJ_FT2)/psmodule.o \
    -	$(OBJ_FT2)/raster.o \
    -	$(OBJ_FT2)/sfnt.o \
    -	$(OBJ_FT2)/smooth.o \
    -	$(OBJ_FT2)/truetype.o \
    -	$(OBJ_FT2)/type1.o \
    -	$(OBJ_FT2)/type1cid.o \
    -	$(OBJ_FT2)/type42.o \
    -	$(OBJ_FT2)/winfnt.o \
    -	$(OBJ_FT2)/infutil.o \
    -	$(OBJ_FT2)/ftgzip.o \
    -	$(OBJ_FT2)/ftlzw.o \
    -	$(OBJ_FT2)/ftpfr.o \
    -	$(OBJ_FT2)/ftstroke.o \
    -	$(OBJ_FT2)/ftsynth.o \
    -	$(OBJ_FT2)/fttype1.o \
    -	$(OBJ_FT2)/ftwinfnt.o \
    -	$(OBJ_FT2)/ftxf86.o \
    -	$(OBJ_FT2)/ftbbox.o \
    -	$(EOLIST)
    -
    -ZLIBOBJS	= \
    -	$(OBJDIR)/adler32.o \
    -	$(OBJDIR)/compress.o \
    -	$(OBJDIR)/crc32.o \
    -	$(OBJDIR)/deflate.o \
    -	$(OBJDIR)/inflate.o \
    -	$(OBJDIR)/inffast.o \
    -	$(OBJDIR)/inftrees.o \
    -	$(OBJDIR)/trees.o \
    -	$(OBJDIR)/uncompr.o \
    -	$(OBJDIR)/zutil.o \
    -	$(EOLIST)
    -ifeq "$(wildcard $(ZLIBSDK)/infblock.c)" "$(ZLIBSDK)/infblock.c"
    -ZLIBOBJS	+= \
    -	$(OBJDIR)/infblock.o \
    -	$(OBJDIR)/infcodes.o \
    -	$(OBJDIR)/infutil.o \
    -	$(EOLIST)
    -endif
    -
    -LDLIBS	+= $(LIBFT2)/builds/netware/LIBC/libft2.$(LIBEXT)
    -
    -OBJS	:= $(GDLIBOBJS) $(PNGLIBOBJS) $(JPGLIBOBJS) $(ZLIBOBJS)
    -
    -OBJL	= $(OBJS) $(OBJDIR)/nwlibc.o
    -
    -vpath %.c . $(LIBGD) $(LIBPNG) $(LIBJPEG) $(ZLIBSDK)
    -
    -.PHONY: all prebuild dist install clean clean-all test-cmds help
    -
    -all: lib nlm
    -
    -nlm: prebuild $(TARGET).nlm
    -
    -lib: prebuild $(TARGET).$(LIBEXT)
    -
    -prebuild: $(OBJDIR) $(OBJDIR)/version.inc config.h
    -
    -$(OBJDIR)/%.o: %.c
    -#	@echo Compiling $<
    -	$(CC) $(CFLAGS) -c $< -o $@
    -
    -$(OBJDIR)/version.inc: ../configure $(OBJDIR)
    -	@echo Creating $@
    -	@$(AWK) -f get_ver.awk $< > $@  # TODO: get version info from src/gd.h
    -
    -dist: all
    -	-$(RM) -r $(OBJDIR)*
    -
    -install: $(INSTDIR) all
    -	@$(CP) $(TARGET).nlm $(INSTDIR)
    -	@$(CP) $(TARGET).$(LIBEXT) $(INSTDIR)
    -	@$(CP) ../CHANGES $(INSTDIR)
    -	@$(CP) ../COPYING $(INSTDIR)
    -	@$(CP) ../README $(INSTDIR)
    -	@$(CP) ../RELEASE-NOTES $(INSTDIR)
    -
    -clean:
    -	-$(RM) config.h
    -	-$(RM) -r $(OBJDIR)*
    -	-$(RM) $(TARGET).nlm $(TARGET).$(LIBEXT) $(TARGET).imp
    -
    -dist-clean:
    -	-$(RM) config.h
    -	-$(RM) -r $(OBJDIR)*
    -
    -clean-all: clean
    -	-$(MAKE) -C tests -f Makefile clean
    -
    -test-cmds:
    -	-$(MAKE) -C tests -f Makefile
    -
    -$(INSTDIR):
    -	@mkdir $(INSTDIR)
    -
    -$(OBJDIR):
    -	@mkdir $(OBJDIR)
    -
    -$(TARGET).$(LIBEXT): $(OBJS)
    -	@echo Creating $@
    -	@-$(RM) $@
    -	@$(AR) $(ARFLAGS) $@ $^
    -
    -$(TARGET).nlm: $(OBJDIR)/$(TARGET).def $(TARGET).imp $(OBJL) $(XDCDATA)
    -	@echo Linking $@
    -	@-$(RM) $@
    -	@$(LD) $(LDFLAGS) $<
    -
    -$(OBJDIR)/%.xdc: Makefile
    -	@echo Creating $@
    -	@$(MPKXDC) $(XDCOPT) $@
    -
    -$(OBJDIR)/%.def: Makefile
    -	@echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
    -	@echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
    -	@echo $(DL)# All your changes will be lost!!$(DL) >> $@
    -	@echo $(DL)#$(DL) >> $@
    -	@echo $(DL)copyright "$(COPYR)"$(DL) >> $@
    -	@echo $(DL)description "$(DESCR)"$(DL) >> $@
    -	@echo $(DL)version $(LIBGD_VERSION)$(DL) >> $@
    -ifdef NLMTYPE
    -	@echo $(DL)type $(NLMTYPE)$(DL) >> $@
    -endif
    -ifdef STACK
    -	@echo $(DL)stack $(STACK)$(DL) >> $@
    -endif
    -ifdef SCREEN
    -	@echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
    -else
    -	@echo $(DL)screenname "DEFAULT"$(DL) >> $@
    -endif
    -ifeq ($(DB),DEBUG)
    -	@echo $(DL)debug$(DL) >> $@
    -endif
    -	@echo $(DL)threadname "$(TARGET)"$(DL) >> $@
    -ifdef XDCDATA
    -	@echo $(DL)xdcdata $(XDCDATA)$(DL) >> $@
    -endif
    -	@echo $(DL)flag_on 64$(DL) >> $@
    -ifeq ($(LIBARCH),CLIB)
    -	@echo $(DL)start _Prelude$(DL) >> $@
    -	@echo $(DL)exit _Stop$(DL) >> $@
    -	@echo $(DL)import @$(SDK_CLIB)/imports/clib.imp$(DL) >> $@
    -	@echo $(DL)import @$(SDK_CLIB)/imports/threads.imp$(DL) >> $@
    -	@echo $(DL)import @$(SDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
    -	@echo $(DL)import @$(SDK_CLIB)/imports/socklib.imp$(DL) >> $@
    -	@echo $(DL)module clib$(DL) >> $@
    -else
    -	@echo $(DL)pseudopreemption$(DL) >> $@
    -	@echo $(DL)start _LibCPrelude$(DL) >> $@
    -	@echo $(DL)exit _LibCPostlude$(DL) >> $@
    -	@echo $(DL)check _LibCCheckUnload$(DL) >> $@
    -	@echo $(DL)import @$(SDK_LIBC)/imports/libc.imp$(DL) >> $@
    -	@echo $(DL)import @$(SDK_LIBC)/imports/netware.imp$(DL) >> $@
    -	@echo $(DL)module libc$(DL) >> $@
    -endif
    -ifdef MODULES
    -	@echo $(DL)module $(MODULES)$(DL) >> $@
    -endif
    -ifdef IMPORTS
    -	@echo $(DL)import $(IMPORTS)$(DL) >> $@
    -endif
    -ifdef EXPORTS
    -	@echo $(DL)export $(EXPORTS)$(DL) >> $@
    -endif
    -ifeq ($(LD),nlmconv)
    -	@echo $(DL)input $(OBJL)$(DL) >> $@
    -	@echo $(DL)input $(PRELUDE)$(DL) >> $@
    -ifdef LDLIBS
    -	@echo $(DL)input $(LDLIBS)$(DL) >> $@
    -endif
    -	@echo $(DL)output $(TARGET).nlm$(DL) >> $@
    -endif
    -
    -config.h: Makefile
    -	@echo Creating $@
    -	@echo $(DL)/* $@ for NetWare target.$(DL) > $@
    -	@echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
    -	@echo $(DL)** All your changes will be lost!!$(DL) >> $@
    -	@echo $(DL)*/$(DL) >> $@
    -	@echo $(DL)#define OS "i586-pc-NetWare"$(DL) >> $@
    -	@echo $(DL)#define VERSION "$(LIBGD_VERSION_STR)"$(DL) >> $@
    -	@echo $(DL)#define PACKAGE_BUGREPORT "http://bugs.libgd.org/"$(DL) >> $@
    -	@echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_DLFCN_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_DLOPEN 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_ERR_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_ERRNO_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_FCNTL_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_FIONBIO 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_GETHOSTBYADDR 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_GETTIMEOFDAY 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_INET_ADDR 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_INET_NTOA 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_INET_PTON 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_INTTYPES_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_LIMITS_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_LONGLONG 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_SOCKET 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STDARG_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STDDEF_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STDINT_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STDLIB_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STRCASECMP 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STRDUP 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STRFTIME 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STRING_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STRLCAT 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STRLCPY 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_STRSTR 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_SYS_PARAM_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_SYS_SELECT_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_SYS_STAT_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_SYS_TIME_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_TERMIOS_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_TIME_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_UNAME 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_UNISTD_H 1$(DL) >> $@
    -	@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
    -	@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_SYS_TYPES_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_ZLIB_H 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_LIBZ 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_LIBPNG 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_LIBJPEG 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_LIBFREETYPE 1$(DL) >> $@
    -	@echo $(DL)#define HAVE_FT2BUILD_H 1$(DL) >> $@
    -#	@echo $(DL)#define DEFAULT_FONTPATH "sys:/java/nwgfx/lib/x11/fonts/ttf"$(DL) >> $@
    -#	@echo $(DL)#define PATHSEPARATOR ";"$(DL) >> $@
    -
    -$(TARGET).imp: get_exp.awk $(LIBGD)/gd.h
    -	@echo Creating $@
    -	@$(AWK) -v EPREFIX=$(EPREFIX) -f $^ > $@
    -
    -patch: Makefile
    -	@echo Patching sources...
    -	$(PATCH) -d $(LIBGD) -b -p 0 -i $(LIBGD)/netware/$(notdir $(wildcard $(LIBGD)/netware/*.diff))
    -
    -help:
    -	@echo $(DL)===========================================================$(DL)
    -	@echo Novell NDK Base = $(NDKBASE)
    -	@echo libpng Source   = $(LIBPNG)
    -	@echo libjpeg Source  = $(LIBJPEG)
    -	@echo Freetype 2 SDK  = $(LIBFT2)
    -	@echo Zlib SDK        = $(ZLIBSDK)
    -	@echo $(DL)===========================================================$(DL)
    -	@echo $(DL)libgd $(LIBGD_VERSION_STR) - available targets are:$(DL)
    -	@echo $(DL)$(MAKE) all$(DL)
    -	@echo $(DL)$(MAKE) nlm$(DL)
    -	@echo $(DL)$(MAKE) lib$(DL)
    -	@echo $(DL)$(MAKE) clean$(DL)
    -	@echo $(DL)$(MAKE) clean-all$(DL)
    -	@echo $(DL)$(MAKE) test-cmds$(DL)
    -	@echo $(DL)$(MAKE) patch$(DL)
    -	@echo $(DL)===========================================================$(DL)
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/netware/get_exp.awk b/Build/source/libs/gd/libgd-src/netware/get_exp.awk
    deleted file mode 100644
    index 5428bf63ca7..00000000000
    --- a/Build/source/libs/gd/libgd-src/netware/get_exp.awk
    +++ /dev/null
    @@ -1,37 +0,0 @@
    -#!awk
    -# awk hack to fetch libgd export functions from header
    -# and write them to STDOUT. Here you can get an awk version for Win32:
    -# http://www.gknw.net/development/prgtools/awk.zip
    -# $Id$
    -#
    -BEGIN {
    -  print "# Exports extracted from " ARGV[1] "";
    -  print "# Do not edit this file - it is created by make!";
    -  print "# All your changes will be lost!!";
    -  if (EPREFIX) {
    -    print "  (" EPREFIX ")";
    -  }
    -  print "  gdFontGetGiant,";
    -  print "  gdFontGetLarge,";
    -  print "  gdFontGetMediumBold,";
    -  print "  gdFontGetSmall,";
    -  print "  gdFontGetTiny,";
    -  print "  gdImageSquareToCircle,";
    -  print "  gdImageStringFTCircle,";
    -  print "  gdImageSharpen,";
    -}
    -
    -# try to catch the function names from lines like:
    -# BGD_DECLARE(gdImagePtr) function ...
    -# BGD_DECLARE(void *) function ...
    -#
    -/^[ \t]*BGD_DECLARE\([^\)]*\) +(gd[A-Za-z0-9_]+)/ {
    -  sub(/^[ \t]*BGD_DECLARE\([^\)]+\) +/, "");
    -  sub(/[ \t]*\(.*$/, "");
    -  # hack to filter gdImageEllipse() since we have no C implementation.
    -  if ($0 != "gdImageEllipse") {
    -    print "  " $0 ",";
    -  }
    -}
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/netware/get_ver.awk b/Build/source/libs/gd/libgd-src/netware/get_ver.awk
    deleted file mode 100644
    index 8747a338a57..00000000000
    --- a/Build/source/libs/gd/libgd-src/netware/get_ver.awk
    +++ /dev/null
    @@ -1,28 +0,0 @@
    -#!awk
    -# awk script which fetches libgd version number and string from input file
    -# and writes them to STDOUT. Here you can get an awk version for Win32:
    -# http://www.gknw.net/development/prgtools/awk.zip
    -# $Id$
    -#
    -BEGIN {
    -    while ((getline < ARGV[1]) > 0) {
    -      if (match ($0, /^GDLIB_MAJOR=([0-9]*)$/)) {
    -        split($1, t, "=");
    -        v_maj = t[2];
    -      }
    -      if (match ($0, /^GDLIB_MINOR=([0-9]*)$/)) {
    -        split($1, t, "=");
    -        v_min = t[2];
    -      }
    -      if (match ($0, /^GDLIB_REVISION=([0-9]*)$/)) {
    -        split($1, t, "=");
    -        v_rev = t[2];
    -      }
    -    }
    -    libgd_ver = v_maj "," v_min "," v_rev;
    -    libgd_ver_str = v_maj "." v_min "." v_rev;
    -    print "LIBGD_VERSION = " libgd_ver "";
    -    print "LIBGD_VERSION_STR = " libgd_ver_str "";
    -}
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/netware/keepscreen.c b/Build/source/libs/gd/libgd-src/netware/keepscreen.c
    deleted file mode 100644
    index 0ff85628524..00000000000
    --- a/Build/source/libs/gd/libgd-src/netware/keepscreen.c
    +++ /dev/null
    @@ -1,27 +0,0 @@
    -/* Simple _NonAppStop() implementation which can be linked to your
    - * NLM in order to keep the screen open when the NLM terminates
    - * (the good old clib behaviour).
    - * You dont have to call it, its done automatically from LibC.
    - *
    - * 2004-Aug-11  by Guenter Knauf
    - *
    - * URL: http://www.gknw.com/development/mk_nlm/
    - *
    - * $Id$
    - */
    -
    -#include <stdio.h>
    -#include <screen.h>
    -
    -void _NonAppStop()
    -{
    -	uint16_t row, col;
    -
    -	GetScreenSize(&row, &col);
    -	gotorowcol(row-1, 0);
    -	/* pressanykey(); */
    -	printf("<Press any key to close screen> ");
    -	getcharacter();
    -}
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/netware/nwlibc.c b/Build/source/libs/gd/libgd-src/netware/nwlibc.c
    deleted file mode 100644
    index b981a554773..00000000000
    --- a/Build/source/libs/gd/libgd-src/netware/nwlibc.c
    +++ /dev/null
    @@ -1,290 +0,0 @@
    -/*********************************************************************
    - * Universal NetWare library stub.                                   *
    - * written by Ulrich Neuman and given to OpenSource copyright-free.  *
    - * version: 1.0                                                      *
    - * $Id$
    - *********************************************************************/
    -
    -#include <errno.h>
    -#include <string.h>
    -#include <stdlib.h>
    -#include <library.h>
    -#include <netware.h>
    -#include <screen.h>
    -#include <nks/thread.h>
    -#include <nks/synch.h>
    -
    -
    -typedef struct {
    -	int     _errno;
    -	void    *twentybytes;
    -} libthreaddata_t;
    -
    -typedef struct {
    -	int         x;
    -	int         y;
    -	int         z;
    -	void        *tenbytes;
    -	NXKey_t     perthreadkey;   /* if -1, no key obtained... */
    -	NXMutex_t   *lock;
    -} libdata_t;
    -
    -int         gLibId      = -1;
    -void        *gLibHandle = (void *) NULL;
    -rtag_t      gAllocTag   = (rtag_t) NULL;
    -NXMutex_t   *gLibLock   = (NXMutex_t *) NULL;
    -
    -/* internal library function prototypes... */
    -int     DisposeLibraryData ( void * );
    -void    DisposeThreadData ( void * );
    -int     GetOrSetUpData ( int id, libdata_t **data, libthreaddata_t **threaddata );
    -
    -
    -int _NonAppStart
    -(
    -    void        *NLMHandle,
    -    void        *errorScreen,
    -    const char  *cmdLine,
    -    const char  *loadDirPath,
    -    size_t      uninitializedDataLength,
    -    void        *NLMFileHandle,
    -    int         (*readRoutineP)( int conn, void *fileHandle, size_t offset,
    -                                 size_t nbytes, size_t *bytesRead, void *buffer ),
    -    size_t      customDataOffset,
    -    size_t      customDataSize,
    -    int         messageCount,
    -    const char  **messages
    -)
    -{
    -	NX_LOCK_INFO_ALLOC(liblock, "Per-Application Data Lock", 0);
    -
    -#ifndef __GNUC__
    -#pragma unused(cmdLine)
    -#pragma unused(loadDirPath)
    -#pragma unused(uninitializedDataLength)
    -#pragma unused(NLMFileHandle)
    -#pragma unused(readRoutineP)
    -#pragma unused(customDataOffset)
    -#pragma unused(customDataSize)
    -#pragma unused(messageCount)
    -#pragma unused(messages)
    -#endif
    -
    -	/*
    -	** Here we process our command line, post errors (to the error screen),
    -	** perform initializations and anything else we need to do before being able
    -	** to accept calls into us. If we succeed, we return non-zero and the NetWare
    -	** Loader will leave us up, otherwise we fail to load and get dumped.
    -	*/
    -	gAllocTag = AllocateResourceTag(NLMHandle,
    -	                                "<library-name> memory allocations", AllocSignature);
    -
    -	if (!gAllocTag) {
    -		OutputToScreen(errorScreen, "Unable to allocate resource tag for "
    -		               "library memory allocations.\n");
    -		return -1;
    -	}
    -
    -	gLibId = register_library(DisposeLibraryData);
    -
    -	if (gLibId < -1) {
    -		OutputToScreen(errorScreen, "Unable to register library with kernel.\n");
    -		return -1;
    -	}
    -
    -	gLibHandle = NLMHandle;
    -
    -	gLibLock = NXMutexAlloc(0, 0, &liblock);
    -
    -	if (!gLibLock) {
    -		OutputToScreen(errorScreen, "Unable to allocate library data lock.\n");
    -		return -1;
    -	}
    -
    -	return 0;
    -}
    -
    -/*
    -** Here we clean up any resources we allocated. Resource tags is a big part
    -** of what we created, but NetWare doesn't ask us to free those.
    -*/
    -void _NonAppStop( void )
    -{
    -	(void) unregister_library(gLibId);
    -	NXMutexFree(gLibLock);
    -}
    -
    -/*
    -** This function cannot be the first in the file for if the file is linked
    -** first, then the check-unload function's offset will be nlmname.nlm+0
    -** which is how to tell that there isn't one. When the check function is
    -** first in the linked objects, it is ambiguous. For this reason, we will
    -** put it inside this file after the stop function.
    -**
    -** Here we check to see if it's alright to ourselves to be unloaded. If not,
    -** we return a non-zero value. Right now, there isn't any reason not to allow
    -** it.
    -*/
    -int  _NonAppCheckUnload( void )
    -{
    -	return 0;
    -}
    -
    -int GetOrSetUpData
    -(
    -    int                 id,
    -    libdata_t           **appData,
    -    libthreaddata_t **threadData
    -)
    -{
    -	int                 err;
    -	libdata_t           *app_data;
    -	libthreaddata_t *thread_data;
    -	NXKey_t             key;
    -	NX_LOCK_INFO_ALLOC(liblock, "Application Data Lock", 0);
    -
    -	err         = 0;
    -	thread_data = (libthreaddata_t *) NULL;
    -
    -	/*
    -	** Attempt to get our data for the application calling us. This is where we
    -	** store whatever application-specific information we need to carry in support
    -	** of calling applications.
    -	*/
    -	app_data = (libdata_t *) get_app_data(id);
    -
    -	if (!app_data) {
    -		/*
    -		** This application hasn't called us before; set up application AND per-thread
    -		** data. Of course, just in case a thread from this same application is calling
    -		** us simultaneously, we better lock our application data-creation mutex. We
    -		** also need to recheck for data after we acquire the lock because WE might be
    -		** that other thread that was too late to create the data and the first thread
    -		** in will have created it.
    -		*/
    -		NXLock(gLibLock);
    -
    -		if (!(app_data = (libdata_t *) get_app_data(id))) {
    -			app_data = (libdata_t *) malloc(sizeof(libdata_t));
    -
    -			if (app_data) {
    -				memset(app_data, 0, sizeof(libdata_t));
    -
    -				app_data->tenbytes = malloc(10);
    -				app_data->lock     = NXMutexAlloc(0, 0, &liblock);
    -
    -				if (!app_data->tenbytes || !app_data->lock) {
    -					if (app_data->lock)
    -						NXMutexFree(app_data->lock);
    -
    -					free(app_data);
    -					app_data = (libdata_t *) NULL;
    -					err      = ENOMEM;
    -				}
    -
    -				if (app_data) {
    -					/*
    -					** Here we burn in the application data that we were trying to get by calling
    -					** get_app_data(). Next time we call the first function, we'll get this data
    -					** we're just now setting. We also go on here to establish the per-thread data
    -					** for the calling thread, something we'll have to do on each application
    -					** thread the first time it calls us.
    -					*/
    -					err = set_app_data(gLibId, app_data);
    -
    -					if (err) {
    -						free(app_data);
    -						app_data = (libdata_t *) NULL;
    -						err      = ENOMEM;
    -					} else {
    -						/* create key for thread-specific data... */
    -						err = NXKeyCreate(DisposeThreadData, (void *) NULL, &key);
    -
    -						if (err)                /* (no more keys left?) */
    -							key = -1;
    -
    -						app_data->perthreadkey = key;
    -					}
    -				}
    -			}
    -		}
    -
    -		NXUnlock(gLibLock);
    -	}
    -
    -	if (app_data) {
    -		key = app_data->perthreadkey;
    -
    -		if (     key != -1                  /* couldn't create a key? no thread data */
    -		         && !(err = NXKeyGetValue(key, (void **) &thread_data))
    -		         && !thread_data) {
    -			/*
    -			** Allocate the per-thread data for the calling thread. Regardless of whether
    -			** there was already application data or not, this may be the first call by a
    -			** a new thread. The fact that we allocation 20 bytes on a pointer is not very
    -			** important, this just helps to demonstrate that we can have arbitrarily
    -			** complex per-thread data.
    -			*/
    -			thread_data = (libthreaddata_t *) malloc(sizeof(libthreaddata_t));
    -
    -			if (thread_data) {
    -				thread_data->_errno      = 0;
    -				thread_data->twentybytes = malloc(20);
    -
    -				if (!thread_data->twentybytes) {
    -					free(thread_data);
    -					thread_data = (libthreaddata_t *) NULL;
    -					err         = ENOMEM;
    -				}
    -
    -				if ((err = NXKeySetValue(key, thread_data))) {
    -					free(thread_data->twentybytes);
    -					free(thread_data);
    -					thread_data = (libthreaddata_t *) NULL;
    -				}
    -			}
    -		}
    -	}
    -
    -	if (appData)
    -		*appData = app_data;
    -
    -	if (threadData)
    -		*threadData = thread_data;
    -
    -	return err;
    -}
    -
    -int DisposeLibraryData
    -(
    -    void    *data
    -)
    -{
    -	if (data) {
    -		void    *tenbytes = ((libdata_t *) data)->tenbytes;
    -
    -		if (tenbytes)
    -			free(tenbytes);
    -
    -		free(data);
    -	}
    -
    -	return 0;
    -}
    -
    -void DisposeThreadData
    -(
    -    void    *data
    -)
    -{
    -	if (data) {
    -		void    *twentybytes = ((libthreaddata_t *) data)->twentybytes;
    -
    -		if (twentybytes)
    -			free(twentybytes);
    -
    -		free(data);
    -	}
    -}
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/netware/tests/Makefile.netware b/Build/source/libs/gd/libgd-src/netware/tests/Makefile.netware
    deleted file mode 100644
    index 74cc234cba7..00000000000
    --- a/Build/source/libs/gd/libgd-src/netware/tests/Makefile.netware
    +++ /dev/null
    @@ -1,285 +0,0 @@
    -###################################################################
    -#
    -## Makefile for building libgd tests (NetWare version - gnu make)
    -## Use: make -f Makefile
    -##
    -## Comments to: Guenter Knauf <eflash@gmx.net>
    -##
    -## $Id$
    -#
    -###################################################################
    -
    -# Edit the path below to point to the base of your Novell NDK.
    -ifndef NDKBASE
    -NDKBASE	= c:/novell
    -endif
    -
    -LIBGD = ../..
    -
    -ifndef INSTDIR
    -INSTDIR	= ../libgd-$(LIBGD_VERSION_STR)-bin-nw
    -endif
    -
    -# Edit the vars below to change NLM target settings.
    -TARGETS = gddemo.nlm gdtest.nlm gdtestft.nlm gdtopng.nlm gdcmpgif.nlm 
    -TARGETS += gd2time.nlm gd2togif.nlm gd2topng.nlm gd2copypal.nlm
    -TARGETS += gifanimtest.nlm giftogd2.nlm pngtogd2.nlm pngtogd.nlm webpng.nlm
    -TARGETS += annotate.nlm circletexttest.nlm fontsizetest.nlm fontwheeltest.nlm
    -TARGETS += testac.nlm testtr.nlm
    -
    -DTARGET = ../libgd.nlm
    -LTARGET = ../libgd.lib
    -COPYR	= Copyright (C) 1996-2007 Boutell.Com, Inc.
    -WWW	= http://www.libgd.org/
    -DESCR	= libgd $(LIBGD_VERSION_STR) $(subst .def,,$(notdir $@)) - $(WWW)
    -MTSAFE	= YES
    -STACK	= 64000
    -#SCREEN	= NONE
    -#SCREEN	= $(DESCR)
    -# Comment the line below if you dont want to load protected automatically.
    -#LDRING	= 3
    -
    -# Comment the line below if you dont want to link the static libgd.lib.
    -#LSTATIC = 1
    -
    -ifdef LSTATIC
    -LDLIBS  = $(LTARGET)
    -else
    -IMPORTS = @../libgd.imp
    -MODULES = $(notdir $(DTARGET))
    -endif
    -
    -# Edit the var below to point to your lib architecture.
    -ifndef LIBARCH
    -LIBARCH = LIBC
    -endif
    -
    -# must be equal to DEBUG or NDEBUG
    -DB	= NDEBUG
    -# DB	= DEBUG
    -# DB	= CURLDEBUG
    -# Optimization: -O<n> or debugging: -g
    -ifeq ($(DB),NDEBUG)
    -	OPT	= -O2
    -	OBJDIR	= release
    -else
    -	OPT	= -g
    -	OBJDIR	= debug
    -endif
    -
    -# Include the version info retrieved from header.
    --include $(OBJDIR)/version.inc
    -
    -# The following line defines your compiler.
    -ifdef METROWERKS
    -	CC = mwccnlm
    -else
    -	CC = gcc
    -endif
    -YACC	= bison -y
    -CP	= cp -afv
    -# RM	= rm -f
    -# if you want to mark the target as MTSAFE you will need a tool for
    -# generating the xdc data for the linker; here's a minimal tool:
    -# http://www.gknw.net/development/prgtools/mkxdc.zip
    -MPKXDC	= mkxdc
    -
    -# Global flags for all compilers
    -CFLAGS	= $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
    -
    -ifeq ($(CC),mwccnlm)
    -LD	= mwldnlm
    -#LDFLAGS	= -nostdlib $(PRELUDE) $(LDLIBS) $(<:.def=.o) -o $@ -commandfile
    -LDFLAGS	= -nostdlib $(PRELUDE) $(OBJSCR) $(LDLIBS) $(OBJDIR)/$(basename $@).o -o $@ -commandfile
    -AR	= mwldnlm
    -ARFLAGS	= -type library -w nocmdline $(OBJS) -o
    -CFLAGS	+= -msgstyle gcc -gccinc -inline off -opt nointrinsics -proc 586
    -CFLAGS	+= -relax_pointers
    -#CFLAGS	+= -w on
    -ifeq ($(LIBARCH),LIBC)
    -	PRELUDE = $(SDK_LIBC)/imports/libcpre.o
    -	CFLAGS += -align 4
    -else
    -	PRELUDE = "$(METROWERKS)/Novell Support/libraries/runtime/prelude.obj"
    -#	CFLAGS += -include "$(METROWERKS)/Novell Support/headers/nlm_prefix.h"
    -	CFLAGS += -align 1
    -endif
    -else
    -LD	= nlmconv
    -LDFLAGS	= -T
    -AR	= ar
    -ARFLAGS	= -cq
    -CFLAGS	+= -fno-builtin -fpcc-struct-return -fno-strict-aliasing
    -CFLAGS	+= -Wall -Wno-unused #-Wno-format # -pedantic
    -ifeq ($(LIBARCH),LIBC)
    -	PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o
    -else
    -	PRELUDE = $(SDK_CLIB)/imports/clibpre.gcc.o
    -	CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
    -endif
    -endif
    -
    -NDK_ROOT = $(NDKBASE)/ndk
    -SDK_CLIB = $(NDK_ROOT)/nwsdk
    -SDK_LIBC = $(NDK_ROOT)/libc
    -
    -ifeq ($(LIBARCH),LIBC)
    -	INCLUDES += -I$(SDK_LIBC)/include
    -	# INCLUDES += -I$(SDK_LIBC)/include/nks
    -	CFLAGS += -D_POSIX_SOURCE
    -	# CFLAGS += -D__ANSIC__
    -else
    -	INCLUDES += -I$(SDK_CLIB)/include/nlm
    -	# INCLUDES += -I$(SDK_CLIB)/include
    -	# INCLUDES += -I$(SDK_CLIB)/include/nlm/obsolete
    -endif
    -CFLAGS	+= -I. -I.. -I$(LIBGD)
    -CFLAGS	+= $(INCLUDES)
    -
    -ifeq ($(MTSAFE),YES)
    -	XDCOPT = -n
    -endif
    -ifeq ($(MTSAFE),NO)
    -	XDCOPT = -u
    -endif
    -
    -ifeq ($(findstring linux,$(OSTYPE)),linux)
    -DL	= '
    -#-include $(NDKBASE)/nlmconv/ncpfs.inc
    -endif
    -
    -vpath %.c . .. $(LIBGD)
    -
    -ifdef SCREEN
    -ifneq ($(SCREEN),NONE)
    -OBJSCR	= $(OBJDIR)/keepscreen.o
    -endif
    -endif
    -
    -.PHONY: all prebuild dist install clean
    -.PRECIOUS: $(OBJDIR)/%.o $(OBJDIR)/%.def $(OBJDIR)/%.xdc $(LTARGET) $(DTARGET)
    -
    -all: prebuild $(TARGETS) 
    -
    -prebuild: $(OBJDIR) $(OBJDIR)/version.inc
    -ifdef LSTATIC
    -	$(MAKE) -C ../ -f Makefile lib
    -else
    -	$(MAKE) -C ../ -f Makefile nlm
    -endif
    -
    -dist: all
    -	-$(RM) -r $(OBJDIR)
    -
    -install: $(INSTDIR) all
    -	@$(CP) *.nlm $(INSTDIR)
    -	@$(CP) ../CHANGES $(INSTDIR)
    -	@$(CP) ../COPYING $(INSTDIR)
    -	@$(CP) ../README $(INSTDIR)
    -	@$(CP) ../RELEASE-NOTES $(INSTDIR)
    -
    -clean:
    -	-$(RM) -r $(OBJDIR)
    -	-$(RM) $(TARGETS)
    -
    -clean-all: clean
    -	-$(MAKE) -C ../ -f Makefile clean
    -
    -%.lib: $(OBJS)
    -	@echo Creating $@
    -	@-$(RM) $@
    -	@$(AR) $(ARFLAGS) $@ $^
    -
    -%.nlm: $(OBJDIR)/%.def $(OBJDIR)/%.o $(OBJDIR)/%.xdc $(OBJSCR) $(LDLIBS)
    -	@echo Linking $@
    -	@-$(RM) $@
    -	@$(LD) $(LDFLAGS) $<
    -
    -$(INSTDIR):
    -	@mkdir $(INSTDIR)
    -
    -$(OBJDIR):
    -	@mkdir $(OBJDIR)
    -
    -$(OBJDIR)/%.o: %.c
    -#	@echo Compiling $<
    -	$(CC) $(CFLAGS) -c $< -o $@
    -
    -$(OBJDIR)/version.inc: ../../configure.ac $(OBJDIR)
    -	@echo Creating $@
    -	@awk -f ../get_ver.awk $< > $@
    -
    -$(OBJDIR)/%.xdc: Makefile
    -	@echo Creating $@
    -	@$(MPKXDC) $(XDCOPT) $@
    -
    -$(OBJDIR)/%.def: Makefile
    -	@echo Creating $@
    -	@echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
    -	@echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
    -	@echo $(DL)# All your changes will be lost!!$(DL) >> $@
    -	@echo $(DL)#$(DL) >> $@
    -	@echo $(DL)copyright "$(COPYR)"$(DL) >> $@
    -	@echo $(DL)description "$(DESCR)"$(DL) >> $@
    -	@echo $(DL)version $(LIBGD_VERSION)$(DL) >> $@
    -ifdef NLMTYPE
    -	@echo $(DL)type $(NLMTYPE)$(DL) >> $@
    -endif
    -ifdef STACK
    -	@echo $(DL)stack $(STACK)$(DL) >> $@
    -endif
    -ifdef SCREEN
    -	@echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
    -else
    -	@echo $(DL)screenname "DEFAULT"$(DL) >> $@
    -endif
    -ifeq ($(DB),DEBUG)
    -	@echo $(DL)debug$(DL) >> $@
    -endif
    -	@echo $(DL)threadname "$(subst .def,,$(notdir $@))"$(DL) >> $@
    -ifdef XDCOPT
    -	@echo $(DL)xdcdata $(@:.def=.xdc)$(DL) >> $@
    -endif
    -ifeq ($(LDRING),0)
    -	@echo $(DL)flag_on 16$(DL) >> $@
    -endif
    -ifeq ($(LDRING),3)
    -	@echo $(DL)flag_on 512$(DL) >> $@
    -endif
    -	@echo $(DL)flag_on 64$(DL) >> $@
    -ifeq ($(LIBARCH),CLIB)
    -	@echo $(DL)start _Prelude$(DL) >> $@
    -	@echo $(DL)exit _Stop$(DL) >> $@
    -	@echo $(DL)import @$(SDK_CLIB)/imports/clib.imp$(DL) >> $@
    -	@echo $(DL)import @$(SDK_CLIB)/imports/threads.imp$(DL) >> $@
    -	@echo $(DL)import @$(SDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
    -	@echo $(DL)module clib$(DL) >> $@
    -else
    -	@echo $(DL)pseudopreemption$(DL) >> $@
    -	@echo $(DL)start _LibCPrelude$(DL) >> $@
    -	@echo $(DL)exit _LibCPostlude$(DL) >> $@
    -	@echo $(DL)check _LibCCheckUnload$(DL) >> $@
    -	@echo $(DL)import @$(SDK_LIBC)/imports/libc.imp$(DL) >> $@
    -	@echo $(DL)import @$(SDK_LIBC)/imports/netware.imp$(DL) >> $@
    -	@echo $(DL)module libc$(DL) >> $@
    -endif
    -ifdef MODULES
    -	@echo $(DL)module $(MODULES)$(DL) >> $@
    -endif
    -ifdef EXPORTS
    -	@echo $(DL)export $(EXPORTS)$(DL) >> $@
    -endif
    -ifdef IMPORTS
    -	@echo $(DL)import $(IMPORTS)$(DL) >> $@
    -endif
    -ifeq ($(LD),nlmconv)
    -	@echo $(DL)input $(PRELUDE)$(DL) >> $@
    -	@echo $(DL)input $(OBJSCR)$(DL) >> $@
    -	@echo $(DL)input $(@:.def=.o)$(DL) >> $@
    -ifdef LSTATIC
    -	@echo $(DL)input $(LTARGET)$(DL) >> $@
    -endif
    -	@echo $(DL)output $(notdir $(@:.def=.nlm))$(DL) >> $@
    -endif
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/CMakeLists.txt b/Build/source/libs/gd/libgd-src/src/CMakeLists.txt
    index 08fd6991bbe..629e0fc745e 100644
    --- a/Build/source/libs/gd/libgd-src/src/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/src/CMakeLists.txt
    @@ -1,4 +1,3 @@
    -
     SET (LIBGD_SRC_FILES
     	bmp.h
     	gd.c
    @@ -69,17 +68,27 @@ SET (LIBGD_SRC_FILES
     	wbmp.h
     )
     
    -if(MSVC AND MSVC_VERSION LESS 1900)
    -	set(LIBGD_SRC_FILES ${LIBGD_SRC_FILES}
    -		snprintf.c
    +# Static library just for utility programs.
    +SET (GD_PROGRAMS_LIB_SRC_FILES)
    +
    +if(MSVC)
    +	set(GD_PROGRAMS_LIB_SRC_FILES ${GD_PROGRAMS_LIB_SRC_FILES}
    +		getopt.c
     	)
    -endif(MSVC AND MSVC_VERSION LESS 1900)
    +	if(MSVC_VERSION LESS 1900)
    +		set(LIBGD_SRC_FILES ${LIBGD_SRC_FILES}
    +			snprintf.c
    +		)
    +	endif(MSVC_VERSION LESS 1900)
    +endif(MSVC)
     
     include(GNUInstallDirs)
     
     if (BUILD_SHARED_LIBS)
     	add_library(${GD_LIB} ${LIBGD_SRC_FILES})
     	set_target_properties(${GD_LIB} PROPERTIES
    +		SOVERSION ${GDLIB_LIB_SOVERSION}
    +		VERSION ${GDLIB_LIB_VERSION}
     		C_VISIBILITY_PRESET hidden
     		CXX_VISIBILITY_PRESET hidden
     	)
    @@ -92,14 +101,24 @@ if (BUILD_STATIC_LIBS)
     	endif()
     endif()
     
    +if (NOT "${GD_PROGRAMS_LIB_SRC_FILES}" STREQUAL "")
    +	add_library(gd_programs_lib STATIC ${GD_PROGRAMS_LIB_SRC_FILES})
    +endif()
    +
     if (WIN32 AND NOT MINGW AND NOT MSYS)
       #	SET_TARGET_PROPERTIES(${GD_LIB} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:msvcrt.lib")
    -  SET_PROPERTY(TARGET ${GD_LIB_STATIC} APPEND PROPERTY COMPILE_DEFINITIONS NONDLL=1)
    +
    +  if (BUILD_STATIC_LIBS)
    +    SET_PROPERTY(TARGET ${GD_LIB_STATIC} APPEND PROPERTY COMPILE_DEFINITIONS NONDLL=1)
    +  endif()
    +
     ENDIF(WIN32 AND NOT MINGW AND NOT MSYS)
     
     if (MINGW OR MSYS)
     	ADD_DEFINITIONS("-mms-bitfields")
    -	set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB})
    +	if (BUILD_STATIC_LIBS)
    +		set_target_properties(${GD_LIB_STATIC} PROPERTIES OUTPUT_NAME ${GD_LIB})
    +	endif()
     endif (MINGW OR MSYS)
     
     INCLUDE_DIRECTORIES(BEFORE "${PROJECT_BINARY_DIR}" "${CMAKE_BINARY_DIR}" "${GD_SOURCE_DIR}/src")
    @@ -115,6 +134,7 @@ SET(LIBGD_DEP_LIBS
     	${XPM_LIBRARIES}
     	${FONTCONFIG_LIBRARY}
     	${WEBP_LIBRARIES}
    +	${RAQM_LIBRARIES}
     )
     if (BUILD_SHARED_LIBS)
     	target_link_libraries(${GD_LIB} ${LIBGD_DEP_LIBS})
    @@ -132,7 +152,7 @@ if (PNG_FOUND)
     	endif()
     endif()
     
    -if (FREETYPE_FOUND)
    +if (FREETYPE_FOUND AND JPEG_FOUND)
     	set(GD_PROGRAMS ${GD_PROGRAMS} annotate)
     endif()
     
    @@ -147,6 +167,9 @@ foreach(program ${GD_PROGRAMS})
         else()
             target_link_libraries(${program} ${GD_LIB_STATIC})
         endif()
    +	if (NOT "${GD_PROGRAMS_LIB_SRC_FILES}" STREQUAL "")
    +		target_link_libraries(${program} gd_programs_lib)
    +	endif()
     endforeach(program)
     
     set(GD_INSTALL_TARGETS ${GD_PROGRAMS})
    @@ -177,3 +200,6 @@ install(FILES
     	gdfx.h
     	gdpp.h
     	DESTINATION include)
    +
    +CONFIGURE_FILE(../config/gdlib.pc.cmake gdlib.pc @ONLY)
    +INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/gdlib.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
    diff --git a/Build/source/libs/gd/libgd-src/src/COPYING b/Build/source/libs/gd/libgd-src/src/COPYING
    index 90ef1c867ef..a1e4c78485c 100644
    --- a/Build/source/libs/gd/libgd-src/src/COPYING
    +++ b/Build/source/libs/gd/libgd-src/src/COPYING
    @@ -1,25 +1,24 @@
    - 
          Portions copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
          2002 by Cold Spring Harbor Laboratory. Funded under Grant
    -     P41-RR02188 by the National Institutes of Health. 
    +     P41-RR02188 by the National Institutes of Health.
     
          Portions copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 by
    -     Boutell.Com, Inc. 
    +     Boutell.Com, Inc.
     
          Portions relating to GD2 format copyright 1999, 2000, 2001, 2002
          Philip Warner.
    -     
    +
          Portions relating to PNG copyright 1999, 2000, 2001, 2002 Greg
    -     Roelofs. 
    +     Roelofs.
     
    -     Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002 John  
    +     Portions relating to gdttf.c copyright 1999, 2000, 2001, 2002 John
          Ellson (ellson@lucent.com).
    -   
    -     Portions relating to gdft.c copyright 2001, 2002 John Ellson  
    -     (ellson@lucent.com).  
    +
    +     Portions relating to gdft.c copyright 2001, 2002 John Ellson
    +     (ellson@lucent.com).
     
          Portions copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
    -		 2008 Pierre-Alain Joye (pierre@libgd.org).  
    +		 2008 Pierre-Alain Joye (pierre@libgd.org).
     
          Portions relating to JPEG and to color quantization copyright 2000,
          2001, 2002, Doug Becker and copyright (C) 1994, 1995, 1996, 1997,
    @@ -35,19 +34,18 @@
          provided that this notice is present in user-accessible supporting
          documentation.
     
    -     This does not affect your ownership of the derived work itself, and 
    +     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   
    +     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  
    +     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  
    +     particular purpose, with respect to this code and accompanying
          documentation.
     
          Although their code does not appear in gd, the authors wish to thank
          David Koblas, David Rowley, and Hutchison Avenue Software Corporation
          for their prior contributions.
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/Makefile.am b/Build/source/libs/gd/libgd-src/src/Makefile.am
    index 93e8838c366..377acc078d0 100644
    --- a/Build/source/libs/gd/libgd-src/src/Makefile.am
    +++ b/Build/source/libs/gd/libgd-src/src/Makefile.am
    @@ -23,7 +23,9 @@ check_PROGRAMS += fontconfigtest
     endif
     
     if HAVE_LIBFREETYPE
    +if HAVE_LIBJPEG
     bin_PROGRAMS += annotate
    +endif
     check_PROGRAMS += gdtestft testtr
     endif
     
    @@ -37,7 +39,19 @@ if HAVE_LIBZ
     check_PROGRAMS += gd2time
     endif
     
    -EXTRA_DIST = bdftogd demoin.png entities.html entities.tcl CMakeLists.txt config.h.cmake gd_io_stream.cxx gdpp.cxx msinttypes/inttypes.h msinttypes/stdint.h
    +EXTRA_DIST = \
    +	bdftogd \
    +	demoin.png \
    +	entities.html \
    +	entities.tcl \
    +	CMakeLists.txt \
    +	config.h.cmake \
    +	gd_io_stream.cxx \
    +	gdpp.cxx \
    +	getopt.c \
    +	snprintf.c \
    +	msinttypes/inttypes.h \
    +	msinttypes/stdint.h
     
     include_HEADERS = gd.h gdfx.h gd_io.h gdcache.h gdfontg.h gdfontl.h gdfontmb.h gdfonts.h gdfontt.h entities.h gd_color_map.h gd_errors.h gdpp.h
     
    @@ -114,4 +128,3 @@ libgd_la_LDFLAGS = -version-info $(GDLIB_LT_CURRENT):$(GDLIB_LT_REVISION):$(GDLI
     libgd_la_LIBADD = $(LTLIBICONV)
     
     LDADD = libgd.la $(LIBICONV)
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/annotate.c b/Build/source/libs/gd/libgd-src/src/annotate.c
    index 00aaf496bbd..35724b0658a 100644
    --- a/Build/source/libs/gd/libgd-src/src/annotate.c
    +++ b/Build/source/libs/gd/libgd-src/src/annotate.c
    @@ -16,38 +16,28 @@ enum { left, center, right };
     
     int main(int argc, char *argv[])
     {
    -#ifndef HAVE_LIBFREETYPE
    -	(void)argc;
    -	(void)argv;
    -
    -	/* 2.0.12 */
    -	fprintf(stderr, "annotate is not useful without freetype.\n"
    -	         "Install freetype, then './configure; make clean; make install'\n"
    -	         "the gd library again.\n"
    -	        );
    -	return 1;
    -#else
     	gdImagePtr im;
     	char *iin, *iout;
     	FILE *in, *out;
    -	char s[1024];
    +	char *s;
    +	size_t len;
     	int bounds[8];
     	int lines = 1;
     	int color = gdTrueColor(0, 0, 0);
    -	char font[1024];
    +	char *font;
     	int size = 12;
     	int align = left;
     	int x = 0, y = 0;
     	char *fontError;
     
    -	strcpy(font, "times");
    +	font = strdup("times");
     
     	if(argc != 3) {
     		fprintf(stderr, "Usage: annotate imagein.jpg imageout.jpg\n\n");
     		fprintf(stderr, "Standard input should consist of\n");
     		fprintf(stderr, "lines in the following formats:\n");
     		fprintf(stderr, "color r g b (0-255 each) [a (0-127, 0 is opaque)]\n");
    -		fprintf(stderr, "font fontname (max name length 1024)\n");
    +		fprintf(stderr, "font fontname\n");
     		fprintf(stderr, "size pointsize\n");
     		fprintf(stderr, "align (left|right|center)\n");
     		fprintf(stderr, "move x y\n");
    @@ -70,12 +60,7 @@ int main(int argc, char *argv[])
     		exit(2);
     	}
     
    -#ifdef HAVE_LIBJPEG
     	im = gdImageCreateFromJpeg(in);
    -#else
    -	fprintf(stderr, "No JPEG library support available.\n");
    -	exit(1);
    -#endif
     
     	fclose(in);
     
    @@ -84,7 +69,9 @@ int main(int argc, char *argv[])
     		exit(3);
     	}
     
    -	while(fgets(s, sizeof(s), stdin)) {
    +	s = NULL;
    +	len = 0;
    +	while (getline(&s, &len, stdin) != -1) {
     		char *st;
     		char *text;
     
    @@ -99,12 +86,12 @@ int main(int argc, char *argv[])
     			if(!st) {
     				goto badLine;
     			} else {
    -				const unsigned int font_len = strlen(st);
    -				if (font_len >= 1024) {
    -					fprintf(stderr, "Font maximum length is 1024, %d given\n", font_len);
    +				free(font);
    +				font = strdup(st);
    +				if (font == NULL) {
    +					perror("Font failed");
     					goto badLine;
     				}
    -				strncpy(font, st, font_len);
     			}
     		} else if(!strcmp(st, "align")) {
     			char *st = strtok(0, " \t\r\n");
    @@ -178,7 +165,7 @@ int main(int argc, char *argv[])
     
     			fontError = gdImageStringFT(im, 0, color, font, size, 0, rx, y, text);
     			if(fontError) {
    -				fprintf(stderr, "font error at line %d: %s\n", lines, fontError);
    +				fprintf(stderr, "Font error at line %d: %s\n", lines, fontError);
     				exit(7);
     			}
     
    @@ -194,19 +181,16 @@ badLine:
     		fprintf(stderr, "Bad syntax, line %d\n", lines);
     		exit(4);
     	}
    +	free(font);
    +	free(s);
     
     	out = fopen(iout, "wb");
     	if(!out) {
     		fprintf(stderr, "Cannot create %s\n", iout);
     		exit(5);
     	}
    -#ifdef HAVE_LIBJPEG
     	gdImageJpeg(im, out, 95);
    -#else
    -	fprintf(stderr, "No JPEG library support available.\n");
    -#endif
     	gdImageDestroy(im);
     	fclose(out);
     	return 0;
    -#endif /* HAVE_LIBFREETYPE */
     }
    diff --git a/Build/source/libs/gd/libgd-src/src/bdftogd b/Build/source/libs/gd/libgd-src/src/bdftogd
    index 66ffcc9ae88..a9500039301 100644
    --- a/Build/source/libs/gd/libgd-src/src/bdftogd
    +++ b/Build/source/libs/gd/libgd-src/src/bdftogd
    @@ -46,18 +46,18 @@ while (<>)
     	my ($tag, $value) = split / /, $_, 2;
     	die "Font is not fixed width\n"
     			if $tag eq 'SPACING' and not $value =~ /[CM]/i;
    -	
    +
     	$currentchar = $value if $tag eq 'ENCODING';
     	$minchar = $currentchar if not defined $minchar
     		or $currentchar < $minchar;
     	$maxchar = $currentchar if not defined $maxchar
     		or $currentchar > $maxchar;
    -	
    +
     	if ($tag eq 'ENDCHAR')
     		{
     		$gobitmap = 0;
     		my $bottom = $globaltop - $bottom[$currentchar];
    -		
    +
     
     		if ($bottom > 0)
     			{ $data[$currentchar] = substr $data[$currentchar], 0, length($data[$currentchar]) - $bottom * $width; }
    @@ -80,7 +80,7 @@ while (<>)
     		{ $fontdef = $value; }
     	if ($tag eq 'COPYRIGHT' and not defined $copyright)
     		{ $copyright = $value; }
    -	
    +
     	if ($tag eq 'BBX')
     		{
     		my ($tag, $wid, $hei, $left, $bottom) = split / /;
    @@ -100,7 +100,7 @@ while (<>)
     		$bits = substr $bits, 0, $width;
     		$data[$currentchar] .= $bits;
     		}
    -	
    +
     	if ($tag eq 'BITMAP')
     		{
     		$gobitmap = 1;
    @@ -150,7 +150,7 @@ for (my $i = $minchar; $i <= $maxchar; $i++)
     	{
     	$data[$i] = '' unless defined $data[$i];
     	$data[$i] = '0' x ($width * $height - length $data[$i]) . $data[$i];
    -	
    +
     	print FILEC "/* Char $i */\n";
     	for my $line (0 .. $height - 1)
     		{ print FILEC join ',', split(//, substr($data[$i], $line * $width, $width)), "\n"; }
    @@ -158,7 +158,7 @@ for (my $i = $minchar; $i <= $maxchar; $i++)
     	print FILEC "\n";
     
     	next;
    -	
    +
     	for my $line (0 .. $height - 1)
     		{ print substr($data[$i], $line * $width, $width), "\n"; }
     	}
    @@ -202,4 +202,3 @@ extern gdFontPtr $gdname;
     EOF
     
     1;
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/bmp.h b/Build/source/libs/gd/libgd-src/src/bmp.h
    index cecde0383f5..5644fab982d 100644
    --- a/Build/source/libs/gd/libgd-src/src/bmp.h
    +++ b/Build/source/libs/gd/libgd-src/src/bmp.h
    @@ -1,4 +1,6 @@
    -/* $Id$ */
    +#ifndef BMP_H
    +#define BMP_H	1
    +
     #ifdef __cplusplus
     extern "C" {
     #endif
    @@ -19,9 +21,6 @@ extern "C" {
     		----------------------------------------------------------------------------
     	 */
     
    -#ifndef BMP_H
    -#define BMP_H	1
    -
     #define BMP_PALETTE_3 1
     #define BMP_PALETTE_4 2
     
    @@ -105,8 +104,8 @@ extern "C" {
     
     	} bmp_info_t;
     
    -#endif
    -
     #ifdef __cplusplus
     }
     #endif
    +
    +#endif
    diff --git a/Build/source/libs/gd/libgd-src/src/circletexttest.c b/Build/source/libs/gd/libgd-src/src/circletexttest.c
    index 0f20a34d9b8..53451517acb 100644
    --- a/Build/source/libs/gd/libgd-src/src/circletexttest.c
    +++ b/Build/source/libs/gd/libgd-src/src/circletexttest.c
    @@ -8,10 +8,6 @@
     int main(void)
     {
     	/* 2.0.22: can't depend on PNG either  */
    -#ifndef HAVE_LIBPNG
    -	fprintf(stderr, "Requires PNG support, gd was compiled without it\n");
    -	return 0;
    -#else
     	char *error;
     #ifdef HAVE_LIBJPEG
     	FILE *in = 0;
    @@ -64,6 +60,5 @@ int main(void)
     	gdImagePng(im, out);
     	fclose(out);
     	gdImageDestroy(im);
    -#endif /* HAVE_LIBPNG */
     	return 0;
     }
    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 26cf22ff549..54f3a528907 100644
    --- a/Build/source/libs/gd/libgd-src/src/config.h.cmake
    +++ b/Build/source/libs/gd/libgd-src/src/config.h.cmake
    @@ -3,15 +3,15 @@
     /* Define is you are building for Win32 API */
     #cmakedefine BGDWIN32
     
    +/* Whether to support gd image formats */
    +#define ENABLE_GD_FORMATS @ENABLE_GD_FORMATS@
    +
     /* Define to 1 if you have the <dirent.h> header file. */
     #cmakedefine HAVE_DIRENT_H
     
     /* Define to 1 if you have the <dlfcn.h> header file. */
     #cmakedefine HAVE_DLFCN_H
     
    -/* Define to 1 if you have the <errno.h> header file. */
    -#cmakedefine HAVE_ERRNO_H
    -
     /* Define if you have the ft2build.h header. */
     #cmakedefine HAVE_FT2BUILD_H
     
    @@ -45,6 +45,9 @@
     /* Define if you have png */
     #cmakedefine HAVE_LIBPNG
     
    +/* Define if you have raqm */
    +#cmakedefine HAVE_LIBRAQM
    +
     /* Define if you have tiff */
     #cmakedefine HAVE_LIBTIFF
     
    @@ -57,9 +60,6 @@
     /* Define if you have zlib */
     #cmakedefine HAVE_LIBZ
     
    -/* Define to 1 if you have the <limits.h> header file. */
    -#cmakedefine HAVE_LIMITS_H
    -
     /* Define to 1 if you have the <memory.h> header file. */
     #cmakedefine HAVE_MEMORY_H
     
    @@ -72,21 +72,12 @@
     /* Have PTHREAD_PRIO_INHERIT. */
     #cmakedefine HAVE_PTHREAD_PRIO_INHERIT
     
    -/* Define to 1 if you have the <stddef.h> header file. */
    -#cmakedefine HAVE_STDDEF_H
    -
     /* Define to 1 if you have the <stdint.h> header file. */
     #cmakedefine HAVE_STDINT_H
     
    -/* Define to 1 if you have the <stdlib.h> header file. */
    -#cmakedefine HAVE_STDLIB_H
    -
     /* Define to 1 if you have the <strings.h> header file. */
     #cmakedefine HAVE_STRINGS_H
     
    -/* Define to 1 if you have the <string.h> header file. */
    -#cmakedefine HAVE_STRING_H
    -
     /* Define to 1 if you have the <sys/stat.h> header file. */
     #cmakedefine HAVE_SYS_STAT_H
     
    diff --git a/Build/source/libs/gd/libgd-src/src/config.hin b/Build/source/libs/gd/libgd-src/src/config.hin
    index d2777209b45..56df3dabf72 100644
    --- a/Build/source/libs/gd/libgd-src/src/config.hin
    +++ b/Build/source/libs/gd/libgd-src/src/config.hin
    @@ -3,15 +3,15 @@
     /* Define is you are building for Win32 API */
     #undef BGDWIN32
     
    +/* Whether to support gd image formats */
    +#undef ENABLE_GD_FORMATS
    +
     /* Define to 1 if you have the <dirent.h> header file. */
     #undef HAVE_DIRENT_H
     
     /* Define to 1 if you have the <dlfcn.h> header file. */
     #undef HAVE_DLFCN_H
     
    -/* Define to 1 if you have the <errno.h> header file. */
    -#undef HAVE_ERRNO_H
    -
     /* Define if you have the ft2build.h header. */
     #undef HAVE_FT2BUILD_H
     
    @@ -45,6 +45,9 @@
     /* Define if you have png */
     #undef HAVE_LIBPNG
     
    +/* Define if you have raqm */
    +#undef HAVE_LIBRAQM
    +
     /* Define if you have tiff */
     #undef HAVE_LIBTIFF
     
    @@ -57,9 +60,6 @@
     /* Define if you have zlib */
     #undef HAVE_LIBZ
     
    -/* Define to 1 if you have the <limits.h> header file. */
    -#undef HAVE_LIMITS_H
    -
     /* Define to 1 if you have the <memory.h> header file. */
     #undef HAVE_MEMORY_H
     
    @@ -72,9 +72,6 @@
     /* Have PTHREAD_PRIO_INHERIT. */
     #undef HAVE_PTHREAD_PRIO_INHERIT
     
    -/* Define to 1 if you have the <stddef.h> header file. */
    -#undef HAVE_STDDEF_H
    -
     /* Define to 1 if you have the <stdint.h> header file. */
     #undef HAVE_STDINT_H
     
    diff --git a/Build/source/libs/gd/libgd-src/src/entities.html b/Build/source/libs/gd/libgd-src/src/entities.html
    index 5c5d7b65a32..f3e99097e4d 100644
    --- a/Build/source/libs/gd/libgd-src/src/entities.html
    +++ b/Build/source/libs/gd/libgd-src/src/entities.html
    @@ -11,7 +11,7 @@
     <body>
     <div class="navbar" align="center">&nbsp;<a href="http://www.w3.org/TR/REC-html40/sgml/framesetdtd.html">
     previous</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/appendix/changes.html">next</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/cover.html#minitoc">contents</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/elements.html">
    -elements</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/attributes.html">attributes</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/list.html">index</a> 
    +elements</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/attributes.html">attributes</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/list.html">index</a>
     
     <hr></div>
     
    @@ -26,7 +26,7 @@ references in HTML 4</a></h1>
     references</a></li>
     
     <li><a class="tocxref" href="#h-24.2">Character entity references for ISO
    -8859-1 characters</a> 
    +8859-1 characters</a>
     
     <ol>
     <li><a class="tocxref" href="#h-24.2.1">The list of characters</a></li>
    @@ -34,7 +34,7 @@ references</a></li>
     </li>
     
     <li><a class="tocxref" href="#h-24.3">Character entity references for symbols,
    -mathematical symbols, and Greek letters</a> 
    +mathematical symbols, and Greek letters</a>
     
     <ol>
     <li><a class="tocxref" href="#h-24.3.1">The list of characters</a></li>
    @@ -42,7 +42,7 @@ mathematical symbols, and Greek letters</a>
     </li>
     
     <li><a class="tocxref" href="#h-24.4">Character entity references for
    -markup-significant and internationalization characters</a> 
    +markup-significant and internationalization characters</a>
     
     <ol>
     <li><a class="tocxref" href="#h-24.4.1">The list of characters</a></li>
    @@ -55,7 +55,7 @@ markup-significant and internationalization characters</a>
     
     A <a href="http://www.w3.org/TR/REC-html40/charset.html#entities">character entity reference</a> is an SGML
     construct that references a character of the <a href="http://www.w3.org/TR/REC-html40/charset.html">document
    -character set.</a> 
    +character set.</a>
     
     <p>This version of HTML supports several sets of character entity
     references:</p>
    @@ -345,7 +345,7 @@ occasional Greek letters used in technical and mathematical works.</em></p>
          existing ISO 8879 entity names. ISO 10646 character numbers
          are given for each character, in hex. CDATA values are decimal
          conversions of the ISO 10646 values and refer to the document
    -     character set. Names are ISO 10646 names. 
    +     character set. Names are ISO 10646 names.
     
     --&gt;
     
    @@ -472,7 +472,7 @@ occasional Greek letters used in technical and mathematical works.</em></p>
     &lt;!ENTITY uArr     CDATA "&amp;#8657;" -- upwards double arrow, U+21D1 ISOamsa --&gt;
     &lt;!ENTITY rArr     CDATA "&amp;#8658;" -- rightwards double arrow,
                                          U+21D2 ISOtech --&gt;
    -&lt;!-- ISO 10646 does not say this is the 'implies' character but does not have 
    +&lt;!-- ISO 10646 does not say this is the 'implies' character but does not have
          another character with this function so ?
          rArr can be used for 'implies' as ISOtech suggests --&gt;
     &lt;!ENTITY dArr     CDATA "&amp;#8659;" -- downwards double arrow, U+21D3 ISOamsa --&gt;
    @@ -525,9 +525,9 @@ occasional Greek letters used in technical and mathematical works.</em></p>
                                          U+2265 ISOtech --&gt;
     &lt;!ENTITY sub      CDATA "&amp;#8834;" -- subset of, U+2282 ISOtech --&gt;
     &lt;!ENTITY sup      CDATA "&amp;#8835;" -- superset of, U+2283 ISOtech --&gt;
    -&lt;!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol 
    +&lt;!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
          font encoding and is not included. Should it be, for symmetry?
    -     It is in ISOamsn  --&gt; 
    +     It is in ISOamsn  --&gt;
     &lt;!ENTITY nsub     CDATA "&amp;#8836;" -- not a subset of, U+2284 ISOamsn --&gt;
     &lt;!ENTITY sube     CDATA "&amp;#8838;" -- subset of or equal to, U+2286 ISOtech --&gt;
     &lt;!ENTITY supe     CDATA "&amp;#8839;" -- superset of or equal to,
    @@ -550,11 +550,11 @@ occasional Greek letters used in technical and mathematical works.</em></p>
     &lt;!ENTITY rfloor   CDATA "&amp;#8971;" -- right floor, U+230B ISOamsc  --&gt;
     &lt;!ENTITY lang     CDATA "&amp;#9001;" -- left-pointing angle bracket = bra,
                                          U+2329 ISOtech --&gt;
    -&lt;!-- lang is NOT the same character as U+003C 'less than' 
    +&lt;!-- lang is NOT the same character as U+003C 'less than'
          or U+2039 'single left-pointing angle quotation mark' --&gt;
     &lt;!ENTITY rang     CDATA "&amp;#9002;" -- right-pointing angle bracket = ket,
                                          U+232A ISOtech --&gt;
    -&lt;!-- rang is NOT the same character as U+003E 'greater than' 
    +&lt;!-- rang is NOT the same character as U+003E 'greater than'
          or U+203A 'single right-pointing angle quotation mark' --&gt;
     
     &lt;!-- Geometric Shapes --&gt;
    @@ -614,7 +614,7 @@ that contains the requisite glyphs.</p>
          existing ISO 8879 entity names. ISO 10646 character numbers
          are given for each character, in hex. CDATA values are decimal
          conversions of the ISO 10646 values and refer to the document
    -     character set. Names are ISO 10646 names. 
    +     character set. Names are ISO 10646 names.
     
     --&gt;
     
    @@ -679,4 +679,4 @@ that contains the requisite glyphs.</p>
     <div class="navbar" align="center">
     <hr><a href="http://www.w3.org/TR/REC-html40/sgml/framesetdtd.html">previous</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/appendix/changes.html">next</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/cover.html#minitoc">
     contents</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/elements.html">elements</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/attributes.html">attributes</a> &nbsp; <a href="http://www.w3.org/TR/REC-html40/index/list.html">index</a></div>
    -</body></html>
    \ No newline at end of file
    +</body></html>
    diff --git a/Build/source/libs/gd/libgd-src/src/fontconfigtest.c b/Build/source/libs/gd/libgd-src/src/fontconfigtest.c
    index 47c484922db..eda5c959a83 100644
    --- a/Build/source/libs/gd/libgd-src/src/fontconfigtest.c
    +++ b/Build/source/libs/gd/libgd-src/src/fontconfigtest.c
    @@ -9,7 +9,6 @@ int main (int argc, char *argv[])
     	gdImagePtr im;
     	int green, blue;
     	gdFTStringExtra se;
    -	FILE *out;
     	im = gdImageCreateTrueColor(300, 100);
     	green = gdImageColorAllocate(im, 128, 255, 128);
     	gdImageFilledRectangle(im, 0, 0, 300, 100, green);
    @@ -33,7 +32,7 @@ int main (int argc, char *argv[])
     	gdImageStringFTEx(im, 0, blue, "arial",
     	                  12, 0, 20, 80, "plain pathname", &se);
     #ifdef HAVE_LIBPNG
    -	out = fopen("fontconfigtest.png", "wb");
    +	FILE *out = fopen("fontconfigtest.png", "wb");
     	gdImagePng(im, out);
     	fclose(out);
     #else
    @@ -41,4 +40,3 @@ int main (int argc, char *argv[])
     #endif /* HAVE_LIBPNG */
     	return 0;
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/fontsizetest.c b/Build/source/libs/gd/libgd-src/src/fontsizetest.c
    index 55b9209d051..c32c77728ab 100644
    --- a/Build/source/libs/gd/libgd-src/src/fontsizetest.c
    +++ b/Build/source/libs/gd/libgd-src/src/fontsizetest.c
    @@ -1,4 +1,3 @@
    -
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    @@ -19,29 +18,17 @@ dosizes (gdImagePtr im, int color, char *fontfile,
     		sprintf (buf, "%d: %s", cursize, string);
     
     		/* The case of newlines is taken care of in the gdImageStringTTF call */
    -#if defined(OLDER_GD)
    -		cp =
    -		    gdImageStringTTF (im, brect, color, fontfile, cursize, curang, x, y,
    -		                      buf);
    -#else
     		cp =
     		    gdImageStringFT (im, brect, color, fontfile, cursize, curang, x, y,
     		                     buf);
    -#endif
     		if (cp)
     			fprintf(stderr, "%s\n", cp);
     		y += cursize + 4;
     
     		/* render the same fontsize with antialiasing turned off */
    -#if defined(OLDER_GD)
    -		cp =
    -		    gdImageStringTTF (im, brect, 0 - color, fontfile, cursize, curang, x,
    -		                      y, buf);
    -#else
     		cp =
     		    gdImageStringFT (im, brect, 0 - color, fontfile, cursize, curang, x,
     		                     y, buf);
    -#endif
     		if (cp)
     			fprintf(stderr, "%s\n", cp);
     		y += cursize + 4;
    diff --git a/Build/source/libs/gd/libgd-src/src/fontwheeltest.c b/Build/source/libs/gd/libgd-src/src/fontwheeltest.c
    index b2bb258fdad..a225810db56 100644
    --- a/Build/source/libs/gd/libgd-src/src/fontwheeltest.c
    +++ b/Build/source/libs/gd/libgd-src/src/fontwheeltest.c
    @@ -1,4 +1,3 @@
    -
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    @@ -37,13 +36,8 @@ dowheel (gdImagePtr im, int color, char *fontfile, int fontsize,
     		y0 = y - sin (curangrads) * offset;
     
     		/* The case of newlines is taken care of in the gdImageStringTTF call */
    -#if defined(OLDER_GD)
    -		cp = gdImageStringTTF (im, brect, color, fontfile, fontsize,
    -		                       curangrads, x0, y0, string);
    -#else
     		cp = gdImageStringFT (im, brect, color, fontfile, fontsize,
     		                      curangrads, x0, y0, string);
    -#endif
     		if (cp)
     			doerr (err, cp);
     
    diff --git a/Build/source/libs/gd/libgd-src/src/gd.c b/Build/source/libs/gd/libgd-src/src/gd.c
    index 7f0a258f800..4eb2c351c30 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd.c
    @@ -1,5 +1,3 @@
    -/* $Id$ */
    -
     #include <stdio.h>
     #include <math.h>
     #include <string.h>
    @@ -177,7 +175,7 @@ BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y);
     
         See Also:
     
    -        <gdImageCreateTrueColor>        
    +        <gdImageCreateTrueColor>
     
      */
     BGD_DECLARE(gdImagePtr) gdImageCreate (int sx, int sy)
    @@ -192,7 +190,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreate (int sx, int sy)
     	if (overflow2(sizeof (unsigned char *), sy)) {
     		return NULL;
     	}
    -	if (overflow2(sizeof (unsigned char *), sx)) {
    +	if (overflow2(sizeof (unsigned char), sx)) {
     		return NULL;
     	}
     
    @@ -285,7 +283,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreate (int sx, int sy)
     
         See Also:
     
    -        <gdImageCreateTrueColor>        
    +        <gdImageCreateTrueColor>
     
     */
     BGD_DECLARE(gdImagePtr) gdImageCreateTrueColor (int sx, int sy)
    @@ -296,12 +294,10 @@ BGD_DECLARE(gdImagePtr) gdImageCreateTrueColor (int sx, int sy)
     	if (overflow2(sx, sy)) {
     		return NULL;
     	}
    -
     	if (overflow2(sizeof (int *), sy)) {
     		return 0;
     	}
    -
    -	if (overflow2(sizeof(int *), sx)) {
    +	if (overflow2(sizeof(int), sx)) {
     		return NULL;
     	}
     
    @@ -418,7 +414,7 @@ BGD_DECLARE(void) gdImageDestroy (gdImagePtr im)
     
     /**
      * Function: gdImageColorClosest
    - * 
    + *
      * Gets the closest color of the image
      *
      * This is a simplified variant of <gdImageColorClosestAlpha> where the alpha
    @@ -910,15 +906,13 @@ BGD_DECLARE(void) gdImageColorTransparent (gdImagePtr im, int color)
     	}
     
     	if (!im->trueColor) {
    -		if((color < -1) || (color >= gdMaxColors)) {
    +		if (color >= gdMaxColors) {
     			return;
     		}
     		if (im->transparent != -1) {
     			im->alpha[im->transparent] = gdAlphaOpaque;
     		}
    -		if (color != -1) {
    -			im->alpha[color] = gdAlphaTransparent;
    -		}
    +		im->alpha[color] = gdAlphaTransparent;
     	}
     	im->transparent = color;
     }
    @@ -1491,7 +1485,7 @@ BGD_DECLARE(int) gdImageGetTrueColorPixel (gdImagePtr im, int x, int y)
     
     /*
     	Function: gdImageAABlend
    -	
    +
     	NO-OP, kept for library compatibility.
     */
     BGD_DECLARE(void) gdImageAABlend (gdImagePtr im)
    @@ -1544,7 +1538,7 @@ static void gdImageVLine(gdImagePtr im, int x, int y1, int y2, int col)
     
     /*
     	Function: gdImageLine
    -	
    +
     	Bresenham as presented in Foley & Van Dam.
     */
     BGD_DECLARE(void) gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
    @@ -1589,7 +1583,7 @@ BGD_DECLARE(void) gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, in
     	if (dy <= dx) {
     		/* More-or-less horizontal. use wid for vertical stroke */
     		/* Doug Claar: watch out for NaN in atan2 (2.0.5) */
    -		
    +
     		/* 2.0.12: Michael Schwartz: divide rather than multiply;
     			  TBB: but watch out for /0! */
     		double ac = cos (atan2 (dy, dx));
    @@ -1942,7 +1936,7 @@ BGD_DECLARE(void) gdImageCharUp (gdImagePtr im, gdFontPtr f, int x, int y, int c
     
     /**
      * Function: gdImageString
    - * 
    + *
      * Draws a character string.
      *
      * Parameters:
    @@ -2068,6 +2062,7 @@ BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h,
     	int i, pti;
     	int lx = 0, ly = 0;
     	int fx = 0, fy = 0;
    +	int startx = -1, starty = -1, endx = -1, endy = -1;
     
     	if ((s % 360)  == (e % 360)) {
     		s = 0;
    @@ -2097,8 +2092,8 @@ BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h,
     
     	for (i = s, pti = 1; (i <= e); i++, pti++) {
     		int x, y;
    -		x = ((long) gdCosT[i % 360] * (long) w / (2 * 1024)) + cx;
    -		y = ((long) gdSinT[i % 360] * (long) h / (2 * 1024)) + cy;
    +		x = endx = ((long) gdCosT[i % 360] * (long) w / (2 * 1024)) + cx;
    +		y = endy = ((long) gdSinT[i % 360] * (long) h / (2 * 1024)) + cy;
     		if (i != s) {
     			if (!(style & gdChord)) {
     				if (style & gdNoFill) {
    @@ -2124,8 +2119,8 @@ BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h,
     			if (!(style & (gdChord | gdNoFill))) {
     				pts[0].x = cx;
     				pts[0].y = cy;
    -				pts[pti].x = x;
    -				pts[pti].y = y;
    +				pts[pti].x = startx = x;
    +				pts[pti].y = starty = y;
     			}
     		}
     		lx = x;
    @@ -2154,6 +2149,24 @@ BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h,
     				gdImageLine (im, cx, cy, fx, fy, color);
     			}
     		} else {
    +			if (e - s < 360) {
    +				if (pts[1].x != startx && pts[1].y == starty) {
    +					/* start point has been removed due to y-coord fix => insert it */
    +					for (i = pti; i > 1; i--) {
    +						pts[i].x = pts[i-1].x;
    +						pts[i].y = pts[i-1].y;
    +					}
    +					pts[1].x = startx;
    +					pts[1].y = starty;
    +					pti++;
    +				}
    +				if (pts[pti-1].x != endx && pts[pti-1].y == endy) {
    +					/* end point has been removed due to y-coord fix => insert it */
    +					pts[pti].x = endx;
    +					pts[pti].y = endy;
    +					pti++;
    +				}
    +			}
     			pts[pti].x = cx;
     			pts[pti].y = cy;
     			gdImageFilledPolygon(im, pts, pti+1, color);
    @@ -2167,7 +2180,7 @@ BGD_DECLARE(void) gdImageFilledArc (gdImagePtr im, int cx, int cy, int w, int h,
     BGD_DECLARE(void) gdImageEllipse(gdImagePtr im, int mx, int my, int w, int h, int c)
     {
     	int x=0,mx1=0,mx2=0,my1=0,my2=0;
    -	long aq,bq,dx,dy,r,rx,ry,a,b;
    +	int64_t aq,bq,dx,dy,r,rx,ry,a,b;
     
     	a=w>>1;
     	b=h>>1;
    @@ -2214,7 +2227,7 @@ BGD_DECLARE(void) gdImageEllipse(gdImagePtr im, int mx, int my, int w, int h, in
     BGD_DECLARE(void) gdImageFilledEllipse (gdImagePtr im, int mx, int my, int w, int h, int c)
     {
     	int x=0,mx1=0,mx2=0,my1=0,my2=0;
    -	long aq,bq,dx,dy,r,rx,ry,a,b;
    +	int64_t aq,bq,dx,dy,r,rx,ry,a,b;
     	int i;
     	int old_y2;
     
    @@ -2281,7 +2294,7 @@ BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border,
     	}
     
     	if (!im->trueColor) {
    -		if ((color > (im->colorsTotal - 1)) || (border > (im->colorsTotal - 1)) || (color < 0)) {
    +		if (color > (im->colorsTotal - 1) || border > (im->colorsTotal - 1)) {
     			return;
     		}
     	}
    @@ -2301,7 +2314,7 @@ BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border,
     	} else if (y < 0) {
     		y = 0;
     	}
    -	
    +
     	for (i = x; (i >= 0); i--) {
     		if (gdImageGetPixel (im, i, y) == border) {
     			break;
    @@ -2616,16 +2629,12 @@ skip:
      *
      * Parameters:
      *   im    - The image.
    - *   x1    - The x-coordinate of the upper left corner.
    - *   y1    - The y-coordinate of the upper left corner.
    - *   x2    - The x-coordinate of the lower right corner.
    - *   y2    - The y-coordinate of the lower right corner.
    + *   x1    - The x-coordinate of one of the corners.
    + *   y1    - The y-coordinate of one of the corners.
    + *   x2    - The x-coordinate of another corner.
    + *   y2    - The y-coordinate of another corner.
      *   color - The 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>
      */
    @@ -2639,12 +2648,13 @@ BGD_DECLARE(void) gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y
     	}
     
     	if (y2 < y1) {
    -		int t;
    -		t = y1;
    +		int t = y1;
     		y1 = y2;
     		y2 = t;
    +	}
     
    -		t = x1;
    +	if (x2 < x1) {
    +		int t = x1;
     		x1 = x2;
     		x2 = t;
     	}
    @@ -2855,14 +2865,6 @@ BGD_DECLARE(gdImagePtr) gdImageClone (gdImagePtr src) {
     		}
     	}
     
    -	if (src->styleLength > 0) {
    -		dst->styleLength = src->styleLength;
    -		dst->stylePos    = src->stylePos;
    -		for (i = 0; i < src->styleLength; i++) {
    -			dst->style[i] = src->style[i];
    -		}
    -	}
    -
     	dst->interlace   = src->interlace;
     
     	dst->alphaBlendingFlag = src->alphaBlendingFlag;
    @@ -2897,6 +2899,7 @@ BGD_DECLARE(gdImagePtr) gdImageClone (gdImagePtr src) {
     
     	if (src->style) {
     		gdImageSetStyle(dst, src->style, src->styleLength);
    +		dst->stylePos = src->stylePos;
     	}
     
     	for (i = 0; i < gdMaxColors; i++) {
    @@ -3099,7 +3102,7 @@ BGD_DECLARE(void) gdImageCopyMerge (gdImagePtr dst, gdImagePtr src, int dstX, in
      * Note:
      *   This function is a substitute for real alpha channel operations,
      *   so it doesn't pay attention to the alpha channel.
    - * 
    + *
      * Parameters:
      *   dst  - The destination image.
      *   src  - The source image.
    @@ -3180,7 +3183,7 @@ BGD_DECLARE(void) gdImageCopyMergeGray (gdImagePtr dst, gdImagePtr src, int dstX
      *
      * If the source and destination area differ in size, the area will be resized
      * using nearest-neighbor interpolation.
    - * 
    + *
      * Parameters:
      *   dst  - The destination image.
      *   src  - The source image.
    @@ -3437,7 +3440,7 @@ BGD_DECLARE(void) gdImageCopyRotated (gdImagePtr dst,
      * 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:
      *   dst  - The destination image.
      *   src  - The source image.
    @@ -4345,8 +4348,8 @@ static void gdImageAALine (gdImagePtr im, int x1, int y1, int x2, int y2, int co
     	/* keep them as 32bits */
     	long x, y, inc, frac;
     	long dx, dy,tmp;
    -	int w, wid, wstart; 
    -	int thick = im->thick; 
    +	int w, wid, wstart;
    +	int thick = im->thick;
     
     	if (!im->trueColor) {
     		/* TBB: don't crash when the image is of the wrong type */
    @@ -4365,7 +4368,7 @@ static void gdImageAALine (gdImagePtr im, int x1, int y1, int x2, int y2, int co
     
     	if (dx == 0 && dy == 0) {
     		/* TBB: allow setting points */
    -		gdImageSetAAPixelColor(im, x1, y1, col, 0xFF);
    +		gdImageSetPixel(im, x1, y1, col);
     		return;
     	} else {
     		double ag;
    diff --git a/Build/source/libs/gd/libgd-src/src/gd.h b/Build/source/libs/gd/libgd-src/src/gd.h
    index 219b2240357..27c663edad8 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd.h
    +++ b/Build/source/libs/gd/libgd-src/src/gd.h
    @@ -1,20 +1,20 @@
    -#ifdef __cplusplus
    -extern "C" {
    -#endif
    +#ifndef GD_H
    +#define GD_H 1
     
     #include <stdlib.h>
     
    -#ifndef GD_H
    -#define GD_H 1
    +#ifdef __cplusplus
    +extern "C" {
    +#endif
     
     /* Version information.  This gets parsed by build scripts as well as
      * gcc so each #define line in this group must also be splittable on
      * whitespace, take the form GD_*_VERSION and contain the magical
      * trailing comment. */
     #define GD_MAJOR_VERSION    2           /*version605b5d1778*/
    -#define GD_MINOR_VERSION    2           /*version605b5d1778*/
    -#define GD_RELEASE_VERSION  5           /*version605b5d1778*/
    -#define GD_EXTRA_VERSION    ""          /*version605b5d1778*/
    +#define GD_MINOR_VERSION    3           /*version605b5d1778*/
    +#define GD_RELEASE_VERSION  0           /*version605b5d1778*/
    +#define GD_EXTRA_VERSION    ""      /*version605b5d1778*/
     /* End parsable section. */
     
     /* The version string.  This is constructed from the version number
    @@ -29,7 +29,7 @@ extern "C" {
                           GDXXX_STR(GD_RELEASE_VERSION),                    \
                           GD_EXTRA_VERSION)
     
    -    
    +
     /* Do the DLL dance: dllexport when building the DLL,
        dllimport when importing from it, nothing when
        not on Silly Silly Windows (tm Aardman Productions). */
    @@ -51,14 +51,14 @@ extern "C" {
     #   define BGD_EXPORT_DATA_PROT
     #  else
     #   ifdef __GNUC__
    -#    define BGD_EXPORT_DATA_PROT __attribute__ ((dllexport))
    +#    define BGD_EXPORT_DATA_PROT __attribute__ ((__dllexport__))
     #   else
     #    define BGD_EXPORT_DATA_PROT __declspec(dllexport)
     #   endif
     #  endif
     # else
     #  ifdef __GNUC__
    -#   define BGD_EXPORT_DATA_PROT __attribute__ ((dllimport))
    +#   define BGD_EXPORT_DATA_PROT __attribute__ ((__dllimport__))
     #  else
     #   define BGD_EXPORT_DATA_PROT __declspec(dllimport)
     #  endif
    @@ -67,8 +67,8 @@ extern "C" {
     # define BGD_EXPORT_DATA_IMPL
     #else
     # if defined(__GNUC__) || defined(__clang__)
    -#  define BGD_EXPORT_DATA_PROT __attribute__ ((visibility ("default")))
    -#  define BGD_EXPORT_DATA_IMPL __attribute__ ((visibility ("hidden")))
    +#  define BGD_EXPORT_DATA_PROT __attribute__ ((__visibility__ ("default")))
    +#  define BGD_EXPORT_DATA_IMPL __attribute__ ((__visibility__ ("hidden")))
     # else
     #  define BGD_EXPORT_DATA_PROT
     #  define BGD_EXPORT_DATA_IMPL
    @@ -79,24 +79,19 @@ extern "C" {
     #define BGD_DECLARE(rt) BGD_EXPORT_DATA_PROT rt BGD_STDCALL
     
     /* VS2012+ disable keyword macroizing unless _ALLOW_KEYWORD_MACROS is set
    -   We define inline, snprintf, and strcasecmp if they're missing 
    +   We define inline, snprintf, and strcasecmp if they're missing
     */
     #ifdef _MSC_VER
     #  define _ALLOW_KEYWORD_MACROS
     #  ifndef inline
     #    define inline __inline
    -#  endif 
    +#  endif
     #  ifndef strcasecmp
     #    define strcasecmp _stricmp
    -#  endif 
    +#  endif
     #if _MSC_VER < 1900
          extern int snprintf(char*, size_t, const char*, ...);
     #endif
    -#endif 
    -
    -#ifdef __cplusplus
    -	extern "C"
    -	{
     #endif
     
     /* gd.h: declarations file for the graphic-draw module.
    @@ -131,9 +126,9 @@ extern "C" {
        must be 32 bits wide or more.
     
        True colors are repsented as follows:
    -   
    +
        ARGB
    -	
    +
        Where 'A' (alpha channel) occupies only the
        LOWER 7 BITS of the MSB. This very small
        loss of alpha channel resolution allows gd 2.x
    @@ -209,7 +204,7 @@ extern "C" {
      * Group: Effects
      *
      * The layering effect
    - * 
    + *
      * When pixels are drawn the new colors are "mixed" with the background
      * depending on the effect.
      *
    @@ -286,7 +281,7 @@ enum gdPaletteQuantizationMethod {
      *
      *  GD_BELL				 - Bell
      *  GD_BESSEL			 - Bessel
    - *  GD_BILINEAR_FIXED 	 - fixed point bilinear 
    + *  GD_BILINEAR_FIXED 	 - fixed point bilinear
      *  GD_BICUBIC 			 - Bicubic
      *  GD_BICUBIC_FIXED 	 - fixed point bicubic integer
      *  GD_BLACKMAN			 - Blackman
    @@ -346,7 +341,7 @@ typedef double (* interpolation_method )(double);
     
     /*
        Group: Types
    - 
    +
        typedef: gdImage
     
        typedef: gdImagePtr
    @@ -513,7 +508,7 @@ gdPointF, *gdPointFPtr;
       structure.
     
       Please see the files gdfontl.c and gdfontl.h for an example of
    -  the proper declaration of this structure. 
    +  the proper declaration of this structure.
     
       > typedef struct {
       >   // # of characters in font
    @@ -710,7 +705,7 @@ BGD_DECLARE(void) gdImageDestroy (gdImagePtr im);
        alpha channel value of 'color'; default is to overwrite.
        Tiling and line styling are also implemented
        here. All other gd drawing functions pass through this call,
    -   allowing for many useful effects. 
    +   allowing for many useful effects.
        Overlay and multiply effects are used when gdImageAlphaBlending
        is passed gdEffectOverlay and gdEffectMultiply */
     
    @@ -768,14 +763,14 @@ BGD_DECLARE(void) gdFontCacheShutdown (void);
     BGD_DECLARE(void) gdFreeFontCache (void);
     
     /* Calls gdImageStringFT. Provided for backwards compatibility only. */
    -BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, char *fontlist,
    +BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, const char *fontlist,
                                           double ptsize, double angle, int x, int y,
    -                                      char *string);
    +                                      const char *string);
     
     /* FreeType 2 text output */
    -BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist,
    +BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, const char *fontlist,
                                          double ptsize, double angle, int x, int y,
    -                                     char *string);
    +                                     const char *string);
     
     
     /*
    @@ -808,7 +803,7 @@ typedef struct {
     				    then, on return, xshow is a malloc'ed
     				    string containing xshow position data for
     				    the last string.
    -				    
    +
     				    NB. The caller is responsible for gdFree'ing
     				    the xshow string.
     				 */
    @@ -817,7 +812,7 @@ typedef struct {
     				    string containing the actual font file path name
     				    used, which can be interesting when fontconfig
     				    is in use.
    -				    
    +
     				    The caller is responsible for gdFree'ing the
     				    fontpath string.
     				 */
    @@ -857,9 +852,9 @@ BGD_DECLARE(int) gdFTUseFontConfig(int flag);
     #define gdFTEX_Big5 2
     #define gdFTEX_Adobe_Custom 3
     
    -BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *fontlist,
    +BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, const char *fontlist,
                                            double ptsize, double angle, int x, int y,
    -                                       char *string, gdFTStringExtraPtr strex);
    +                                       const char *string, gdFTStringExtraPtr strex);
     
     
     /*
    @@ -977,16 +972,16 @@ BGD_DECLARE(void) gdImageColorDeallocate (gdImagePtr im, int color);
        anything up to 256. If the original source image
        includes photographic information or anything that
        came out of a JPEG, 256 is strongly recommended.
    -   
    +
        Better yet, don't use these function -- write real
        truecolor PNGs and JPEGs. The disk space gain of
        conversion to palette is not great (for small images
        it can be negative) and the quality loss is ugly.
    -   
    +
        DIFFERENCES: gdImageCreatePaletteFromTrueColor creates and
        returns a new image. gdImageTrueColorToPalette modifies
        an existing image, and the truecolor pixels are discarded.
    -   
    +
        gdImageTrueColorToPalette() returns TRUE on success, FALSE on failure.
     */
     
    @@ -1092,7 +1087,7 @@ BGD_DECLARE(void) gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quantiza
     
     /**
      * Group: GifAnim
    - * 
    + *
      *   Legal values for Disposal. gdDisposalNone is always used by
      *   the built-in optimizer if previm is passed.
      *
    @@ -1318,7 +1313,7 @@ BGD_DECLARE(gdImagePtr) gdImageCopyGaussianBlurred(gdImagePtr src, int radius,
      * Macro: gdImageSX
      *
      * Gets the width (in pixels) of an image.
    - * 
    + *
      * Parameters:
      *   im - The image.
      */
    @@ -1536,11 +1531,11 @@ BGD_DECLARE(void) gdImageFlipBoth(gdImagePtr im);
      * Group: Crop
      *
      * Constants: gdCropMode
    - *  GD_CROP_DEFAULT - Default crop mode (4 corners or background)
    + *  GD_CROP_DEFAULT     - Same as GD_CROP_TRANSPARENT
      *  GD_CROP_TRANSPARENT - Crop using the transparent color
    - *  GD_CROP_BLACK - Crop black borders
    - *  GD_CROP_WHITE - Crop white borders
    - *  GD_CROP_SIDES - Crop using colors of the 4 corners
    + *  GD_CROP_BLACK       - Crop black borders
    + *  GD_CROP_WHITE       - Crop white borders
    + *  GD_CROP_SIDES       - Crop using colors of the 4 corners
      *
      * See also:
      *   - <gdImageCropAuto>
    @@ -1634,16 +1629,11 @@ BGD_DECLARE(int) gdReleaseVersion(void);
     BGD_DECLARE(const char *) gdExtraVersion(void);
     BGD_DECLARE(const char *) gdVersionString(void);
     
    -
    -#ifdef __cplusplus
    -}
    -#endif
    -
     /* newfangled special effects */
     #include "gdfx.h"
     
    -#endif				/* GD_H */
    -
     #ifdef __cplusplus
     }
     #endif
    +
    +#endif				/* GD_H */
    diff --git a/Build/source/libs/gd/libgd-src/src/gd2copypal.c b/Build/source/libs/gd/libgd-src/src/gd2copypal.c
    index eaa67b55e6f..5a4675585d3 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd2copypal.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd2copypal.c
    @@ -1,4 +1,3 @@
    -
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    diff --git a/Build/source/libs/gd/libgd-src/src/gd2togif.c b/Build/source/libs/gd/libgd-src/src/gd2togif.c
    index 5a0be19b378..5b15994d01c 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd2togif.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd2togif.c
    @@ -43,4 +43,3 @@ int main(int argc, char **argv)
     
     	return 0;
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/gd2topng.c b/Build/source/libs/gd/libgd-src/src/gd2topng.c
    index 6c0626f3b30..5e8ca8740db 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd2topng.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd2topng.c
    @@ -1,4 +1,3 @@
    -
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    @@ -52,11 +51,7 @@ main (int argc, char **argv)
     		gdImageDestroy (im);
     		exit (1);
     	}
    -#ifdef HAVE_LIBPNG
     	gdImagePng (im, out);
    -#else
    -	fprintf(stderr, "No PNG library support available.\n");
    -#endif
     	fclose (out);
     	gdImageDestroy (im);
     
    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 7b29c1a5a3a..5bef2d2ab29 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_bmp.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_bmp.c
    @@ -19,12 +19,12 @@
      * Read and write BMP images.
      */
     
    -/* $Id$ */
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
     
     #include <stdio.h>
    +#include <limits.h>
     #include <math.h>
     #include <string.h>
     #include <stdlib.h>
    @@ -47,6 +47,8 @@ static int bmp_read_4bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp
     static int bmp_read_8bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp_hdr_t *header);
     static int bmp_read_rle(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info);
     
    +static int _gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression);
    +
     #define BMP_DEBUG(s)
     
     static int gdBMPPutWord(gdIOCtx *out, int w)
    @@ -87,8 +89,10 @@ BGD_DECLARE(void *) gdImageBmpPtr(gdImagePtr im, int *size, int compression)
     	void *rv;
     	gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
     	if (out == NULL) return NULL;
    -	gdImageBmpCtx(im, out, compression);
    -	rv = gdDPExtractData(out, size);
    +	if (!_gdImageBmpCtx(im, out, compression))
    +		rv = gdDPExtractData(out, size);
    +	else
    +		rv = NULL;
     	out->gd_free(out);
     	return rv;
     }
    @@ -141,6 +145,11 @@ BGD_DECLARE(void) gdImageBmp(gdImagePtr im, FILE *outFile, int compression)
     		compression - whether to apply RLE or not.
     */
     BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
    +{
    +	_gdImageBmpCtx(im, out, compression);
    +}
    +
    +static int _gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
     {
     	int bitmap_size = 0, info_size, total_size, padding;
     	int i, row, xpos, pixel;
    @@ -148,6 +157,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
     	unsigned char *uncompressed_row = NULL, *uncompressed_row_start = NULL;
     	FILE *tmpfile_for_compression = NULL;
     	gdIOCtxPtr out_original = NULL;
    +	int ret = 1;
     
     	/* No compression if its true colour or we don't support seek */
     	if (im->trueColor) {
    @@ -325,6 +335,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression)
     		out_original = NULL;
     	}
     
    +	ret = 0;
     cleanup:
     	if (tmpfile_for_compression) {
     #ifdef _WIN32
    @@ -338,7 +349,7 @@ cleanup:
     	if (out_original) {
     		out_original->gd_free(out_original);
     	}
    -	return;
    +	return ret;
     }
     
     static int compress_row(unsigned char *row, int length)
    @@ -636,6 +647,9 @@ static int bmp_read_windows_v3_info(gdIOCtxPtr infile, bmp_info_t *info)
     		return 1;
     	}
     
    +	/* Unlikely, but possible -- largest signed value won't fit in unsigned. */
    +	if (info->height == 0 || info->height == INT_MIN)
    +		return 1;
     	if (info->height < 0) {
     		info->topdown = 1;
     		info->height = -info->height;
    @@ -645,8 +659,9 @@ static int bmp_read_windows_v3_info(gdIOCtxPtr infile, bmp_info_t *info)
     
     	info->type = BMP_PALETTE_4;
     
    -	if (info->width <= 0 || info->height <= 0 || info->numplanes <= 0 ||
    -	        info->depth <= 0  || info->numcolors < 0 || info->mincolors < 0) {
    +	/* Height was checked above. */
    +	if (info->width <= 0 || info->numplanes <= 0 || info->depth <= 0 ||
    +	        info->numcolors < 0 || info->mincolors < 0) {
     		return 1;
     	}
     
    @@ -667,11 +682,16 @@ static int bmp_read_os2_v1_info(gdIOCtxPtr infile, bmp_info_t *info)
     	/* OS2 v1 doesn't support topdown */
     	info->topdown = 0;
     
    +	/* The spec says the depth can only be a few value values. */
    +	if (info->depth != 1 && info->depth != 4 && info->depth != 8 &&
    +	        info->depth != 16 && info->depth != 24) {
    +		return 1;
    +	}
    +
     	info->numcolors = 1 << info->depth;
     	info->type = BMP_PALETTE_3;
     
    -	if (info->width <= 0 || info->height <= 0 || info->numplanes <= 0 ||
    -	        info->depth <= 0 || info->numcolors < 0) {
    +	if (info->width <= 0 || info->height <= 0 || info->numplanes <= 0) {
     		return 1;
     	}
     
    @@ -701,6 +721,9 @@ static int bmp_read_os2_v2_info(gdIOCtxPtr infile, bmp_info_t *info)
     		return 1;
     	}
     
    +	/* Unlikely, but possible -- largest signed value won't fit in unsigned. */
    +	if (info->height == 0 || info->height == INT_MIN)
    +		return 1;
     	if (info->height < 0) {
     		info->topdown = 1;
     		info->height = -info->height;
    @@ -710,12 +733,12 @@ static int bmp_read_os2_v2_info(gdIOCtxPtr infile, bmp_info_t *info)
     
     	info->type = BMP_PALETTE_4;
     
    -	if (info->width <= 0 || info->height <= 0 || info->numplanes <= 0 ||
    -	        info->depth <= 0  || info->numcolors < 0 || info->mincolors < 0) {
    +	/* Height was checked above. */
    +	if (info->width <= 0 || info->numplanes <= 0 || info->depth <= 0 ||
    +	        info->numcolors < 0 || info->mincolors < 0) {
     		return 1;
     	}
     
    -
     	return 0;
     }
     
    @@ -758,7 +781,7 @@ static int bmp_read_direct(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, b
     		return 1;
     	}
     
    -	/* There is a chance the data isn't until later, would be wierd but it is possible */
    +	/* There is a chance the data isn't until later, would be weird but it is possible */
     	if (gdTell(infile) != header->off) {
     		/* Should make sure we don't seek past the file size */
     		if (!gdSeek(infile, header->off)) {
    @@ -855,7 +878,7 @@ static int bmp_read_1bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp
     
     	im->colorsTotal = info->numcolors;
     
    -	/* There is a chance the data isn't until later, would be wierd but it is possible */
    +	/* There is a chance the data isn't until later, would be weird but it is possible */
     	if (gdTell(infile) != header->off) {
     		/* Should make sure we don't seek past the file size */
     		if (!gdSeek(infile, header->off)) {
    @@ -863,8 +886,8 @@ static int bmp_read_1bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp
     		}
     	}
     
    -	/* The line must be divisible by 4, else its padded with NULLs */
    -	padding = ((int)ceil(0.1 * info->width)) % 4;
    +	/* The line must be aligned on a 32 bits word, else it is padded with zeros */
    +	padding = (info->width + 7) / 8 % 4;
     	if (padding) {
     		padding = 4 - padding;
     	}
    @@ -925,7 +948,7 @@ static int bmp_read_4bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp
     
     	im->colorsTotal = info->numcolors;
     
    -	/* There is a chance the data isn't until later, would be wierd but it is possible */
    +	/* There is a chance the data isn't until later, would be weird but it is possible */
     	if (gdTell(infile) != header->off) {
     		/* Should make sure we don't seek past the file size */
     		if (!gdSeek(infile, header->off)) {
    @@ -1012,7 +1035,7 @@ static int bmp_read_8bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp
     
     	im->colorsTotal = info->numcolors;
     
    -	/* There is a chance the data isn't until later, would be wierd but it is possible */
    +	/* There is a chance the data isn't until later, would be weird but it is possible */
     	if (gdTell(infile) != header->off) {
     		/* Should make sure we don't seek past the file size */
     		if (!gdSeek(infile, header->off)) {
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_color_match.c b/Build/source/libs/gd/libgd-src/src/gd_color_match.c
    index f0842b69ed7..f0194302ee1 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_color_match.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_color_match.c
    @@ -31,9 +31,8 @@ BGD_DECLARE(int) gdImageColorMatch (gdImagePtr im1, gdImagePtr im2)
     		return -4; /* At least 1 color must be allocated */
     	}
     
    -	buf = (unsigned long *)gdMalloc(sizeof(unsigned long) * 5 * im2->colorsTotal);
    -	memset (buf, 0, sizeof(unsigned long) * 5 * im2->colorsTotal );
    -
    +	buf = (unsigned long *)gdMalloc(sizeof(unsigned long) * 5 * gdMaxColors);
    +	memset (buf, 0, sizeof(unsigned long) * 5 * gdMaxColors );
     	for (x=0; x < im1->sx; x++) {
     		for( y=0; y<im1->sy; y++ ) {
     			color = im2->pixels[y][x];
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_crop.c b/Build/source/libs/gd/libgd-src/src/gd_crop.c
    index 1a6a11f73ca..68f58c695cc 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_crop.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_crop.c
    @@ -6,7 +6,7 @@
      * 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:
      *   (start code)
      *   im2 = gdImageAutoCrop(im, GD_CROP_SIDES);
    @@ -48,6 +48,7 @@ static int gdGuessBackgroundColorFromCorners(gdImagePtr im, int *color);
     BGD_DECLARE(gdImagePtr) gdImageCrop(gdImagePtr src, const gdRect *crop)
     {
     	gdImagePtr dst;
    +	int alphaBlendingFlag;
     
     	if (gdImageTrueColor(src)) {
     		dst = gdImageCreateTrueColor(crop->width, crop->height);
    @@ -55,7 +56,10 @@ BGD_DECLARE(gdImagePtr) gdImageCrop(gdImagePtr src, const gdRect *crop)
     		dst = gdImageCreate(crop->width, crop->height);
     	}
     	if (!dst) return NULL;
    +	alphaBlendingFlag = dst->alphaBlendingFlag;
    +	gdImageAlphaBlending(dst, gdEffectReplace);
     	gdImageCopy(dst, src, 0, 0, crop->x, crop->y, crop->width, crop->height);
    +	gdImageAlphaBlending(dst, alphaBlendingFlag);
     
     	return dst;
     }
    @@ -126,30 +130,24 @@ BGD_DECLARE(gdImagePtr) gdImageCropAuto(gdImagePtr im, const unsigned int mode)
     		}
     	}
     
    -	/* Nothing to do > bye
    -	 * Duplicate the image?
    -	 */
    -	if (y == height - 1) {
    +	/* Whole image would be cropped > bye */
    +	if (match) {
     		return NULL;
     	}
     
    -	crop.y = y -1;
    +	crop.y = y - 1;
    +
     	match = 1;
     	for (y = height - 1; match && y >= 0; y--) {
     		for (x = 0; match && x < width; x++) {
     			match = (color == gdImageGetPixel(im, x,y));
     		}
     	}
    -
    -	if (y == 0) {
    -		crop.height = height - crop.y + 1;
    -	} else {
    -		crop.height = y - crop.y + 2;
    -	}
    +	crop.height = y - crop.y + 2;
     
     	match = 1;
     	for (x = 0; match && x < width; x++) {
    -		for (y = 0; match && y < crop.y + crop.height - 1; y++) {
    +		for (y = 0; match && y < crop.y + crop.height; y++) {
     			match = (color == gdImageGetPixel(im, x,y));
     		}
     	}
    @@ -157,7 +155,7 @@ BGD_DECLARE(gdImagePtr) gdImageCropAuto(gdImagePtr im, const unsigned int mode)
     
     	match = 1;
     	for (x = width - 1; match && x >= 0; x--) {
    -		for (y = 0; match &&  y < crop.y + crop.height - 1; y++) {
    +		for (y = 0; match &&  y < crop.y + crop.height; y++) {
     			match = (color == gdImageGetPixel(im, x,y));
     		}
     	}
    @@ -179,7 +177,7 @@ BGD_DECLARE(gdImagePtr) gdImageCropAuto(gdImagePtr im, const unsigned int mode)
      *   im        - The image.
      *   color     - The crop color.
      *   threshold - The crop threshold.
    - * 
    + *
      * Returns:
      *   The newly created cropped image, or NULL on failure.
      *
    @@ -221,31 +219,24 @@ BGD_DECLARE(gdImagePtr) gdImageCropThreshold(gdImagePtr im, const unsigned int c
     		}
     	}
     
    -	/* Pierre
    -	 * Nothing to do > bye
    -	 * Duplicate the image?
    -	 */
    -	if (y == height - 1) {
    +	/* Whole image would be cropped > bye */
    +	if (match) {
     		return NULL;
     	}
     
    -	crop.y = y -1;
    +	crop.y = y - 1;
    +
     	match = 1;
     	for (y = height - 1; match && y >= 0; y--) {
     		for (x = 0; match && x < width; x++) {
     			match = (gdColorMatch(im, color, gdImageGetPixel(im, x, y), threshold)) > 0;
     		}
     	}
    -
    -	if (y == 0) {
    -		crop.height = height - crop.y + 1;
    -	} else {
    -		crop.height = y - crop.y + 2;
    -	}
    +	crop.height = y - crop.y + 2;
     
     	match = 1;
     	for (x = 0; match && x < width; x++) {
    -		for (y = 0; match && y < crop.y + crop.height - 1; y++) {
    +		for (y = 0; match && y < crop.y + crop.height; y++) {
     			match = (gdColorMatch(im, color, gdImageGetPixel(im, x,y), threshold)) > 0;
     		}
     	}
    @@ -253,7 +244,7 @@ BGD_DECLARE(gdImagePtr) gdImageCropThreshold(gdImagePtr im, const unsigned int c
     
     	match = 1;
     	for (x = width - 1; match && x >= 0; x--) {
    -		for (y = 0; match &&  y < crop.y + crop.height - 1; y++) {
    +		for (y = 0; match &&  y < crop.y + crop.height; y++) {
     			match = (gdColorMatch(im, color, gdImageGetPixel(im, x,y), threshold)) > 0;
     		}
     	}
    @@ -290,7 +281,7 @@ static int gdGuessBackgroundColorFromCorners(gdImagePtr im, int *color)
     	} else if (tl == tr  || tl == bl || tl == br) {
     		*color = tl;
     		return 2;
    -	} else if (tr == bl) {
    +	} else if (tr == bl || tr == br) {
     		*color = tr;
     		return 2;
     	} else if (br == bl) {
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_filename.c b/Build/source/libs/gd/libgd-src/src/gd_filename.c
    index fd61677d581..d668b01ddf3 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_filename.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_filename.c
    @@ -28,7 +28,7 @@ static void BGD_STDCALL writejpeg(gdImagePtr im, FILE *out) {
     
     static void BGD_STDCALL writewbmp(gdImagePtr im, FILE *out) {
         int fg = gdImageColorClosest(im, 0, 0, 0);
    -    
    +
         gdImageWBMP(im, fg, out);
     }/* writejpeg*/
     
    @@ -61,7 +61,7 @@ static struct FileType {
         {".jpeg",   gdImageCreateFromJpeg,  writejpeg,      NULL},
     #endif
     
    -#ifdef HAVE_LIBTIFF    
    +#ifdef HAVE_LIBTIFF
         {".tiff",   gdImageCreateFromTiff,  gdImageTiff,    NULL},
         {".tif" ,   gdImageCreateFromTiff,  gdImageTiff,    NULL},
     #endif
    @@ -90,7 +90,7 @@ ftype(const char *filename) {
         /* Find the file extension (i.e. the last period in the string. */
         ext = strrchr(filename, '.');
         if (!ext) return NULL;
    -    
    +
         for (n = 0; Types[n].ext; n++) {
             if (strcasecmp(ext, Types[n].ext) == 0) {
                 return &Types[n];
    @@ -103,7 +103,7 @@ ftype(const char *filename) {
     
     /*
       Function: gdSupportsFileType
    -  
    +
         Tests if a given file type is supported by GD.
     
         Given the name of an image file (which does not have to exist),
    @@ -145,7 +145,7 @@ ftype(const char *filename) {
         GD_TRUE (1) if the file type is supported, GD_FALSE (0) if not.
     
     */
    -BGD_DECLARE(int) 
    +BGD_DECLARE(int)
     gdSupportsFileType(const char *filename, int writing) {
         struct FileType *entry = ftype(filename);
         return !!entry && (!writing || !!entry->writer);
    @@ -159,7 +159,7 @@ gdSupportsFileType(const char *filename, int writing) {
     
         Given the path to a file, <gdImageCreateFromFile> will open the
         file, read its contents with the appropriate _gdImageCreateFrom*_
    -    function and return it.  
    +    function and return it.
     
         File type is determined by the filename extension, so having an
         incorrect extension will probably not work.  For example, renaming
    @@ -179,12 +179,12 @@ gdSupportsFileType(const char *filename, int writing) {
     
     */
     
    -BGD_DECLARE(gdImagePtr) 
    +BGD_DECLARE(gdImagePtr)
     gdImageCreateFromFile(const char *filename) {
         struct FileType *entry = ftype(filename);
         FILE *fh;
         gdImagePtr result;
    - 
    +
         if (!entry) return NULL;
         if (entry->loader) return entry->loader((char *)filename);
         if (!entry->reader) return NULL;
    @@ -193,7 +193,7 @@ gdImageCreateFromFile(const char *filename) {
         if (!fh) return NULL;
     
         result = entry->reader(fh);
    -    
    +
         fclose(fh);
     
         return result;
    @@ -235,7 +235,7 @@ gdImageCreateFromFile(const char *filename) {
     
     */
     
    -BGD_DECLARE(int) 
    +BGD_DECLARE(int)
     gdImageFile(gdImagePtr im, const char *filename) {
         struct FileType *entry = ftype(filename);
         FILE *fh;
    @@ -251,4 +251,3 @@ gdImageFile(gdImagePtr im, const char *filename) {
     
         return GD_TRUE;
     }/* gdImageFile*/
    -
    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 c81e1c177e5..7855190f090 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_filter.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_filter.c
    @@ -537,6 +537,7 @@ BGD_DECLARE(int) gdImageConvolution(gdImagePtr src, float filter[3][3], float fi
     	for ( y=0; y<src->sy; y++) {
     		for(x=0; x<src->sx; x++) {
     			new_r = new_g = new_b = 0;
    +			pxl = f(srcback, x, y);
     			new_a = gdImageAlpha(srcback, pxl);
     
     			for (j=0; j<3; j++) {
    @@ -898,7 +899,7 @@ applyCoeffsLine(gdImagePtr src, gdImagePtr dst, int line, int linelen,
                 const int srcpx = (axis == HORIZONTAL) ?
                     src->tpixels[line][rndx] :
                     src->tpixels[rndx][line];
    -                
    +
                 r += coeff * (double)gdTrueColorGetRed(srcpx);
                 g += coeff * (double)gdTrueColorGetGreen(srcpx);
                 b += coeff * (double)gdTrueColorGetBlue(srcpx);
    @@ -912,7 +913,7 @@ applyCoeffsLine(gdImagePtr src, gdImagePtr dst, int line, int linelen,
     
     
     static void
    -applyCoeffs(gdImagePtr src, gdImagePtr dst, double *coeffs, int radius, 
    +applyCoeffs(gdImagePtr src, gdImagePtr dst, double *coeffs, int radius,
                 gdAxis axis)
     {
         int line, numlines, linelen;
    @@ -939,7 +940,7 @@ applyCoeffs(gdImagePtr src, gdImagePtr dst, double *coeffs, int radius,
         _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
    @@ -987,10 +988,10 @@ applyCoeffs(gdImagePtr src, gdImagePtr dst, double *coeffs, int radius,
     
         FILE *in;
         gdImagePtr result, src;
    -     
    +
         in = fopen("foo.png", "rb");
         src = gdImageCreateFromPng(in);
    -    
    +
         result = gdImageCopyGaussianBlurred(im, src->sx / 10, -1.0);
     
         (end code)
    @@ -1034,7 +1035,7 @@ gdImageCopyGaussianBlurred(gdImagePtr src, int radius, double sigma)
     			gdFree(coeffs);
                 return NULL;
             }/* if */
    -		
    +
             freeSrc = 1;
     	}/* if */
     
    @@ -1059,4 +1060,3 @@ gdImageCopyGaussianBlurred(gdImagePtr src, int radius, double sigma)
     
         return result;
     }/* gdImageCopyGaussianBlurred*/
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_gd.c b/Build/source/libs/gd/libgd-src/src/gd_gd.c
    index a1e9ebf343b..0771fd37cbe 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_gd.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_gd.c
    @@ -12,21 +12,34 @@
      *  - color header (either truecolor or palette)
      *  - image data
      *
    - * All numbers are stored in big-endian format.
    + * All numbers are stored in big-endian format. Note that all GD output is done
    + * in the GD 2.x format (not to be confused with the GD2 format), but input may
    + * also be in the GD 1.x format.
      *
    - * File header structure:
    + * GD 1.x file header structure:
    + *  width  - 1 word
    + *  height - 1 word
    + *
    + * GD 1.x color header (palette only):
    + *  count       - 1 byte (the number of used palette colors)
    + *  transparent - 1 word (257 signals no transparency)
    + *  palette     - 256×3 bytes (RGB triplets)
    + *
    + * GD 2.x file header structure:
      *  signature     - 1 word ("\xFF\xFE" for truecolor, "\xFF\xFF" for palette)
      *  width         - 1 word
      *  height        - 1 word
      *
    - * Truecolor image color header:
    + * GD 2.x truecolor image color header:
      *  truecolor   - 1 byte (always "\001")
    - *  transparent - 1 dword (ARGB color)
    + *  transparent - 1 dword (ARGB color); "\377\377\377\377" means that no
    + *				  transparent color is set
      *
    - * Palette image color header:
    + * GD 2.x palette image color header:
      *  truecolor   - 1 byte (always "\0")
      *  count       - 1 word (the number of used palette colors)
    - *  transparent - 1 dword (ARGB color)
    + *  transparent - 1 dword (palette index); "\377\377\377\377" means that no
    + *				  transparent color is set
      *  palette     - 256 dwords (RGBA colors)
      *
      * Image data:
    @@ -44,6 +57,10 @@
     #include <string.h>
     #include <stdlib.h>
     #include "gd.h"
    +#include "gd_errors.h"
    +
    +/* 2.3: gd is no longer mandatory */
    +#if ENABLE_GD_FORMATS
     
     #define TRUE 1
     #define FALSE 0
    @@ -91,9 +108,10 @@ _gdGetColors (gdIOCtx * in, gdImagePtr im, int gd2xFlag)
     		if (!gdGetWord (&im->transparent, in)) {
     			goto fail1;
     		}
    -		if (im->transparent == 257) {
    -			im->transparent = (-1);
    -		}
    +	}
    +	/* Make sure transparent index is within bounds of the palette. */
    +	if (!(im->trueColor) && (im->transparent >= im->colorsTotal || im->transparent < 0)) {
    +		im->transparent = (-1);
     	}
     	GD2_DBG (printf
     	         ("Palette had %d colours (T=%d)\n", im->colorsTotal,
    @@ -216,7 +234,7 @@ fail1:
         > in = fopen("mygd.gd", "rb");
         > im = gdImageCreateFromGd(in);
         > fclose(in);
    -    > // ... Use the image ... 
    +    > // ... Use the image ...
         > gdImageDestroy(im);
     */
     BGD_DECLARE(gdImagePtr) gdImageCreateFromGd (FILE * inFile)
    @@ -387,3 +405,41 @@ BGD_DECLARE(void *) gdImageGdPtr (gdImagePtr im, int *size)
     	out->gd_free (out);
     	return rv;
     }
    +
    +#else /* no HAVE_LIBZ or !ENABLE_GD_FORMATS */
    +
    +static void _noGdError (void)
    +{
    +	gd_error("GD image support has been disabled\n");
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromGd (FILE * inFile)
    +{
    +	_noGdError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromGdPtr (int size, void *data)
    +{
    +	_noGdError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromGdCtx (gdIOCtxPtr in)
    +{
    +	_noGdError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(void) gdImageGd (gdImagePtr im, FILE * outFile)
    +{
    +	_noGdError();
    +}
    +
    +BGD_DECLARE(void *) gdImageGdPtr (gdImagePtr im, int *size)
    +{
    +	_noGdError();
    +	return NULL;
    +}
    +
    +#endif /* ENABLE_GD_FORMATS */
    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 85106bc9273..760e85b9fd9 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_gd2.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_gd2.c
    @@ -47,16 +47,18 @@
      *  offset - 1 dword
      *  size   - 1 dword
      *
    - * There are x_chunk_count * y_chunk_count chunk headers. 
    + * There are x_chunk_count * y_chunk_count chunk headers.
      *
      * Truecolor image color header:
      *  truecolor   - 1 byte (always "\001")
    - *  transparent - 1 dword (ARGB color)
    + *  transparent - 1 dword (ARGB color); "\377\377\377\377" means that no
    + *				  transparent color is set
      *
      * Palette image color header:
      *  truecolor   - 1 byte (always "\0")
      *  count       - 1 word (the number of used palette colors)
    - *  transparent - 1 dword (ARGB color)
    + *  transparent - 1 dword (palette index); "\377\377\377\377" means that no
    + *				  transparent color is set
      *  palette     - 256 dwords (RGBA colors)
      *
      * Chunk structure:
    @@ -83,7 +85,7 @@
     /* 2.03: gd2 is no longer mandatory */
     /* JCE - test after including gd.h so that HAVE_LIBZ can be set in
      * a config.h file included by gd.h */
    -#ifdef HAVE_LIBZ
    +#if defined(HAVE_LIBZ) && ENABLE_GD_FORMATS
     #include <zlib.h>
     
     #define TRUE 1
    @@ -210,7 +212,7 @@ _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy,
     	GD2_DBG (printf ("%d Chunks vertically\n", *ncy));
     
     	if (gd2_compressed (*fmt)) {
    -		if (*ncx <= 0 || *ncy <= 0 || *ncx > INT_MAX / *ncy) {
    +		if (overflow2(*ncx, *ncy)) {
     			GD2_DBG(printf ("Illegal chunk counts: %d * %d\n", *ncx, *ncy));
     			goto fail1;
     		}
    @@ -236,7 +238,7 @@ _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy,
     			if (gdGetInt (&cidx[i].size, in) != 1) {
     				goto fail2;
     			};
    -			if (cidx[i].offset < 0 || cidx[i].size < 0)
    +			if (cidx[i].offset < 0 || cidx[i].size < 0 || cidx[i].size == INT_MAX)
     				goto fail2;
     		};
     		*chunkIdx = cidx;
    @@ -405,7 +407,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ptr (int size, void *data)
       Function: gdImageCreateFromGd2Ctx
     
       Reads in a GD2 image via a <gdIOCtx> struct.  See
    -  <gdImageCreateFromGd2>.  
    +  <gdImageCreateFromGd2>.
     */
     BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
     {
    @@ -436,8 +438,13 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
     	}
     
     	bytesPerPixel = im->trueColor ? 4 : 1;
    +	if (overflow2(ncx, ncy))
    +		goto fail;
     	nc = ncx * ncy;
     
    +	if (overflow2(ncy, cs) || overflow2(ncx, cs) || overflow2(bytesPerPixel, cs))
    +		goto fail;
    +
     	if (gd2_compressed (fmt)) {
     		/* Find the maximum compressed chunk size. */
     		compMax = 0;
    @@ -1127,57 +1134,61 @@ BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size)
     	return rv;
     }
     
    -#else /* no HAVE_LIBZ */
    -static void _noLibzError (void)
    +#else /* no HAVE_LIBZ or !ENABLE_GD_FORMATS */
    +static void _noGd2Error (void)
     {
    +#if !ENABLE_GD_FORMATS
    +	gd_error("GD2 image support has been disabled\n");
    +#else
     	gd_error("GD2 support is not available - no libz\n");
    +#endif
     }
     
     BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2 (FILE * inFile)
     {
    -	_noLibzError();
    +	_noGd2Error();
     	return NULL;
     }
     
     BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
     {
    -	_noLibzError();
    +	_noGd2Error();
     	return NULL;
     }
     
     BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Part (FILE * inFile, int srcx, int srcy, int w, int h)
     {
    -	_noLibzError();
    +	_noGd2Error();
     	return NULL;
     }
     
     BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2Ptr (int size, void *data)
     {
    -	_noLibzError();
    +	_noGd2Error();
     	return NULL;
     }
     
     BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartCtx (gdIOCtx * in, int srcx, int srcy, int w, int h)
     {
    -	_noLibzError();
    +	_noGd2Error();
     	return NULL;
     }
     
     BGD_DECLARE(gdImagePtr) gdImageCreateFromGd2PartPtr (int size, void *data, int srcx, int srcy, int w,
             int h)
     {
    -	_noLibzError();
    +	_noGd2Error();
     	return NULL;
     }
     
     BGD_DECLARE(void) gdImageGd2 (gdImagePtr im, FILE * outFile, int cs, int fmt)
     {
    -	_noLibzError();
    +	_noGd2Error();
     }
     
     BGD_DECLARE(void *) gdImageGd2Ptr (gdImagePtr im, int cs, int fmt, int *size)
     {
    -	_noLibzError();
    +	_noGd2Error();
     	return NULL;
     }
     #endif /* HAVE_LIBZ */
    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 c1954480143..1ae0e32b23f 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
    @@ -53,7 +53,7 @@ static int set_verbose(void)
     
     #define BitSet(byte, bit)	(((byte) & (bit)) == (bit))
     
    -#define ReadOK(file, buffer, len) (gdGetBuf(buffer, len, file) > 0)
    +#define ReadOK(file, buffer, len) (gdGetBuf(buffer, len, file) == len)
     
     #define LM_to_uint(a, b)	(((b)<<8)|(a))
     
    @@ -149,7 +149,7 @@ static void ReadImage (gdImagePtr im, gdIOCtx *fd, int len, int height, unsigned
         > in = fopen("mygif.gif", "rb");
         > im = gdImageCreateFromGif(in);
         > fclose(in);
    -    > // ... Use the image ... 
    +    > // ... Use the image ...
         > gdImageDestroy(im);
     
     */
    @@ -335,11 +335,6 @@ terminated:
     		return 0;
     	}
     
    -	if(!im->colorsTotal) {
    -		gdImageDestroy(im);
    -		return 0;
    -	}
    -
     	/* Check for open colors at the end, so
     	 * we can reduce colorsTotal and ultimately
     	 * BitsPerPixel */
    @@ -351,6 +346,11 @@ terminated:
     		}
     	}
     
    +	if(!im->colorsTotal) {
    +		gdImageDestroy(im);
    +		return 0;
    +	}
    +
     	return im;
     }
     
    @@ -447,7 +447,7 @@ static int
     GetCode_(gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroDataBlockP)
     {
     	int i, j, ret;
    -	unsigned char count;
    +	int count;
     
     	if(flag) {
     		scd->curbit = 0;
    @@ -601,6 +601,10 @@ LWZReadByte_(gdIOCtx *fd, LZW_STATIC_DATA *sd, char flag, int input_code_size, i
     				/* Bad compressed data stream */
     				return -1;
     			}
    +			if(code >= (1 << MAX_LWZ_BITS)) {
    +				/* Corrupted code */
    +				return -1;
    +			}
     
     			*sd->sp++ = sd->table[1][code];
     
    @@ -610,6 +614,10 @@ LWZReadByte_(gdIOCtx *fd, LZW_STATIC_DATA *sd, char flag, int input_code_size, i
     
     			code = sd->table[0][code];
     		}
    +		if(code >= (1 << MAX_LWZ_BITS)) {
    +			/* Corrupted code */
    +			return -1;
    +		}
     
     		*sd->sp++ = sd->firstcode = sd->table[1][code];
     
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_gif_out.c b/Build/source/libs/gd/libgd-src/src/gd_gif_out.c
    index 6fe707d8423..2dd866a74a6 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_gif_out.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_gif_out.c
    @@ -99,6 +99,11 @@ static void char_init(GifCtx *ctx);
     static void char_out(int c, GifCtx *ctx);
     static void flush_char(GifCtx *ctx);
     
    +static int _gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out);
    +static int _gdImageGifAnimAddCtx(gdImagePtr im, gdIOCtxPtr out,
    +                                       int LocalCM, int LeftOfs, int TopOfs,
    +                                       int Delay, int Disposal,
    +                                       gdImagePtr previm);
     
     
     
    @@ -131,8 +136,11 @@ BGD_DECLARE(void *) gdImageGifPtr(gdImagePtr im, int *size)
     	void *rv;
     	gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
     	if (out == NULL) return NULL;
    -	gdImageGifCtx(im, out);
    -	rv = gdDPExtractData(out, size);
    +	if (!_gdImageGifCtx(im, out)) {
    +		rv = gdDPExtractData(out, size);
    +	} else {
    +		rv = NULL;
    +	}
     	out->gd_free(out);
     	return rv;
     }
    @@ -220,6 +228,12 @@ BGD_DECLARE(void) gdImageGif(gdImagePtr im, FILE *outFile)
     
     */
     BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
    +{
    +	_gdImageGifCtx(im, out);
    +}
    +
    +/* returns 0 on success, 1 on failure */
    +static int _gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
     {
     	gdImagePtr pim = 0, tim = im;
     	int interlace, BitsPerPixel;
    @@ -231,7 +245,7 @@ BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
     		based temporary image. */
     		pim = gdImageCreatePaletteFromTrueColor(im, 1, 256);
     		if(!pim) {
    -			return;
    +			return 1;
     		}
     		tim = pim;
     	}
    @@ -247,6 +261,8 @@ BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out)
     		/* Destroy palette based temporary image. */
     		gdImageDestroy(	pim);
     	}
    +
    +	return 0;
     }
     
     
    @@ -475,8 +491,11 @@ BGD_DECLARE(void *) gdImageGifAnimAddPtr(gdImagePtr im, int *size, int LocalCM,
     	void *rv;
     	gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
     	if (out == NULL) return NULL;
    -	gdImageGifAnimAddCtx(im, out, LocalCM, LeftOfs, TopOfs, Delay, Disposal, previm);
    -	rv = gdDPExtractData(out, size);
    +	if (!_gdImageGifAnimAddCtx(im, out, LocalCM, LeftOfs, TopOfs, Delay, Disposal, previm)) {
    +		rv = gdDPExtractData(out, size);
    +	} else {
    +		rv = NULL;
    +	}
     	out->gd_free(out);
     	return rv;
     }
    @@ -546,18 +565,18 @@ BGD_DECLARE(void *) gdImageGifAnimAddPtr(gdImagePtr im, int *size, int LocalCM,
         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
    @@ -566,7 +585,7 @@ BGD_DECLARE(void *) gdImageGifAnimAddPtr(gdImagePtr im, int *size, int LocalCM,
         // 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
    @@ -578,7 +597,7 @@ BGD_DECLARE(void *) gdImageGifAnimAddPtr(gdImagePtr im, int *size, int LocalCM,
         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);
    @@ -636,6 +655,15 @@ BGD_DECLARE(void) gdImageGifAnimAddCtx(gdImagePtr im, gdIOCtxPtr out,
                                            int LocalCM, int LeftOfs, int TopOfs,
                                            int Delay, int Disposal,
                                            gdImagePtr previm)
    +{
    +	_gdImageGifAnimAddCtx(im, out, LocalCM, LeftOfs, TopOfs, Delay, Disposal, previm);
    +}
    +
    +/* returns 0 on success, 1 on failure */
    +static int _gdImageGifAnimAddCtx(gdImagePtr im, gdIOCtxPtr out,
    +                                       int LocalCM, int LeftOfs, int TopOfs,
    +                                       int Delay, int Disposal,
    +                                       gdImagePtr previm)
     {
     	gdImagePtr pim = NULL, tim = im;
     	int interlace, transparent, BitsPerPixel;
    @@ -653,7 +681,7 @@ BGD_DECLARE(void) gdImageGifAnimAddCtx(gdImagePtr im, gdIOCtxPtr out,
     			based temporary image. */
     		pim = gdImageCreatePaletteFromTrueColor(im, 1, 256);
     		if (!pim) {
    -			return;
    +			return 1;
     		}
     		tim = pim;
     	}
    @@ -826,12 +854,14 @@ break_right:
     	    out, tim->sx, tim->sy, LeftOfs, TopOfs, interlace, transparent,
     	    Delay, Disposal, BitsPerPixel,
     	    LocalCM ? tim->red : 0, tim->green, tim->blue, tim);
    +	return 0;
     
     fail_end:
     	if(pim) {
     		/* Destroy palette based temporary image. */
     		gdImageDestroy(pim);
     	}
    +	return 1;
     }
     
     
    @@ -1374,7 +1404,7 @@ static void compress(int init_bits, gdIOCtxPtr outfile, gdImagePtr im, GifCtx *c
     	output((code_int)ctx->ClearCode, ctx);
     
     #ifdef SIGNED_COMPARE_SLOW
    -	while((c = GIFNextPixel(im)) != (unsigned) EOF) {
    +	while((c = GIFNextPixel(im, ctx)) != (unsigned) EOF) {
     #else /* SIGNED_COMPARE_SLOW */
     	while((c = GIFNextPixel(im, ctx)) != EOF) {
     #endif /* SIGNED_COMPARE_SLOW */
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_intern.h b/Build/source/libs/gd/libgd-src/src/gd_intern.h
    index 86d817e6d4a..3bf1fa884b7 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_intern.h
    +++ b/Build/source/libs/gd/libgd-src/src/gd_intern.h
    @@ -1,10 +1,7 @@
     #ifndef GD_INTERN_H
     #define GD_INTERN_H
     
    -#ifdef HAVE_LIMITS_H
     #include <limits.h>
    -#endif
    -
     
     #ifndef MAXPATHLEN
     # ifdef PATH_MAX
    @@ -87,4 +84,3 @@ gdImagePtr gdImageRotate270(gdImagePtr src, int ignoretransparent);
     
     
     #endif
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_interpolation.c b/Build/source/libs/gd/libgd-src/src/gd_interpolation.c
    index b9a206551dc..21f7315f10a 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_interpolation.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_interpolation.c
    @@ -41,8 +41,8 @@
     	downscaling using the fixed point implementations are usually much faster
     	than the existing gdImageCopyResampled while having a similar or better
     	quality.
    -	
    -	For image rotations, the optimized versions have a lazy antialiasing for 
    +
    +	For image rotations, the optimized versions have a lazy antialiasing for
     	the edges of the images. For a much better antialiased result, the affine
     	function is recommended.
     */
    @@ -78,7 +78,7 @@ TODO:
     # include <emmintrin.h>
     #endif
     
    -static gdImagePtr gdImageScaleBilinear(gdImagePtr im, 
    +static gdImagePtr gdImageScaleBilinear(gdImagePtr im,
                                            const unsigned int new_width,
                                            const unsigned int new_height);
     static gdImagePtr gdImageScaleBicubicFixed(gdImagePtr src,
    @@ -278,7 +278,7 @@ static double KernelBessel_Q1(const double x)
     static double KernelBessel_Order1(double x)
     {
     	double p, q;
    -	
    +
     	if (x == 0.0)
     		return (0.0f);
     	p = x;
    @@ -617,7 +617,7 @@ static double filter_welsh(const double x)
     
     #if defined(_MSC_VER) && !defined(inline)
     # define inline __inline
    -#endif 
    +#endif
     
     /* keep it for future usage for affine copy over an existing image, targetting fix for 2.2.2 */
     #ifdef FUNCTION_NOT_USED_YET
    @@ -654,7 +654,7 @@ static inline int _color_blend (const int dst, const int src)
     	}
     }
     
    -static inline int _setEdgePixel(const gdImagePtr src, unsigned int x, unsigned int y, gdFixed coverage, const int bgColor) 
    +static inline int _setEdgePixel(const gdImagePtr src, unsigned int x, unsigned int y, gdFixed coverage, const int bgColor)
     {
     	const gdFixed f_127 = gd_itofx(127);
     	register int c = src->tpixels[y][x];
    @@ -948,8 +948,8 @@ _gdScaleOneAxis(gdImagePtr pSrc, gdImagePtr dst,
     		double r = 0, g = 0, b = 0, a = 0;
     		const int left = contrib->ContribRow[ndx].Left;
     		const int right = contrib->ContribRow[ndx].Right;
    -		int *dest = (axis == HORIZONTAL) ? 
    -			&dst->tpixels[row][ndx] : 
    +		int *dest = (axis == HORIZONTAL) ?
    +			&dst->tpixels[row][ndx] :
     			&dst->tpixels[ndx][row];
     
     		int i;
    @@ -958,7 +958,7 @@ _gdScaleOneAxis(gdImagePtr pSrc, gdImagePtr dst,
     		for (i = left; i <= right; i++) {
     			const int left_channel = i - left;
     			const int srcpx = (axis == HORIZONTAL) ?
    -				pSrc->tpixels[row][i] : 
    +				pSrc->tpixels[row][i] :
     				pSrc->tpixels[i][row];
     
     			r += contrib->ContribRow[ndx].Weights[left_channel]
    @@ -1313,8 +1313,8 @@ static gdImagePtr gdImageScaleBilinearTC(gdImagePtr im, const unsigned int new_w
     			gdFixed f_j = gd_itofx(j);
     			gdFixed f_a = gd_mulfx(f_i, f_dy);
     			gdFixed f_b = gd_mulfx(f_j, f_dx);
    -			const gdFixed m = gd_fxtoi(f_a);
    -			const gdFixed n = gd_fxtoi(f_b);
    +			const long m = gd_fxtoi(f_a);
    +			const long n = gd_fxtoi(f_b);
     			gdFixed f_f = f_a - gd_itofx(m);
     			gdFixed f_g = f_b - gd_itofx(n);
     
    @@ -1686,7 +1686,7 @@ static int gdRotatedImageSize(gdImagePtr src, const float angle, gdRectPtr bbox)
         return GD_TRUE;
     }
     
    -static gdImagePtr 
    +static gdImagePtr
     gdImageRotateNearestNeighbour(gdImagePtr src, const float degrees,
                                   const int bgColor)
     {
    @@ -1799,7 +1799,7 @@ gdImageRotateGeneric(gdImagePtr src, const float degrees, const int bgColor)
     	return dst;
     }
     
    -/** 
    +/**
      * Function: gdImageRotateInterpolated
      *
      * Rotate an image
    @@ -1821,7 +1821,7 @@ gdImageRotateGeneric(gdImagePtr src, const float degrees, const int bgColor)
      */
     BGD_DECLARE(gdImagePtr) gdImageRotateInterpolated(const gdImagePtr src, const float angle, int bgcolor)
     {
    -	/* round to two decimals and keep the 100x multiplication to use it in the common square angles 
    +	/* round to two decimals and keep the 100x multiplication to use it in the common square angles
     	   case later. Keep the two decimal precisions so smaller rotation steps can be done, useful for
     	   slow animations, f.e. */
     	const int angle_rounded = fmod((int) floorf(angle * 100), 360 * 100);
    @@ -1953,7 +1953,7 @@ BGD_DECLARE(int) gdTransformAffineGetImage(gdImagePtr *dst,
     	if (!src->trueColor) {
     		gdImagePaletteToTrueColor(src);
     	}
    -	
    +
     	/* Translate to dst origin (0,0) */
     	gdAffineTranslate(m, -bbox.x, -bbox.y);
     	gdAffineConcat(m, affine, m);
    @@ -1975,6 +1975,51 @@ BGD_DECLARE(int) gdTransformAffineGetImage(gdImagePtr *dst,
     	}
     }
     
    +/** Function: getPixelRgbInterpolated
    + *   get the index of the image's colors
    + *
    + * Parameters:
    + *  im - Image to draw the transformed image
    + *  tcolor - TrueColor
    + *
    + * Return:
    + *  index of colors
    + */
    +static int getPixelRgbInterpolated(gdImagePtr im, const int tcolor)
    +{
    +	unsigned char r, g, b, a;
    +	int ct, i;
    +
    +	b = (unsigned char)tcolor;
    +	g = (unsigned char)(tcolor >> 8);
    +	r = (unsigned char)(tcolor >> 16);
    +	a = (unsigned char)(tcolor >> 24);
    +
    +	b = CLAMP(b, 0, 255);
    +	g = CLAMP(g, 0, 255);
    +	r = CLAMP(r, 0, 255);
    +	a = CLAMP(a, 0, 127);
    +
    +	for (i = 0; i < im->colorsTotal; i++) {
    +	    if (im->red[i] == r && im->green[i] == g && im->blue[i] == b && im->alpha[i] == a) {
    +			return i;
    +		}
    +	}
    +
    +	ct = im->colorsTotal;
    +	if (ct == gdMaxColors) {
    +		return -1;
    +	}
    +
    +	im->colorsTotal++;
    +	im->red[ct] = r;
    +	im->green[ct] = g;
    +	im->blue[ct] = b;
    +	im->alpha[ct] = a;
    +	im->open[ct] = 0;
    +
    +	return ct;
    +}
     /**
      * Function: gdTransformAffineCopy
      *  Applies an affine transformation to a region and copy the result
    @@ -1988,7 +2033,7 @@ BGD_DECLARE(int) gdTransformAffineGetImage(gdImagePtr *dst,
      *  src_area - Rectangular region to rotate in the src image
      *
      * Returns:
    - *  GD_TRUE if the affine is rectilinear or GD_FALSE
    + *  GD_TRUE on success or GD_FALSE on failure
      */
     BGD_DECLARE(int) gdTransformAffineCopy(gdImagePtr dst,
     		  int dst_x, int dst_y,
    @@ -2001,21 +2046,21 @@ BGD_DECLARE(int) gdTransformAffineCopy(gdImagePtr dst,
     	int backup_clipx1, backup_clipy1, backup_clipx2, backup_clipy2;
     	register int x, y, src_offset_x, src_offset_y;
     	double inv[6];
    -	int *dst_p;
     	gdPointF pt, src_pt;
     	gdRect bbox;
     	int end_x, end_y;
    -	gdInterpolationMethod interpolation_id_bak = GD_DEFAULT;
    +	gdInterpolationMethod interpolation_id_bak = src->interpolation_id;
     
     	/* These methods use special implementations */
     	if (src->interpolation_id == GD_BILINEAR_FIXED || src->interpolation_id == GD_BICUBIC_FIXED || src->interpolation_id == GD_NEAREST_NEIGHBOUR) {
    -		interpolation_id_bak = src->interpolation_id;
    -		
     		gdImageSetInterpolationMethod(src, GD_BICUBIC);
     	}
     
    -
     	gdImageClipRectangle(src, src_region);
    +	c1x = src_region->x;
    +	c1y = src_region->y;
    +	c2x = src_region->x + src_region->width -1;
    +	c2y = src_region->y + src_region->height -1;
     
     	if (src_region->x > 0 || src_region->y > 0
     		|| src_region->width < gdImageSX(src)
    @@ -2039,13 +2084,14 @@ BGD_DECLARE(int) gdTransformAffineCopy(gdImagePtr dst,
     		return GD_FALSE;
     	}
     
    -	gdImageGetClip(dst, &c1x, &c1y, &c2x, &c2y);
    -
     	end_x = bbox.width  + abs(bbox.x);
     	end_y = bbox.height + abs(bbox.y);
     
     	/* Get inverse affine to let us work with destination -> source */
    -	gdAffineInvert(inv, affine);
    +	if (gdAffineInvert(inv, affine) == GD_FALSE) {
    +		gdImageSetInterpolationMethod(src, interpolation_id_bak);
    +		return GD_FALSE;
    +	}
     
     	src_offset_x =  src_region->x;
     	src_offset_y =  src_region->y;
    @@ -2053,28 +2099,51 @@ BGD_DECLARE(int) gdTransformAffineCopy(gdImagePtr dst,
     	if (dst->alphaBlendingFlag) {
     		for (y = bbox.y; y <= end_y; y++) {
     			pt.y = y + 0.5;
    -			for (x = 0; x <= end_x; x++) {
    +			for (x = bbox.x; x <= end_x; x++) {
     				pt.x = x + 0.5;
     				gdAffineApplyToPointF(&src_pt, &pt, inv);
    -				gdImageSetPixel(dst, dst_x + x, dst_y + y, getPixelInterpolated(src, src_offset_x + src_pt.x, src_offset_y + src_pt.y, 0));
    +				if (floor(src_offset_x + src_pt.x) < c1x
    +					|| floor(src_offset_x + src_pt.x) > c2x
    +					|| floor(src_offset_y + src_pt.y) < c1y
    +					|| floor(src_offset_y + src_pt.y) > c2y) {
    +					continue;
    +				}
    +				gdImageSetPixel(dst, dst_x + x, dst_y + y, getPixelInterpolated(src, (int)(src_offset_x + src_pt.x), (int)(src_offset_y + src_pt.y), 0));
     			}
     		}
     	} else {
    -		for (y = 0; y <= end_y; y++) {
    -			pt.y = y + 0.5 + bbox.y;
    +		for (y = bbox.y; y <= end_y; y++) {
    +			unsigned char *dst_p = NULL;
    +			int *tdst_p = NULL;
    +
    +			pt.y = y + 0.5;
     			if ((dst_y + y) < 0 || ((dst_y + y) > gdImageSY(dst) -1)) {
     				continue;
     			}
    -			dst_p = dst->tpixels[dst_y + y] + dst_x;
    +			if (dst->trueColor) {
    +				tdst_p = dst->tpixels[dst_y + y] + dst_x;
    +			} else {
    +				dst_p = dst->pixels[dst_y + y] + dst_x;
    +			}
     
    -			for (x = 0; x <= end_x; x++) {
    -				pt.x = x + 0.5 + bbox.x;
    +			for (x = bbox.x; x <= end_x; x++) {
    +				pt.x = x + 0.5;
     				gdAffineApplyToPointF(&src_pt, &pt, inv);
     
     				if ((dst_x + x) < 0 || (dst_x + x) > (gdImageSX(dst) - 1)) {
     					break;
     				}
    -				*(dst_p++) = getPixelInterpolated(src, src_offset_x + src_pt.x, src_offset_y + src_pt.y, -1);
    +				if (floor(src_offset_x + src_pt.x) < c1x
    +					|| floor(src_offset_x + src_pt.x) > c2x
    +					|| floor(src_offset_y + src_pt.y) < c1y
    +					|| floor(src_offset_y + src_pt.y) > c2y) {
    +					continue;
    +				}
    +				if (dst->trueColor) {
    +					*(tdst_p + dst_x + x) = getPixelInterpolated(src, (int)(src_offset_x + src_pt.x), (int)(src_offset_y + src_pt.y), -1);
    +				} else {
    +					*(dst_p + dst_x + x) = getPixelRgbInterpolated(dst, getPixelInterpolated(src, (int)(src_offset_x + src_pt.x), (int)(src_offset_y + src_pt.y), -1));
    +				}
     			}
     		}
     	}
    @@ -2137,8 +2206,8 @@ BGD_DECLARE(int) gdTransformAffineBoundingBox(gdRectPtr src, const double affine
     	}
     	bbox->x = (int) min.x;
     	bbox->y = (int) min.y;
    -	bbox->width  = (int) ceil((max.x - min.x)) + 1;
    -	bbox->height = (int) ceil(max.y - min.y) + 1;
    +	bbox->width  = (int) ceil((max.x - min.x));
    +	bbox->height = (int) ceil(max.y - min.y);
     
     	return GD_TRUE;
     }
    @@ -2236,9 +2305,9 @@ BGD_DECLARE(int) gdImageSetInterpolationMethod(gdImagePtr im, gdInterpolationMet
     		case GD_DEFAULT:
     			id = GD_LINEAR;
     			im->interpolation = filter_linear;
    +			break;
     		default:
     			return 0;
    -			break;
     	}
     	im->interpolation_id = id;
     	return 1;
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_io.c b/Build/source/libs/gd/libgd-src/src/gd_io.c
    index 03b83472120..4cb1adefcdb 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_io.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_io.c
    @@ -129,7 +129,7 @@ int gdGetWordLSB(signed short int *result, gdIOCtx *ctx)
     
     int gdGetInt(int *result, gdIOCtx *ctx)
     {
    -	int r;
    +	unsigned int r;
     
     	r = (ctx->getC)(ctx);
     	if(r == EOF) {
    @@ -164,7 +164,7 @@ int gdGetInt(int *result, gdIOCtx *ctx)
     
     int gdGetIntLSB(signed int *result, gdIOCtx *ctx)
     {
    -	int c = 0;
    +	unsigned int c;
     	unsigned int r = 0;
     
     	c = (ctx->getC) (ctx);
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_io.h b/Build/source/libs/gd/libgd-src/src/gd_io.h
    index 1039d597dc8..c7a5025591f 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_io.h
    +++ b/Build/source/libs/gd/libgd-src/src/gd_io.h
    @@ -1,12 +1,12 @@
    -#ifdef __cplusplus
    -extern "C" {
    -#endif
    -
     #ifndef GD_IO_H
     #define GD_IO_H 1
     
     #include <stdio.h>
     
    +#ifdef __cplusplus
    +extern "C" {
    +#endif
    +
     #ifdef VMS
     #	define Putchar gdPutchar
     #endif
    @@ -17,7 +17,7 @@ extern "C" {
       typedef: 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>.
    @@ -45,14 +45,14 @@ extern "C" {
       > {
       >   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! 
    +  >
    +  >   // 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;
     
    @@ -93,8 +93,8 @@ int gdGetIntLSB(signed int *result, gdIOCtx *ctx);
     int gdSeek(gdIOCtx *ctx, const int offset);
     long gdTell(gdIOCtx *ctx);
     
    -#endif
    -
     #ifdef __cplusplus
     }
     #endif
    +
    +#endif
    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 25c0980a9b3..ec259e7a69f 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
    @@ -6,7 +6,7 @@
      * Based on GD.pm code by Lincoln Stein for interfacing to libgd.
      * Added support for reading as well as support for 'tell' and 'seek'.
      *
    - * As will all I/O modules, most functions are for local use only (called
    + * As with all I/O modules, most functions are for local use only (called
      * via function pointers in the I/O context).
      *
      * gdDPExtractData is the exception to this: it will return the pointer to
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_io_stream.cxx b/Build/source/libs/gd/libgd-src/src/gd_io_stream.cxx
    index 28021afc1ae..0d64c72c2b7 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_io_stream.cxx
    +++ b/Build/source/libs/gd/libgd-src/src/gd_io_stream.cxx
    @@ -1,12 +1,11 @@
     /* *****************************************************************************
    -** $Id$
     ** Initial file written and documented by:
     ** Kevin Shepherd <kshepherd@php.net> December 2007
     ** of Scarlet Line http://www.scarletline.com/
     *******************************************************************************/
     /** \file gd_io_stream.cxx
     	\brief Implementation of the methods of the gdIOCtx std stream specialization.
    -	
    +
     	Implements the derived specializations of gdIOCtx.
     	These methods are not called by users of libgd, they
     	are internal implementation.
    @@ -22,7 +21,7 @@
     #include "gd_io_stream.h"
     
     /**	Read into buffer from stream
    -	Return the number of bytes successfully read.  
    +	Return the number of bytes successfully read.
     	If an error occurs, or the end-of-file is reached, the return value
     	is a short byte	count (or zero).
     */
    @@ -33,7 +32,7 @@ int	istreamIOCtx::Getbuf (struct gdIOCtx * ctx, void * buf, int size)
     	return _str->gcount();
     	}
     /**	Write from buffer to stream
    -	Return the number of bytes successfully written.  
    +	Return the number of bytes successfully written.
     	If an error occurs, or the end-of-file is reached, the return value
     	is a short byte	count (or zero).
     */
    @@ -58,7 +57,7 @@ void	istreamIOCtx::Putchar (struct gdIOCtx * , int )
     	}
     
     /** Seek to position offset from the beginning of the stream
    -	must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! 
    +	must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek!
     */
     int	istreamIOCtx::Seek (struct gdIOCtx * ctx, const int pos)
     	{
    @@ -82,7 +81,7 @@ void	istreamIOCtx::FreeCtx (struct gdIOCtx * ctx)
     	}
     
     /**	Read into buffer from stream
    -	Return the number of bytes successfully read.  
    +	Return the number of bytes successfully read.
     	If an error occurs, or the end-of-file is reached, the return value
     	is a short byte	count (or zero).
     */
    @@ -91,7 +90,7 @@ int	ostreamIOCtx::Getbuf (struct gdIOCtx * , void * , int )
     	return 0;
     	}
     /**	Write from buffer to stream
    -	Return the number of bytes successfully written.  
    +	Return the number of bytes successfully written.
     	If an error occurs, or the end-of-file is reached, the return value
     	is a short byte	count (or zero).
     */
    @@ -119,7 +118,7 @@ void	ostreamIOCtx::Putchar (struct gdIOCtx * ctx, int c)
     	}
     
     /** Seek to position offset from the beginning of the stream
    -	must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek! 
    +	must return 1 on SUCCESS, 0 on FAILURE. Unlike fseek!
     */
     int	ostreamIOCtx::Seek (struct gdIOCtx * ctx, const int pos)
     	{
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_io_stream.h b/Build/source/libs/gd/libgd-src/src/gd_io_stream.h
    index 703548fec26..dd76d7786a0 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_io_stream.h
    +++ b/Build/source/libs/gd/libgd-src/src/gd_io_stream.h
    @@ -1,5 +1,4 @@
     /* *****************************************************************************
    -** $Id$
     ** Initial file written and documented by:
     ** Kevin Shepherd <kshepherd@php.net> December 2007
     ** of Scarlet Line http://www.scarletline.com/
    @@ -27,9 +26,9 @@
     		}
     	gdImageDestroy(im_in);
     */
    -#ifdef __cplusplus
     #ifndef _gd_io_stream_h
     #define _gd_io_stream_h
    +#ifdef __cplusplus
     
     #include "gd.h"
     #include <iostream>
    @@ -122,5 +121,5 @@ inline gdIOCtx * gdNewOstreamCtx (std::ostream * __stream)
     	return new ostreamIOCtx(* __stream);
     }
     
    -#endif /* _gd_io_stream_h */
     #endif /* __cplusplus */
    +#endif /* _gd_io_stream_h */
    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 271ef46e003..f2dd329aac0 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_jpeg.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_jpeg.c
    @@ -47,12 +47,6 @@
     # define HAVE_BOOLEAN
     #endif
     
    -/* JCE undef two symbols that we don't need anymore but which are
    -   may be defined in config.h from ./configure but which are
    -   redefined incompatibly in jpeglib.h */
    -#undef HAVE_STDDEF_H
    -#undef HAVE_STDLIB_H
    -
     /* 1.8.1: remove dependency on jinclude.h */
     #include "jpeglib.h"
     #include "jerror.h"
    @@ -123,6 +117,8 @@ static void fatal_jpeg_error(j_common_ptr cinfo)
     	exit(99);
     }
     
    +static int _gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality);
    +
     /*
      * Write IM to OUTFILE as a JFIF-formatted JPEG image, using quality
      * QUALITY.  If QUALITY is in the range 0-100, increasing values
    @@ -237,8 +233,11 @@ BGD_DECLARE(void *) gdImageJpegPtr(gdImagePtr im, int *size, int quality)
     	void *rv;
     	gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
     	if (out == NULL) return NULL;
    -	gdImageJpegCtx(im, out, quality);
    -	rv = gdDPExtractData(out, size);
    +	if (!_gdImageJpegCtx(im, out, quality)) {
    +		rv = gdDPExtractData(out, size);
    +	} else {
    +		rv = NULL;
    +	}
     	out->gd_free(out);
     	return rv;
     }
    @@ -255,10 +254,16 @@ void jpeg_gdIOCtx_dest(j_compress_ptr cinfo, gdIOCtx *outfile);
     
         im      - The image to write.
         outfile - The output sink.
    -    quality - Image quality. 
    +    quality - Image quality.
     
     */
     BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
    +{
    +	_gdImageJpegCtx(im, outfile, quality);
    +}
    +
    +/* returns 0 on success, 1 on failure */
    +static int _gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
     {
     	struct jpeg_compress_struct cinfo;
     	struct jpeg_error_mgr jerr;
    @@ -293,7 +298,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
     		if(row) {
     			gdFree(row);
     		}
    -		return;
    +		return 1;
     	}
     
     	cinfo.err->emit_message = jpeg_emit_message;
    @@ -334,7 +339,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
     	if(row == 0) {
     		gd_error("gd-jpeg: error: unable to allocate JPEG row structure: gdCalloc returns NULL\n");
     		jpeg_destroy_compress(&cinfo);
    -		return;
    +		return 1;
     	}
     
     	rowptr[0] = row;
    @@ -411,6 +416,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
     	jpeg_finish_compress(&cinfo);
     	jpeg_destroy_compress(&cinfo);
     	gdFree(row);
    +	return 0;
     }
     
     
    @@ -496,7 +502,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegEx(FILE *inFile, int ignore_warning
       Function: gdImageCreateFromJpegPtr
     
       Parameters:
    -  
    +
         size    - size of JPEG data in bytes.
         data    - pointer to JPEG data.
     
    @@ -511,7 +517,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegPtr(int size, void *data)
       Function: gdImageCreateFromJpegPtrEx
     
       Parameters:
    -  
    +
         size            - size of JPEG data in bytes.
         data            - pointer to JPEG data.
         ignore_warning  - if true, ignore recoverable warnings
    @@ -1198,4 +1204,63 @@ void jpeg_gdIOCtx_dest(j_compress_ptr cinfo, gdIOCtx *outfile)
     	dest->outfile = outfile;
     }
     
    +#else /* !HAVE_LIBJPEG */
    +
    +static void _noJpegError(void)
    +{
    +	gd_error("JPEG image support has been disabled\n");
    +}
    +
    +BGD_DECLARE(void) gdImageJpeg(gdImagePtr im, FILE *outFile, int quality)
    +{
    +	_noJpegError();
    +}
    +
    +BGD_DECLARE(void *) gdImageJpegPtr(gdImagePtr im, int *size, int quality)
    +{
    +	_noJpegError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality)
    +{
    +	_noJpegError();
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromJpeg(FILE *inFile)
    +{
    +	_noJpegError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegEx(FILE *inFile, int ignore_warning)
    +{
    +	_noJpegError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegPtr(int size, void *data)
    +{
    +	_noJpegError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegPtrEx(int size, void *data, int ignore_warning)
    +{
    +	_noJpegError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegCtx(gdIOCtx *infile)
    +{
    +	_noJpegError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromJpegCtxEx(gdIOCtx *infile, int ignore_warning)
    +{
    +	_noJpegError();
    +	return NULL;
    +}
    +
     #endif /* HAVE_LIBJPEG */
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_matrix.c b/Build/source/libs/gd/libgd-src/src/gd_matrix.c
    index b7827a07034..ada63e694ca 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_matrix.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_matrix.c
    @@ -57,13 +57,13 @@ BGD_DECLARE(int) gdAffineApplyToPointF (gdPointFPtr dst, const gdPointFPtr src,
      *  <gdAffineIdentity>
      *
      * Returns:
    - *  GD_TRUE if the affine is rectilinear or GD_FALSE
    + *  GD_TRUE on success or GD_FALSE on failure
      */
     BGD_DECLARE(int) gdAffineInvert (double dst[6], const double src[6])
     {
     	double r_det = (src[0] * src[3] - src[1] * src[2]);
     
    -	if (r_det <= 0.0) {
    +	if (fabs(r_det) <= 0.0) {
     		return GD_FALSE;
     	}
     
    @@ -333,4 +333,3 @@ BGD_DECLARE(int) gdAffineEqual (const double m1[6], const double m2[6])
     	  fabs (m1[4] - m2[4]) < GD_EPSILON &&
     	  fabs (m1[5] - m2[5]) < GD_EPSILON);
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_nnquant.c b/Build/source/libs/gd/libgd-src/src/gd_nnquant.c
    index 19190b7ed84..9129d84f354 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_nnquant.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_nnquant.c
    @@ -464,7 +464,7 @@ int verbose;
     	radius = initradius;
     
     	rad = radius >> radiusbiasshift;
    -	
    +
     	for (i=0; i<rad; i++)
     		nnq->radpower[i] = alpha*(((rad*rad - i*i)*radbias)/(rad*rad));
     
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_nnquant.h b/Build/source/libs/gd/libgd-src/src/gd_nnquant.h
    index b054fb1da44..11643b7d622 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_nnquant.h
    +++ b/Build/source/libs/gd/libgd-src/src/gd_nnquant.h
    @@ -1,4 +1,3 @@
    -
     /* maximum number of colours that can be used.
       actual number is now passed to initcolors */
     #define MAXNETSIZE	256
    @@ -15,5 +14,3 @@
     #define prime4		503
     
     #define minpicturebytes	(4*prime4)		/* minimum size for input image */
    -
    -
    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 c9e3545de86..8119cf39c05 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_png.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_png.c
    @@ -1,4 +1,3 @@
    -/* $Id$ */
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    @@ -592,7 +591,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile)
         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
    @@ -772,6 +771,7 @@ static int _gdImagePngCtxEx(gdImagePtr im, gdIOCtx * outfile, int level)
     	png_color palette[gdMaxColors];
     	png_structp png_ptr;
     	png_infop info_ptr;
    +	png_bytep *row_pointers = NULL;
     	volatile int transparent = im->transparent;
     	volatile int remap = FALSE;
     #ifdef PNG_SETJMP_SUPPORTED
    @@ -806,6 +806,13 @@ static int _gdImagePngCtxEx(gdImagePtr im, gdIOCtx * outfile, int level)
     	if (setjmp(jbw.jmpbuf)) {
     		gd_error("gd-png error: setjmp returns error condition\n");
     		png_destroy_write_struct (&png_ptr, &info_ptr);
    +
    +		if (row_pointers) {
    +			for (i = 0; i < height; ++i)
    +				gdFree(row_pointers[i]);
    +			gdFree(row_pointers);
    +		}
    +
     		return 1;
     	}
     #endif
    @@ -981,7 +988,6 @@ static int _gdImagePngCtxEx(gdImagePtr im, gdIOCtx * outfile, int level)
     		/* performance optimizations by Phong Tran */
     		int channels = im->saveAlphaFlag ? 4 : 3;
     		/* Our little 7-bit alpha channel trick costs us a bit here. */
    -		png_bytep *row_pointers;
     		unsigned char *pOutputRow;
     		int **ptpixels = im->tpixels;
     		int *pThisRow;
    @@ -993,7 +999,8 @@ static int _gdImagePngCtxEx(gdImagePtr im, gdIOCtx * outfile, int level)
     			ret = 1;
     			goto bail;
     		}
    -		row_pointers = gdMalloc (sizeof (png_bytep) * height);
    +		/* Need to use calloc so we can clean it up sanely in the error handler. */
    +		row_pointers = gdCalloc(height, sizeof (png_bytep));
     		if (row_pointers == NULL) {
     			gd_error("gd-png error: unable to allocate row_pointers\n");
     			ret = 1;
    @@ -1082,5 +1089,57 @@ bail:
     	return ret;
     }
     
    +#else /* !HAVE_LIBPNG */
    +
    +static void _noPngError(void)
    +{
    +	gd_error("PNG image support has been disabled\n");
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromPng (FILE * inFile)
    +{
    +	_noPngError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromPngPtr (int size, void *data)
    +{
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile)
    +{
    +	return NULL;
    +}
    +
    +BGD_DECLARE(void) gdImagePngEx (gdImagePtr im, FILE * outFile, int level)
    +{
    +	_noPngError();
    +}
    +
    +BGD_DECLARE(void) gdImagePng (gdImagePtr im, FILE * outFile)
    +{
    +	_noPngError();
    +}
    +
    +BGD_DECLARE(void *) gdImagePngPtr (gdImagePtr im, int *size)
    +{
    +	return NULL;
    +}
    +
    +BGD_DECLARE(void *) gdImagePngPtrEx (gdImagePtr im, int *size, int level)
    +{
    +	return NULL;
    +}
    +
    +BGD_DECLARE(void) gdImagePngCtx (gdImagePtr im, gdIOCtx * outfile)
    +{
    +	_noPngError();
    +}
    +
    +BGD_DECLARE(void) gdImagePngCtxEx (gdImagePtr im, gdIOCtx * outfile, int level)
    +{
    +	_noPngError();
    +}
     
     #endif /* HAVE_LIBPNG */
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_tga.c b/Build/source/libs/gd/libgd-src/src/gd_tga.c
    index f80f0b16fb8..cae9428da50 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_tga.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_tga.c
    @@ -206,7 +206,7 @@ int read_header_tga(gdIOCtx *ctx, oTga *tga)
     int read_image_tga( gdIOCtx *ctx, oTga *tga )
     {
     	int pixel_block_size = (tga->bits / 8);
    -	int image_block_size = (tga->width * tga->height) * pixel_block_size;
    +	int image_block_size;
     	int* decompression_buffer = NULL;
     	unsigned char* conversion_buffer = NULL;
     	int buffer_caret = 0;
    @@ -223,6 +223,7 @@ int read_image_tga( gdIOCtx *ctx, oTga *tga )
     		return -1;
     	}
     
    +	image_block_size = (tga->width * tga->height) * pixel_block_size;
     	if(overflow2(image_block_size, sizeof(int))) {
     		return -1;
     	}
    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 ae65ed7d5e2..4020a6f7054 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_tiff.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_tiff.c
    @@ -27,7 +27,6 @@
     
        ----------------------------------------------------------------------------
      */
    -/* $Id$ */
     
     /**
      * File: TIFF IO
    @@ -790,7 +789,7 @@ static int createFromTiffRgba(TIFF * tif, gdImagePtr im)
     				rgba = buffer[(y * width + x)];
     				a = (0xff - TIFFGetA(rgba)) / 2;
     				color = gdTrueColorAlpha(TIFFGetR(rgba), TIFFGetG(rgba), TIFFGetB(rgba), a);
    -	
    +
     				/* set pixel colour to this colour */
     				gdImageSetPixel(im, x, height - y - 1, color);
     			}
    @@ -993,10 +992,10 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile)
     		goto error;
     	}
     
    -	if (TIFFGetField(tif, TIFFTAG_XRESOLUTION, &res_float)) { 
    +	if (TIFFGetField(tif, TIFFTAG_XRESOLUTION, &res_float)) {
     		im->res_x = (unsigned int)res_float;  //truncate
     	}
    -	if (TIFFGetField(tif, TIFFTAG_YRESOLUTION, &res_float)) { 
    +	if (TIFFGetField(tif, TIFFTAG_YRESOLUTION, &res_float)) {
     		im->res_y = (unsigned int)res_float;  //truncate
     	}
     
    @@ -1070,4 +1069,45 @@ BGD_DECLARE(void *) gdImageTiffPtr(gdImagePtr im, int *size)
     	return rv;
     }
     
    +#else
    +
    +static void _noTiffError(void)
    +{
    +	gd_error("TIFF image support has been disabled\n");
    +}
    +
    +BGD_DECLARE(void) gdImageTiffCtx(gdImagePtr image, gdIOCtx *out)
    +{
    +	_noTiffError();
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffCtx(gdIOCtx *infile)
    +{
    +	_noTiffError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromTiff(FILE *inFile)
    +{
    +	_noTiffError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromTiffPtr(int size, void *data)
    +{
    +	_noTiffError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(void) gdImageTiff(gdImagePtr im, FILE *outFile)
    +{
    +	_noTiffError();
    +}
    +
    +BGD_DECLARE(void *) gdImageTiffPtr(gdImagePtr im, int *size)
    +{
    +	_noTiffError();
    +	return NULL;
    +}
    +
     #endif
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_topal.c b/Build/source/libs/gd/libgd-src/src/gd_topal.c
    index 3419512eee2..5ac226ae8fd 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_topal.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_topal.c
    @@ -1383,7 +1383,7 @@ zeroHistogram (hist3d histogram)
      *   method - The quantization method, see <gdPaletteQuantizationMethod>.
      *   speed  - The 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.
      *
    @@ -1451,7 +1451,7 @@ static int gdImageTrueColorToPaletteBody (gdImagePtr oim, int dither, int colors
      *
      * Returns:
      *   A newly create palette image; NULL on failure.
    - *   
    + *
      * See also:
      *   - <gdImageCreatePaletteFromTrueColor>
      *   - <gdImageTrueColorToPaletteSetMethod>
    @@ -1523,6 +1523,15 @@ static void free_truecolor_image_data(gdImagePtr oim)
     	oim->tpixels = 0;
     }
     
    +#ifdef HAVE_LIBIMAGEQUANT
    +/* liq requires 16 byte aligned heap memory */
    +static void *malloc16(size_t size)
    +{
    +	void *p;
    +	return posix_memalign(&p, 16, size) == 0 ? p : NULL;
    +}
    +#endif
    +
     /*
      * Module initialization routine for 2-pass color quantization.
      */
    @@ -1586,7 +1595,7 @@ static int gdImageTrueColorToPaletteBody (gdImagePtr oim, int dither, int colors
     		nim = gdImageNeuQuant(oim, colorsWanted, oim->paletteQuantizationSpeed ? oim->paletteQuantizationSpeed : 2);
     		if (cimP) {
     			*cimP = nim;
    -		} 
    +		}
     		if (!nim) {
     			return FALSE;
     		} else {
    @@ -1601,7 +1610,7 @@ static int gdImageTrueColorToPaletteBody (gdImagePtr oim, int dither, int colors
     #ifdef HAVE_LIBIMAGEQUANT
     	if (oim->paletteQuantizationMethod == GD_QUANT_DEFAULT ||
     	        oim->paletteQuantizationMethod == GD_QUANT_LIQ) {
    -		liq_attr *attr = liq_attr_create_with_allocator(gdMalloc, gdFree);
    +		liq_attr *attr = liq_attr_create_with_allocator(malloc16, free);
     		liq_image *image;
     		liq_result *remap;
     		int remapped_ok = 0;
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_transform.c b/Build/source/libs/gd/libgd-src/src/gd_transform.c
    index 1a96daaf438..fae1a5851ff 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_transform.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_transform.c
    @@ -120,5 +120,3 @@ BGD_DECLARE(void) gdImageFlipBoth(gdImagePtr im)
     	gdImageFlipVertical(im);
     	gdImageFlipHorizontal(im);
     }
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_wbmp.c b/Build/source/libs/gd/libgd-src/src/gd_wbmp.c
    index 0028273d656..a49bdbecbb1 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_wbmp.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_wbmp.c
    @@ -88,6 +88,8 @@ int gd_getin(void *in)
     	return (gdGetC((gdIOCtx *)in));
     }
     
    +static int _gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out);
    +
     /*
     	Function: gdImageWBMPCtx
     
    @@ -100,6 +102,12 @@ int gd_getin(void *in)
     		out   - the stream where to write
     */
     BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out)
    +{
    +	_gdImageWBMPCtx(image, fg, out);
    +}
    +
    +/* returns 0 on success, 1 on failure */
    +static int _gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out)
     {
     	int x, y, pos;
     	Wbmp *wbmp;
    @@ -107,7 +115,7 @@ BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out)
     	/* create the WBMP */
     	if((wbmp = createwbmp(gdImageSX(image), gdImageSY(image), WBMP_WHITE)) == NULL) {
     		gd_error("Could not create WBMP\n");
    -		return;
    +		return 1;
     	}
     
     	/* fill up the WBMP structure */
    @@ -123,18 +131,22 @@ BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out)
     
     	/* write the WBMP to a gd file descriptor */
     	if(writewbmp(wbmp, &gd_putout, out)) {
    +		freewbmp(wbmp);
     		gd_error("Could not save WBMP\n");
    +		return 1;
     	}
     
     	/* des submitted this bugfix: gdFree the memory. */
     	freewbmp(wbmp);
    +
    +	return 0;
     }
     
     /*
       Function: gdImageCreateFromWBMPCtx
     
       Reads in a WBMP image via a <gdIOCtx> struct.  See
    -  <gdImageCreateFromWBMP>.  
    +  <gdImageCreateFromWBMP>.
     */
     BGD_DECLARE(gdImagePtr) gdImageCreateFromWBMPCtx(gdIOCtx *infile)
     {
    @@ -271,8 +283,11 @@ BGD_DECLARE(void *) gdImageWBMPPtr(gdImagePtr im, int *size, int fg)
     	void *rv;
     	gdIOCtx *out = gdNewDynamicCtx(2048, NULL);
     	if (out == NULL) return NULL;
    -	gdImageWBMPCtx(im, fg, out);
    -	rv = gdDPExtractData(out, size);
    +	if (!_gdImageWBMPCtx(im, fg, out)) {
    +		rv = gdDPExtractData(out, size);
    +	} else {
    +		rv = NULL;
    +	}
     	out->gd_free(out);
     	return rv;
     }
    diff --git a/Build/source/libs/gd/libgd-src/src/gd_webp.c b/Build/source/libs/gd/libgd-src/src/gd_webp.c
    index b5ee2642634..ab15109d548 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_webp.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_webp.c
    @@ -9,7 +9,6 @@
     #endif /* HAVE_CONFIG_H */
     
     
    -#ifdef HAVE_LIBWEBP
     #include <stdio.h>
     #include <math.h>
     #include <string.h>
    @@ -17,6 +16,8 @@
     #include "gd.h"
     #include "gd_errors.h"
     #include "gdhelpers.h"
    +
    +#ifdef HAVE_LIBWEBP
     #include "webp/decode.h"
     #include "webp/encode.h"
     
    @@ -212,7 +213,7 @@ static int _gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quality)
     			}
     			*(p++) = gdTrueColorGetRed(c);
     			*(p++) = gdTrueColorGetGreen(c);
    -			*(p++) = gdTrueColorGetBlue(c); 
    +			*(p++) = gdTrueColorGetBlue(c);
     			*(p++) = a;
     		}
     	}
    @@ -360,4 +361,57 @@ BGD_DECLARE(void *) gdImageWebpPtrEx (gdImagePtr im, int *size, int quality)
     	out->gd_free(out);
     	return rv;
     }
    +
    +#else /* !HAVE_LIBWEBP */
    +
    +static void _noWebpError(void)
    +{
    +	gd_error("WEBP image support has been disabled\n");
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromWebp (FILE * inFile)
    +{
    +	_noWebpError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromWebpPtr (int size, void *data)
    +{
    +	_noWebpError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(gdImagePtr) gdImageCreateFromWebpCtx (gdIOCtx * infile)
    +{
    +	_noWebpError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(void) gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quality)
    +{
    +	_noWebpError();
    +}
    +
    +BGD_DECLARE(void) gdImageWebpEx (gdImagePtr im, FILE * outFile, int quality)
    +{
    +	_noWebpError();
    +}
    +
    +BGD_DECLARE(void) gdImageWebp (gdImagePtr im, FILE * outFile)
    +{
    +	_noWebpError();
    +}
    +
    +BGD_DECLARE(void *) gdImageWebpPtr (gdImagePtr im, int *size)
    +{
    +	_noWebpError();
    +	return NULL;
    +}
    +
    +BGD_DECLARE(void *) gdImageWebpPtrEx (gdImagePtr im, int *size, int quality)
    +{
    +	_noWebpError();
    +	return NULL;
    +}
    +
     #endif /* HAVE_LIBWEBP */
    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 29bc5c2e8d5..cf0545efdb4 100644
    --- a/Build/source/libs/gd/libgd-src/src/gd_xbm.c
    +++ b/Build/source/libs/gd/libgd-src/src/gd_xbm.c
    @@ -169,7 +169,11 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromXbm(FILE * fd)
     			}
     			h[3] = ch;
     		}
    -		sscanf(h, "%x", &b);
    +		if (sscanf(h, "%x", &b) != 1) {
    +			gd_error("invalid XBM");
    +			gdImageDestroy(im);
    +			return 0;
    +		}
     		for (bit = 1; bit <= max_bit; bit = bit << 1) {
     			gdImageSetPixel(im, x++, y, (b & bit) ? 1 : 0);
     			if (x == im->sx) {
    @@ -220,7 +224,7 @@ static void gdCtxPrintf(gdIOCtx * out, const char *format, ...)
      *  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)
     {
    diff --git a/Build/source/libs/gd/libgd-src/src/gdcache.c b/Build/source/libs/gd/libgd-src/src/gdcache.c
    index b264d6ef859..3aad153dc04 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdcache.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdcache.c
    @@ -25,7 +25,9 @@
      * John Ellson  (ellson@graphviz.org)  Oct 31, 1997
      *
      * Test this with:
    - *               gcc -o gdcache -g -Wall -DTEST gdcache.c
    + *               gcc -o gdcache -g -Wall -DTEST -DNEED_CACHE gdcache.c -lgd
    + *               or
    + *               gcc -o gdcache -g -Wall -DTEST -DNEED_CACHE gdcache.c libgd.a
      *
      * The cache is implemented by a singly-linked list of elements
      * each containing a pointer to a user struct that is being managed by
    @@ -137,8 +139,13 @@ void * gdCacheGet(gdCache_head_t *head, void *keydata)
     		}
     	} else {
     		/* cache full - replace least-recently-used */
    -		/* preveprev becomes new end of list */
    -		prevprev->next = NULL;
    +		if(!prevprev) {
    +			/* cache size is 1 */
    +			head->mru = NULL;
    +		} else {
    +			/* prevprev becomes new end of list */
    +			prevprev->next = NULL;
    +		}
     		elem = prev;
     		(*(head->gdCacheRelease))(elem->userdata);
     	}
    @@ -192,7 +199,7 @@ static void cacheRelease(void *map)
     	gdFree((char *)map);
     }
     
    -int main(char *argv[], int argc)
    +int main(int argc, char **argv)
     {
     	gdCache_head_t *cacheTable;
     	int elem, key;
    diff --git a/Build/source/libs/gd/libgd-src/src/gdcache.h b/Build/source/libs/gd/libgd-src/src/gdcache.h
    index bf451dc6cc3..751a842154c 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdcache.h
    +++ b/Build/source/libs/gd/libgd-src/src/gdcache.h
    @@ -12,7 +12,9 @@ extern "C" {
     	 * John Ellson  (ellson@graphviz.org)  Oct 31, 1997
     	 *
     	 * Test this with:
    -	 *		 gcc -o gdcache -g -Wall -DTEST gdcache.c
    +	 *		 gcc -o gdcache -g -Wall -DTEST -DNEED_CACHE gdcache.c -lgd
    +   *		 or
    +	 *		 gcc -o gdcache -g -Wall -DTEST -DNEED_CACHE gdcache.c libgd.a
     	 *
     	 * The cache is implemented by a singly-linked list of elements
     	 * each containing a pointer to a user struct that is being managed by
    diff --git a/Build/source/libs/gd/libgd-src/src/gdcmpgif.c b/Build/source/libs/gd/libgd-src/src/gdcmpgif.c
    index 737f7ba90b8..d440f717276 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdcmpgif.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdcmpgif.c
    @@ -89,5 +89,3 @@ void CompareImages(char *msg, gdImagePtr im1, gdImagePtr im2)
     		printf("-%s: INFO actual colours of pixels differ\n",msg);
     	}
     }
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/gddemo.c b/Build/source/libs/gd/libgd-src/src/gddemo.c
    index 28afd3c1d12..69d9d35ddd3 100644
    --- a/Build/source/libs/gd/libgd-src/src/gddemo.c
    +++ b/Build/source/libs/gd/libgd-src/src/gddemo.c
    @@ -1,4 +1,3 @@
    -
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    @@ -16,7 +15,6 @@
     int
     main (void)
     {
    -#ifdef HAVE_LIBPNG
     	/* Input and output files */
     	FILE *in;
     	FILE *out;
    @@ -181,8 +179,5 @@ main (void)
     	if (im_in) {
     		gdImageDestroy (im_in);
     	}
    -#else
    -	fprintf(stderr, "No PNG library support.\n");
    -#endif /* HAVE_LIBPNG */
     	return 0;
     }
    diff --git a/Build/source/libs/gd/libgd-src/src/gdfontg.c b/Build/source/libs/gd/libgd-src/src/gdfontg.c
    index 2adf6da7995..2fe71662cf9 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdfontg.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdfontg.c
    @@ -1,5 +1,3 @@
    -
    -
     /*
        This is a header file for gd font, generated using
        bdftogd version 0.51 by Jan Pazdziora, adelton@fi.muni.cz
    diff --git a/Build/source/libs/gd/libgd-src/src/gdfontl.c b/Build/source/libs/gd/libgd-src/src/gdfontl.c
    index 97f7a65863d..f7ce2726375 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdfontl.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdfontl.c
    @@ -1,5 +1,3 @@
    -
    -
     /*
        This is a header file for gd font, generated using
        bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
    diff --git a/Build/source/libs/gd/libgd-src/src/gdfontmb.c b/Build/source/libs/gd/libgd-src/src/gdfontmb.c
    index debee4e3105..ed0f1ace780 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdfontmb.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdfontmb.c
    @@ -1,5 +1,3 @@
    -
    -
     /*
        This is a header file for gd font, generated using
        bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
    diff --git a/Build/source/libs/gd/libgd-src/src/gdfontt.c b/Build/source/libs/gd/libgd-src/src/gdfontt.c
    index e7bb3458e16..1fb96e14e25 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdfontt.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdfontt.c
    @@ -1,5 +1,3 @@
    -
    -
     /*
        This is a header file for gd font, generated using
        bdftogd version 0.5 by Jan Pazdziora, adelton@fi.muni.cz
    diff --git a/Build/source/libs/gd/libgd-src/src/gdft.c b/Build/source/libs/gd/libgd-src/src/gdft.c
    index d989ecc3873..98e74fa346c 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdft.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdft.c
    @@ -1,4 +1,3 @@
    -
     /********************************************/
     /* gd interface to freetype library         */
     /*                                          */
    @@ -72,9 +71,7 @@ static char *font_path(char **fontpath, char *name_list);
      */
     
     #ifndef DEFAULT_FONTPATH
    -#  ifdef NETWARE
    -#    define DEFAULT_FONTPATH "sys:/java/nwgfx/lib/x11/fonts/ttf;."
    -#  elif defined(_WIN32)
    +#  if defined(_WIN32)
     #    define DEFAULT_FONTPATH "C:\\WINDOWS\\FONTS;C:\\WINNT\\FONTS"
     #  elif defined(__APPLE__) || (defined(__MWERKS__) && defined(macintosh))
     #    define DEFAULT_FONTPATH "/usr/share/fonts/truetype:/System/Library/Fonts:/Library/Fonts"
    @@ -85,7 +82,7 @@ static char *font_path(char **fontpath, char *name_list);
     #endif
     
     #ifndef PATHSEPARATOR
    -#  if defined(NETWARE) || defined(_WIN32)
    +#  if defined(_WIN32)
     #    define PATHSEPARATOR ";"
     #  else
     #    define PATHSEPARATOR ":"
    @@ -103,8 +100,8 @@ static char *font_path(char **fontpath, char *name_list);
      *
      * Alias of <gdImageStringFT>.
      */
    -BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, char *fontlist,
    -                                      double ptsize, double angle, int x, int y, char *string)
    +BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, const char *fontlist,
    +                                      double ptsize, double angle, int x, int y, const char *string)
     {
     	/* 2.0.6: valid return */
     	return gdImageStringFT (im, brect, fg, fontlist, ptsize,
    @@ -112,8 +109,8 @@ BGD_DECLARE(char *) gdImageStringTTF (gdImage * im, int *brect, int fg, char *fo
     }
     
     #ifndef HAVE_LIBFREETYPE
    -BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *fontlist,
    -                                       double ptsize, double angle, int x, int y, char *string,
    +BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, const char *fontlist,
    +                                       double ptsize, double angle, int x, int y, const char *string,
                                            gdFTStringExtraPtr strex)
     {
     	(void)im;
    @@ -130,8 +127,8 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     	return "libgd was not built with FreeType font support\n";
     }
     
    -BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist,
    -                                     double ptsize, double angle, int x, int y, char *string)
    +BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, const char *fontlist,
    +                                     double ptsize, double angle, int x, int y, const char *string)
     {
     	(void)im;
     	(void)brect;
    @@ -184,7 +181,7 @@ typedef struct {
     font_t;
     
     typedef struct {
    -	char *fontlist;		/* key */
    +	const char *fontlist;		/* key */
     	int flags;			/* key */
     	FT_Library *library;
     }
    @@ -260,7 +257,7 @@ static int comp_entities(const void *e1, const void *e2)
     	return strcmp(en1->name, en2->name);
     }
     
    -extern int any2eucjp (char *, char *, unsigned int);
    +extern int any2eucjp (char *, const char *, unsigned int);
     
     /* Persistent font cache until explicitly cleared */
     /* Fonts can be used across multiple images */
    @@ -273,7 +270,7 @@ static FT_Library library;
     #define Tcl_UniChar int
     #define TCL_UTF_MAX 3
     static int
    -gdTcl_UtfToUniChar (char *str, Tcl_UniChar * chPtr)
    +gdTcl_UtfToUniChar (const char *str, Tcl_UniChar * chPtr)
     /* str is the UTF8 next character pointer */
     /* chPtr is the int for the result */
     {
    @@ -432,6 +429,107 @@ gdTcl_UtfToUniChar (char *str, Tcl_UniChar * chPtr)
     	return 1;
     }
     
    +#ifdef HAVE_LIBRAQM
    +#include <raqm.h>
    +#endif
    +
    +typedef struct {
    +	unsigned int index;
    +	FT_Pos x_advance;
    +	FT_Pos x_offset;
    +	FT_Pos y_offset;
    +	uint32_t cluster;
    +} glyphInfo;
    +
    +static size_t
    +textLayout(uint32_t *text, int len,
    +		FT_Face face, gdFTStringExtraPtr strex,
    +		glyphInfo **glyph_info)
    +{
    +	size_t count;
    +	glyphInfo *info;
    +
    +#ifdef HAVE_LIBRAQM
    +	size_t i;
    +	raqm_glyph_t *glyphs;
    +	raqm_t *rq = raqm_create ();
    +
    +	if (!rq || !raqm_set_text (rq, text, len) ||
    +		!raqm_set_freetype_face (rq, face) ||
    +		!raqm_set_par_direction (rq, RAQM_DIRECTION_DEFAULT) ||
    +		!raqm_layout (rq)) {
    +		raqm_destroy (rq);
    +		return 0;
    +	}
    +
    +	glyphs = raqm_get_glyphs (rq, &count);
    +	if (!glyphs) {
    +		raqm_destroy (rq);
    +		return 0;
    +	}
    +
    +	info = (glyphInfo*) gdMalloc (sizeof (glyphInfo) * count);
    +	if (!info) {
    +		raqm_destroy (rq);
    +		return 0;
    +	}
    +
    +	for (i = 0; i < count; i++) {
    +		info[i].index = glyphs[i].index;
    +		info[i].x_offset = glyphs[i].x_offset;
    +		info[i].y_offset = glyphs[i].y_offset;
    +		info[i].x_advance = glyphs[i].x_advance;
    +		info[i].cluster = glyphs[i].cluster;
    +	}
    +
    +	raqm_destroy (rq);
    +#else
    +	FT_UInt glyph_index = 0, previous = 0;
    +	FT_Vector delta;
    +	FT_Error err;
    +	info = (glyphInfo*) gdMalloc (sizeof (glyphInfo) * len);
    +	if (!info) {
    +		return 0;
    +	}
    +	for (count = 0; count < len; count++) {
    +		/* Convert character code to glyph index */
    +		glyph_index = FT_Get_Char_Index (face, text[count]);
    +
    +		/* retrieve kerning distance */
    +		if (! (strex && (strex->flags & gdFTEX_DISABLE_KERNING))
    +			&& ! FT_IS_FIXED_WIDTH(face)
    +			&& FT_HAS_KERNING(face)
    +			&& previous
    +			&& glyph_index)
    +			FT_Get_Kerning (face, previous, glyph_index, ft_kerning_default, &delta);
    +		else
    +			delta.x = delta.y = 0;
    +
    +		err = FT_Load_Glyph (face, glyph_index, FT_LOAD_DEFAULT);
    +		if (err) {
    +			gdFree (info);
    +			return 0;
    +		}
    +		info[count].index = glyph_index;
    +		info[count].x_offset = 0;
    +		info[count].y_offset = 0;
    +		if (delta.x != 0)
    +			info[count - 1].x_advance += delta.x;
    +		info[count].x_advance = face->glyph->metrics.horiAdvance;
    +		info[count].cluster = count;
    +
    +		/* carriage returns or newlines */
    +		if (text[count] == '\r' || text[count] == '\n')
    +			previous = 0;	/* clear kerning flag */
    +		else
    +			previous = glyph_index;
    +	}
    +#endif
    +
    +	*glyph_info = info;
    +	return count;
    +}
    +
     /********************************************************************/
     /* font cache functions                                             */
     
    @@ -475,7 +573,7 @@ fontFetch (char **error, void *key)
     		gdFree(a);
     		return "could not alloc full list of fonts";
     	}
    -	strncpy(a->fontlist, b->fontlist, b_font_list_len);
    +	memcpy(a->fontlist, b->fontlist, b_font_list_len);
     	a->fontlist[b_font_list_len] = 0;
     
     	a->flags = b->flags;
    @@ -824,8 +922,8 @@ BGD_DECLARE(void) gdFontCacheShutdown ()
      * See also:
      *  - <gdImageString>
      */
    -BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, char *fontlist,
    -                                     double ptsize, double angle, int x, int y, char *string)
    +BGD_DECLARE(char *) gdImageStringFT (gdImage * im, int *brect, int fg, const char *fontlist,
    +                                     double ptsize, double angle, int x, int y, const char *string)
     {
     	return gdImageStringFTEx (im, brect, fg, fontlist,
     	                          ptsize, angle, x, y, string, 0);
    @@ -872,13 +970,13 @@ BGD_DECLARE(int) gdFontCacheSetup (void)
       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;
    @@ -982,32 +1080,35 @@ BGD_DECLARE(int) gdFontCacheSetup (void)
     
         > flags | gdFTEX_FONTPATHNAME;
     
    -  For more information, see <gdImageStringFT>. 
    +  For more information, see <gdImageStringFT>.
     */
     
     /* the platform-independent resolution used for size and position calculations */
     /*    the size of the error introduced by rounding is affected by this number */
     #define METRIC_RES 300
     
    -BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *fontlist,
    -                                       double ptsize, double angle, int x, int y, char *string,
    +BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, const char *fontlist,
    +                                       double ptsize, double angle, int x, int y, const char *string,
                                            gdFTStringExtraPtr strex)
     {
     	FT_Matrix matrix;
    -	FT_Vector penf, oldpenf, delta, total_min = {0,0}, total_max = {0,0}, glyph_min, glyph_max;
    +	FT_Vector penf, oldpenf, total_min = {0,0}, total_max = {0,0}, glyph_min, glyph_max;
     	FT_Face face;
     	FT_CharMap charmap = NULL;
     	FT_Glyph image;
     	FT_GlyphSlot slot;
     	FT_Error err;
    -	FT_UInt glyph_index, previous;
    +	FT_UInt glyph_index;
     	double sin_a = sin (angle);
     	double cos_a = cos (angle);
    -	int len, i, ch;
    +	int  i, ch;
     	font_t *font;
     	fontkey_t fontkey;
    -	char *next;
    +	const char *next;
     	char *tmpstr = 0;
    +	uint32_t *text;
    +	glyphInfo *info = NULL;
    +	size_t count;
     	int render = (im && (im->trueColor || (fg <= 255 && fg >= -255)));
     	FT_BitmapGlyph bm;
     	/* 2.0.13: Bob Ostermann: don't force autohint, that's just for testing
    @@ -1100,7 +1201,7 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     				gdMutexUnlock(gdFontCacheMutex);
     				return "could not alloc full list of fonts";
     			}
    -			strncpy(strex->fontpath, font->fontpath, fontpath_len);
    +			memcpy(strex->fontpath, font->fontpath, fontpath_len);
     			strex->fontpath[fontpath_len] = 0;
     		}
     	}
    @@ -1220,31 +1321,11 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     
     	oldpenf.x = oldpenf.y = 0; /* for postscript xshow operator */
     	penf.x = penf.y = 0;	/* running position of non-rotated glyphs */
    -	previous = 0;		/* index of previous glyph for kerning calculations */
    -	for (i=0; *next; i++) {
    -		FT_Activate_Size (platform_independent);
    -
    +	text = (uint32_t*) gdCalloc (sizeof (uint32_t), strlen(next));
    +	i = 0;
    +	while (*next) {
    +		int len;
     		ch = *next;
    -
    -		/* carriage returns */
    -		if (ch == '\r') {
    -			penf.x = 0;
    -			previous = 0;		/* clear kerning flag */
    -			next++;
    -			continue;
    -		}
    -		/* newlines */
    -		if (ch == '\n') {
    -			/* 2.0.13: reset penf.x. Christopher J. Grayce */
    -			penf.x = 0;
    -			penf.y += linespace * ptsize * 64 * METRIC_RES / 72;
    -			penf.y &= ~63;	/* round down to 1/METRIC_RES */
    -			previous = 0;		/* clear kerning flag */
    -			next++;
    -			continue;
    -		}
    -
    -
     		switch (encoding) {
     		case gdFTEX_Unicode: {
     			/* use UTF-8 mapping from ASCII */
    @@ -1320,22 +1401,43 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     			next++;
     			break;
     		}
    +		text[i] = ch;
    +		i++;
    +	}
     
    -		/* Convert character code to glyph index */
    -		glyph_index = FT_Get_Char_Index (face, ch);
    +	FT_Activate_Size (platform_independent);
     
    -		/* retrieve kerning distance */
    -		if ( ! (strex && (strex->flags & gdFTEX_DISABLE_KERNING))
    -		        && ! FT_IS_FIXED_WIDTH(face)
    -		        && FT_HAS_KERNING(face)
    -		        && previous
    -		        && glyph_index)
    -			FT_Get_Kerning (face, previous, glyph_index, ft_kerning_default, &delta);
    -		else
    -			delta.x = delta.y = 0;
    +	count = textLayout (text , i, face, strex, &info);
     
    -		penf.x += delta.x;
    +	if (!count) {
    +		gdFree (text);
    +		gdFree (tmpstr);
    +		gdCacheDelete (tc_cache);
    +		gdMutexUnlock (gdFontCacheMutex);
    +		return "Problem doing text layout";
    +	}
     
    +	for (i = 0; i < count; i++) {
    +		FT_Activate_Size (platform_independent);
    +
    +		ch = text[info[i].cluster];
    +
    +		/* carriage returns */
    +		if (ch == '\r') {
    +			penf.x = 0;
    +			continue;
    +		}
    +
    +		/* newlines */
    +		if (ch == '\n') {
    +			/* 2.0.13: reset penf.x. Christopher J. Grayce */
    +			penf.x = 0;
    +			penf.y += linespace * ptsize * 64 * METRIC_RES / 72;
    +			penf.y &= ~63;	/* round down to 1/METRIC_RES */
    +			continue;
    +		}
    +
    +		glyph_index = info[i].index;
     		/* When we know the position of the second or subsequent character,
     		save the (kerned) advance from the preceeding character in the
     		xshow vector */
    @@ -1348,6 +1450,7 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     				if (!strex->xshow) {
     					if (tmpstr)
     						gdFree (tmpstr);
    +					gdFree(text);
     					gdCacheDelete (tc_cache);
     					gdMutexUnlock (gdFontCacheMutex);
     					return "Problem allocating memory";
    @@ -1359,6 +1462,7 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     				if (!strex->xshow) {
     					if (tmpstr)
     						gdFree (tmpstr);
    +					gdFree(text);
     					gdCacheDelete (tc_cache);
     					gdMutexUnlock (gdFontCacheMutex);
     					return "Problem allocating memory";
    @@ -1374,12 +1478,13 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     		if (err) {
     			if (tmpstr)
     				gdFree (tmpstr);
    +			gdFree(text);
     			gdCacheDelete (tc_cache);
     			gdMutexUnlock (gdFontCacheMutex);
     			return "Problem loading glyph";
     		}
     
    -		horiAdvance = slot->metrics.horiAdvance;
    +		horiAdvance = info[i].x_advance;
     
     		if (brect) {
     			/* only if need brect */
    @@ -1414,6 +1519,8 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     		}
     
     		if (render) {
    +			FT_Pos pen_x;
    +			FT_Pos pen_y;
     			FT_Activate_Size (platform_specific);
     
     			/* load glyph again into the slot (erase previous one)  - this time with scaling */
    @@ -1421,6 +1528,7 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     			if (err) {
     				if (tmpstr)
     					gdFree (tmpstr);
    +				gdFree(text);
     				gdCacheDelete (tc_cache);
     				gdMutexUnlock (gdFontCacheMutex);
     				return "Problem loading glyph";
    @@ -1435,6 +1543,7 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     					FT_Done_Glyph(image);
     					if (tmpstr)
     						gdFree (tmpstr);
    +					gdFree(text);
     					gdCacheDelete (tc_cache);
     					gdMutexUnlock (gdFontCacheMutex);
     					return "Problem rendering glyph";
    @@ -1445,19 +1554,22 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     			bm = (FT_BitmapGlyph) image;
     			/* position rounded down to nearest pixel at current dpi
     			(the estimate was rounded up to next 1/METRIC_RES, so this should fit) */
    +			pen_x = penf.x + info[i].x_offset;
    +			pen_y = penf.y - info[i].y_offset;
     			gdft_draw_bitmap (tc_cache, im, fg, bm->bitmap,
    -			                  (int)(x + (penf.x * cos_a + penf.y * sin_a)*hdpi/(METRIC_RES*64) + bm->left),
    -			                  (int)(y - (penf.x * sin_a - penf.y * cos_a)*vdpi/(METRIC_RES*64) - bm->top));
    +					  (int)(x + (pen_x * cos_a + pen_y * sin_a)*hdpi/(METRIC_RES*64) + bm->left),
    +					  (int)(y - (pen_x * sin_a - pen_y * cos_a)*vdpi/(METRIC_RES*64) - bm->top));
     
     			FT_Done_Glyph (image);
     		}
     
    -		/* record current glyph index for kerning */
    -		previous = glyph_index;
     
     		penf.x += horiAdvance;
     	}
     
    +	gdFree(text);
    +	gdFree(info);
    +
     	/* Save the (unkerned) advance from the last character in the xshow vector */
     	if (strex && (strex->flags & gdFTEX_XSHOW) && strex->xshow) {
     		sprintf(strex->xshow + xshow_pos, "%g",
    @@ -1469,12 +1581,6 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, char *f
     		double scalex = (double)hdpi / (64 * METRIC_RES);
     		double scaley = (double)vdpi / (64 * METRIC_RES);
     
    -		/* increase by 1 pixel to allow for rounding */
    -		total_min.x -= METRIC_RES;
    -		total_min.y -= METRIC_RES;
    -		total_max.x += METRIC_RES;
    -		total_max.y += METRIC_RES;
    -
     		/* rotate bounding rectangle, scale and round to int pixels, and translate */
     		brect[0] = x + (total_min.x * cos_a + total_max.y * sin_a)*scalex;
     		brect[1] = y - (total_min.x * sin_a - total_max.y * cos_a)*scaley;
    @@ -1656,7 +1762,7 @@ static char * font_pattern(char **fontpath, char *fontpattern)
     		if (*fontpath == NULL) {
     			return "could not alloc font path";
     		}
    -		strncpy(*fontpath, (const char *)file, file_len);
    +		memcpy(*fontpath, (const char *)file, file_len);
     		(*fontpath)[file_len] = 0;
     	}
     	FcPatternDestroy(font);
    @@ -1685,11 +1791,11 @@ static char * font_path(char **fontpath, char *name_list)
     	fontsearchpath = getenv ("GDFONTPATH");
     #ifdef _WIN32
             if (!fontsearchpath) {
    -          char *ffptr = getenv ("SYSTEMROOT");
    +          char *ffptr = getenv ("WINDIR");
               if (ffptr) {
    -            fontsearchpath = malloc (strlen(ffptr) + strlen("\\fonts") + 1);
    +            fontsearchpath = malloc (strlen(ffptr) + strlen("\\Fonts") + 1);
                 strcpy(fontsearchpath, ffptr);
    -            strcat(fontsearchpath, "\\fonts");
    +            strcat(fontsearchpath, "\\Fonts");
               }
             }
     #endif
    @@ -1706,7 +1812,7 @@ static char * font_path(char **fontpath, char *name_list)
     		gdFree(path);
     		return "could not alloc full list of fonts";
     	}
    -	strncpy(fontlist, name_list, name_list_len);
    +	memcpy(fontlist, name_list, name_list_len);
     	fontlist[name_list_len] = 0;
     
     	/*
    @@ -1731,14 +1837,9 @@ static char * font_path(char **fontpath, char *name_list)
     			return "could not alloc full path of font";
     		}
     		/* if name is an absolute or relative pathname then test directly */
    -#ifdef NETWARE
    -		/* netware uses the format "volume:/path" or the standard "/path" */
    -		if (name[0] != 0 && (strstr(name, ":/") || name[0] == '/'))
    -#else
     		if (strchr (name, '/')
     		        || (name[0] != 0 && name[1] == ':'
     		            && (name[2] == '/' || name[2] == '\\')))
    -#endif
     		{
     			sprintf (fullname, "%s", name);
     			if (access (fullname, R_OK) == 0) {
    @@ -1820,4 +1921,3 @@ BGD_DECLARE(int) gdFTUseFontConfig(int flag)
     	return 0;
     #endif /* HAVE_LIBFONTCONFIG */
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/gdfx.c b/Build/source/libs/gd/libgd-src/src/gdfx.c
    index d71a3421b2c..557f51c4653 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdfx.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdfx.c
    @@ -522,4 +522,3 @@ gdImageSharpen (gdImagePtr im, int pct)
     		}
     	}
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/gdfx.h b/Build/source/libs/gd/libgd-src/src/gdfx.h
    index dbd74984ebe..b00f573a609 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdfx.h
    +++ b/Build/source/libs/gd/libgd-src/src/gdfx.h
    @@ -1,10 +1,10 @@
    +#ifndef GDFX_H
    +#define GDFX_H 1
    +
     #ifdef __cplusplus
     extern "C" {
     #endif
     
    -#ifndef GDFX_H
    -#define GDFX_H 1
    -
     BGD_DECLARE(gdImagePtr) gdImageSquareToCircle(gdImagePtr im, int radius);
     
     BGD_DECLARE(char *) gdImageStringFTCircle(
    @@ -22,9 +22,8 @@ BGD_DECLARE(char *) gdImageStringFTCircle(
     
     BGD_DECLARE(void) gdImageSharpen (gdImagePtr im, int pct);
     
    -#endif /* GDFX_H */
    -
    -
     #ifdef __cplusplus
     }
     #endif
    +
    +#endif /* GDFX_H */
    diff --git a/Build/source/libs/gd/libgd-src/src/gdhelpers.c b/Build/source/libs/gd/libgd-src/src/gdhelpers.c
    index 20fff5c0356..de7a0a39c8e 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdhelpers.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdhelpers.c
    @@ -114,5 +114,3 @@ BGD_DECLARE(void) gdFree (void *ptr)
     {
     	free (ptr);
     }
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/gdhelpers.h b/Build/source/libs/gd/libgd-src/src/gdhelpers.h
    index 2a96b8b4e55..9c7ef104c28 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdhelpers.h
    +++ b/Build/source/libs/gd/libgd-src/src/gdhelpers.h
    @@ -1,10 +1,10 @@
    +#ifndef GDHELPERS_H
    +#define GDHELPERS_H 1
    +
     #ifdef __cplusplus
     extern "C" {
     #endif
     
    -#ifndef GDHELPERS_H
    -#define GDHELPERS_H 1
    -
     	/* sys/types.h is needed for size_t on Sparc-SunOS-4.1 */
     #ifndef _WIN32_WCE
     #include <sys/types.h>
    @@ -69,8 +69,8 @@ extern "C" {
     #define DPI2DPCM(dpi)  (unsigned int)((dpi)/2.54 + 0.5)
     #define DPI2DPM(dpi)   (unsigned int)((dpi)/0.0254 + 0.5)
     
    -#endif /* GDHELPERS_H */
    -
     #ifdef __cplusplus
     }
     #endif
    +
    +#endif /* GDHELPERS_H */
    diff --git a/Build/source/libs/gd/libgd-src/src/gdkanji.c b/Build/source/libs/gd/libgd-src/src/gdkanji.c
    index f05187e4580..c670d986433 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdkanji.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdkanji.c
    @@ -11,11 +11,7 @@
     #include "gd.h"
     #include "gdhelpers.h"
     #include "gd_errors.h"
    -
    -#ifdef HAVE_ERRNO_H
     #include <errno.h>
    -#endif
    -
     #include <stdarg.h>
     #if defined(HAVE_ICONV_H)
     #include <iconv.h>
    @@ -98,7 +94,7 @@ iconv_close (iconv_t cd)
     /* DetectKanjiCode() derived from DetectCodeType() by Ken Lunde. */
     
     static int
    -DetectKanjiCode (unsigned char *str)
    +DetectKanjiCode (const unsigned char *str)
     {
     	static int whatcode = ASCII;
     	int oldcode = ASCII;
    @@ -146,7 +142,7 @@ DetectKanjiCode (unsigned char *str)
     					whatcode = EUCORSJIS;
     				else if (c >= 224 && c <= 239) {
     					whatcode = EUCORSJIS;
    -					while (c >= 64 && c != '\0' && whatcode == EUCORSJIS) {
    +					while (c >= 64 && whatcode == EUCORSJIS) {
     						if (c >= 129) {
     							if (c <= 141 || (c >= 143 && c <= 159))
     								whatcode = SJIS;
    @@ -334,20 +330,20 @@ han2zen (int *p1, int *p2)
     #define ustrncpy(A,B, maxsize) (strncpy((char*)(A),(const char*)(B), maxsize))
     
     static void
    -do_convert (unsigned char **to_p, unsigned char **from_p, const char *code)
    +do_convert (unsigned char **to_p, const unsigned char **from_p, const char *code)
     {
     	unsigned char *to = *to_p;
    -	unsigned char *from = *from_p;
    +	const unsigned char *from = *from_p;
     #ifdef HAVE_ICONV
     	iconv_t cd;
     	size_t from_len, to_len;
     
     	if ((cd = iconv_open (EUCSTR, code)) == (iconv_t) - 1) {
     		gd_error ("iconv_open() error");
    -#ifdef HAVE_ERRNO_H
    +
     		if (errno == EINVAL)
     			gd_error ("invalid code specification: \"%s\" or \"%s\"", EUCSTR, code);
    -#endif
    +
     		ustrcpy (to, from);
     		return;
     	}
    @@ -357,7 +353,7 @@ do_convert (unsigned char **to_p, unsigned char **from_p, const char *code)
     
     	if ((int) (iconv (cd, (char **)from_p, &from_len, (char **)to_p, &to_len))
     	        == -1) {
    -#ifdef HAVE_ERRNO_H
    +
     		if (errno == EINVAL)
     			gd_error ("invalid end of input string");
     		else if (errno == EILSEQ)
    @@ -365,7 +361,7 @@ do_convert (unsigned char **to_p, unsigned char **from_p, const char *code)
     		else if (errno == E2BIG)
     			gd_error ("output buffer overflow at do_convert()");
     		else
    -#endif
    +
     			gd_error ("something happen");
     		ustrcpy (to, from);
     		return;
    @@ -436,7 +432,7 @@ do_convert (unsigned char **to_p, unsigned char **from_p, const char *code)
     }
     
     static int
    -do_check_and_conv (unsigned char *to, unsigned char *from)
    +do_check_and_conv (unsigned char *to, const unsigned char *from)
     {
     	static unsigned char tmp[BUFSIZ];
     	unsigned char *tmp_p = &tmp[0];
    @@ -527,7 +523,7 @@ do_check_and_conv (unsigned char *to, unsigned char *from)
     }
     
     int
    -any2eucjp (unsigned char *dest, unsigned char *src, unsigned int dest_max)
    +any2eucjp (unsigned char *dest, const unsigned char *src, unsigned int dest_max)
     {
     	static unsigned char tmp_dest[BUFSIZ];
     	int ret;
    diff --git a/Build/source/libs/gd/libgd-src/src/gdparttopng.c b/Build/source/libs/gd/libgd-src/src/gdparttopng.c
    index 42d6df20368..4bf2fc82778 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdparttopng.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdparttopng.c
    @@ -1,4 +1,3 @@
    -
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    @@ -49,11 +48,7 @@ main (int argc, char **argv)
     		gdImageDestroy (im);
     		exit (1);
     	}
    -#ifdef HAVE_LIBPNG
     	gdImagePng (im, out);
    -#else
    -	fprintf(stderr, "No PNG library support.\n");
    -#endif
     	fclose (out);
     	gdImageDestroy (im);
     
    diff --git a/Build/source/libs/gd/libgd-src/src/gdpp.cxx b/Build/source/libs/gd/libgd-src/src/gdpp.cxx
    index a8101fca29f..5e579da1fb3 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdpp.cxx
    +++ b/Build/source/libs/gd/libgd-src/src/gdpp.cxx
    @@ -1,12 +1,11 @@
     /* *****************************************************************************
    -** $Id$
     ** Initial file written and documented by:
     ** Kevin Shepherd <kshepherd@php.net> December 2007
     ** of Scarlet Line http://www.scarletline.com/
     *******************************************************************************/
     /** \file gdpp.cxx
     	\brief Implements the non-trivial methods of GD::Image.
    -	
    +
     	Implementation of the more complex methods defined
     	in gdpp.h.
     	Notably includes the methods which determine the image file
    @@ -19,13 +18,13 @@ namespace GD
     	{
     	/**
     		Load an image from a file, after attempting to
    -		determine it's image file format. 
    +		determine it's image file format.
     		Invoke CreateFrom with an already opened
    -		pointer to a file containing the desired image. 
    +		pointer to a file containing the desired image.
     		CreateFrom does not close the file.
     		\param[in] in An opened FILE * pointer.
    -		\return true for success, or false if unable to load the image (most often because the 
    -		file is corrupt or does not contain a recognized image format). 
    +		\return true for success, or false if unable to load the image (most often because the
    +		file is corrupt or does not contain a recognized image format).
     		You can call Width() and Height() member functions of the image to determine its size.
     	*/
     	bool Image::CreateFrom(FILE * in)
    @@ -40,50 +39,47 @@ namespace GD
     		   0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A
     		   == .PNG\r\n.\n
     		*/
    -#ifdef HAVE_LIBPNG
     		case 0x89: // PNG
     			rtn = CreateFromPng(in);
     			break;
    -#endif
    +
     		/* GIF
     			0x47 0x49 0x46
     		*/
     		case 0x47: // GIF
     			rtn = CreateFromGif(in);
     			break;
    -#ifdef HAVE_LIBJPEG
     		/* JPEG
     		A JFIF-standard file will start with the four bytes (hex) FF D8 FF E0,
    -		    followed by two variable bytes (often hex 00 10), followed by 'JFIF'.		
    +		    followed by two variable bytes (often hex 00 10), followed by 'JFIF'.
     		*/
     		case 0xFF: // JPEG
     			rtn = CreateFromJpeg(in);
     			break;
    -#endif
     		/* WBMP
    -		WBMP Type 0: B/W, Uncompressed bitmap is the only gd supported type		
    +		WBMP Type 0: B/W, Uncompressed bitmap is the only gd supported type
     		*/
     		case 0x00: // WBMP
     			rtn = CreateFromWBMP(in);
     			break;
     		/* GD2
    -			0x67 0x64 0x32 0x00 
    +			0x67 0x64 0x32 0x00
     			== GD2\0
    -		Starts with gd2 
    +		Starts with gd2
     		*/
     		case 0x67: // GD2
     			rtn = CreateFromGd2(in);
     			break;
     		/* GD
     			0xFF 0xFE
    -			or 
    -			0xFF 0xFF 
    +			or
    +			0xFF 0xFF
     			Conflicts with Jpeg
     		*/
     		/* XBM
     			#define test_width 16
     			#define test_height 7
    -		*/	
    +		*/
     		case 0x23: // XBM
     			rtn = CreateFromXbm(in);
     			break;
    @@ -91,18 +87,18 @@ namespace GD
     			rtn = false;
     			break;
     			}
    -		return rtn; 
    +		return rtn;
     		}
     
     	/**
     		Load an image from a standard input stream, after attempting to
    -		determine it's image file format. 
    +		determine it's image file format.
     		Invoke CreateFrom with an already opened stream
    -		containing the desired image. 
    +		containing the desired image.
     		CreateFrom does not close the stream.
     		\param[in] in An opened standard library input stream.
    -		\return true for success, or false if unable to load the image (most often because the 
    -		file is corrupt or does not contain a recognized image format). 
    +		\return true for success, or false if unable to load the image (most often because the
    +		file is corrupt or does not contain a recognized image format).
     		You can call Width() and Height() member functions of the image to determine its size.
     		Example usage, convert anything to gif:
     		#include <fstream>
    @@ -122,7 +118,6 @@ namespace GD
     		bool rtn;
     		switch (in.peek())
     			{
    -#ifdef HAVE_LIBPNG
     		/* PNG
     		The first eight bytes of a PNG file always contain the following (decimal) values:
     		   0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A
    @@ -131,7 +126,6 @@ namespace GD
     		case 0x89: // PNG
     			rtn = CreateFromPng(in);
     			break;
    -#endif
     
     		/* GIF
     			0x47 0x49 0x46
    @@ -140,51 +134,49 @@ namespace GD
     			rtn = CreateFromGif(in);
     			break;
     
    -#ifdef HAVE_LIBJPEG
     		/* JPEG
     		A JFIF-standard file will start with the four bytes (hex) FF D8 FF E0,
    -		    followed by two variable bytes (often hex 00 10), followed by 'JFIF'.		
    +		    followed by two variable bytes (often hex 00 10), followed by 'JFIF'.
     		*/
     		case 0xFF: // JPEG
     			rtn = CreateFromJpeg(in);
     			break;
    -#endif
     
     		/* WBMP
    -		WBMP Type 0: B/W, Uncompressed bitmap is the only gd supported type		
    +		WBMP Type 0: B/W, Uncompressed bitmap is the only gd supported type
     		*/
     		case 0x00: // WBMP
     			rtn = CreateFromWBMP(in);
     			break;
     		/* GD2
    -			0x67 0x64 0x32 0x00 
    +			0x67 0x64 0x32 0x00
     			== GD2\0
    -		Starts with gd2 
    +		Starts with gd2
     		*/
     		case 0x67: // GD2
     			rtn = CreateFromGd2(in);
     			break;
     		/* GD
     			0xFF 0xFE
    -			or 
    -			0xFF 0xFF 
    +			or
    +			0xFF 0xFF
     			Conflicts with Jpeg
     		*/
     		default:
     			rtn = false;
     			break;
     			}
    -		return rtn; 
    +		return rtn;
     		}
     
     	/**
     		Load an image from an in-RAM memory block, after attempting to
    -		determine it's image format. 
    +		determine it's image format.
     		CreateFrom does not de-allocate the memory.
     		\param[in] size The byte count of the memory block.
     		\param[in] data A pointer to the memory block.
    -		\return true for success, or false if unable to load the image (most often because the 
    -		formatting is corrupt or does not contain a recognized image format). 
    +		\return true for success, or false if unable to load the image (most often because the
    +		formatting is corrupt or does not contain a recognized image format).
     		You can call Width() and Height() member functions of the image to determine its size.
     	*/
     	bool Image::CreateFrom(int size, void * data)
    @@ -193,7 +185,6 @@ namespace GD
     		switch (((unsigned char * )data)[0])
     			{
     
    -#ifdef HAVE_LIBPNG
     		/* PNG
     		The first eight bytes of a PNG file always contain the following (decimal) values:
     		   0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A
    @@ -202,7 +193,7 @@ namespace GD
     		case 0x89: // PNG
     			rtn = CreateFromPng(size, data);
     			break;
    -#endif
    +
     		/* GIF
     			0x47 0x49 0x46
     		*/
    @@ -210,45 +201,43 @@ namespace GD
     			rtn = CreateFromGif(size, data);
     			break;
     
    -#ifdef HAVE_LIBJPEG
     		/* JPEG
     		A JFIF-standard file will start with the four bytes (hex) FF D8 FF E0,
    -		    followed by two variable bytes (often hex 00 10), followed by 'JFIF'.		
    +		    followed by two variable bytes (often hex 00 10), followed by 'JFIF'.
     		*/
     		case 0xFF: // JPEG
     			rtn = CreateFromJpeg(size, data);
     			break;
    -#endif
     
     		/* WBMP
    -		WBMP Type 0: B/W, Uncompressed bitmap is the only gd supported type		
    +		WBMP Type 0: B/W, Uncompressed bitmap is the only gd supported type
     		*/
     		case 0x00: // WBMP
     			rtn = CreateFromWBMP(size, data);
     			break;
     		/* GD2
    -			0x67 0x64 0x32 0x00 
    +			0x67 0x64 0x32 0x00
     			== GD2\0
    -		Starts with gd2 
    +		Starts with gd2
     		*/
     		case 0x67: // GD2
     			rtn = CreateFromGd2(size, data);
     			break;
     		/* GD
     			0xFF 0xFE
    -			or 
    -			0xFF 0xFF 
    +			or
    +			0xFF 0xFF
     			Conflicts with Jpeg
     		*/
     		default:
     			rtn = false;
     			break;
     			}
    -		return rtn; 
    +		return rtn;
     		}
     	} // namespace GD
     /**
    -	Load an image from a standard input stream, regardless of it's image file format. 
    +	Load an image from a standard input stream, regardless of it's image file format.
     	You can call Width() and Height() member functions of the image to determine its size.
     	Example usage, convert anything to gif:
     	#include <fstream>
    diff --git a/Build/source/libs/gd/libgd-src/src/gdpp.h b/Build/source/libs/gd/libgd-src/src/gdpp.h
    index 2ebda162e1c..3d58d899eed 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdpp.h
    +++ b/Build/source/libs/gd/libgd-src/src/gdpp.h
    @@ -1,5 +1,4 @@
     /* *****************************************************************************
    -** $Id$
     ** Initial file written and documented by:
     ** Kevin Shepherd <kshepherd@php.net> December 2007
     ** of Scarlet Line http://www.scarletline.com/
    @@ -20,13 +19,9 @@
     		im.Gif(out);
     		}
     */
    -#ifdef __cplusplus
     #ifndef _gdpp_h
     #define _gdpp_h
    -
    -#ifdef HAVE_CONFIG_H
    -#include "config.h"
    -#endif
    +#ifdef __cplusplus
     
     #include "gd_io_stream.h"
     #include <string>
    @@ -292,7 +287,7 @@ public:
     		:im(0) {
     		CreateFrom(size, data);
     	}
    -#ifdef HAVE_LIBPNG
    +
     	/** Construct an image by reading from \p in.
     		The tag is an empty struct which simply tells the compiler which image read function to use.
     		e.g. GD::Image img(input, GD::Png_tag()); // read a png file from input
    @@ -330,7 +325,6 @@ public:
     		:im(0) {
     		CreateFromPng(size, data);
     	}
    -#endif
     
     	/** Construct an image by reading from \p in.
     		The tag is an empty struct which simply tells the compiler which image read function to use.
    @@ -408,7 +402,6 @@ public:
     		CreateFromWBMP(size, data);
     	}
     
    -#ifdef HAVE_LIBJPEG
     	/** Construct an image by reading from \p in.
     		The tag is an empty struct which simply tells the compiler which image read function to use.
     		e.g. GD::Image img(input, GD::Jpeg_tag()); // read a jpeg file from input
    @@ -446,7 +439,6 @@ public:
     		:im(0) {
     		CreateFromJpeg(size, data);
     	}
    -#endif
     
     	/** Construct an image by reading from \p in.
     		The tag is an empty struct which simply tells the compiler which image read function to use.
    @@ -608,7 +600,6 @@ public:
     	/// Read an image from a memory block, after determining the image format
     	bool CreateFrom(int size, void * data);
     
    -#ifdef HAVE_LIBPNG
     	// Png
     	bool CreateFromPng(FILE * in) {
     		clear();
    @@ -627,7 +618,6 @@ public:
     		istreamIOCtx _in_ctx(in);
     		return ((im = gdImageCreateFromPngCtx( & _in_ctx)) != 0);
     	}
    -#endif
     
     	// Gif
     	bool CreateFromGif(FILE * in) {
    @@ -666,7 +656,6 @@ public:
     		return ((im = gdImageCreateFromWBMPCtx( & _in_ctx)) != 0);
     	}
     
    -#ifdef HAVE_LIBJPEG
     	// Jpeg
     	/**
     		Load a truecolor image from a JPEG format file.
    @@ -720,7 +709,6 @@ public:
     		istreamIOCtx _in_ctx(in);
     		return ((im = gdImageCreateFromJpegCtx( & _in_ctx)) != 0);
     	}
    -#endif
     
     	// Gd
     	bool CreateFromGd(FILE * in) {
    @@ -1089,7 +1077,6 @@ public:
     		gdImageGifCtx(im, & _out_ctx);
     	}
     
    -#ifdef HAVE_LIBPNG
     	/**
     		Write out this image in PNG file format to \p out.
     		\param out A FILE * handle
    @@ -1154,7 +1141,6 @@ public:
     		ostreamIOCtx _out_ctx(out);
     		gdImagePngCtxEx(im, & _out_ctx, level);
     	}
    -#endif
     
     	/**
     		Write out this image in WBMP file format ( black and white only ) to \p out.
    @@ -1191,7 +1177,6 @@ public:
     		gdImageWBMPCtx(im, fg, & _out_ctx);
     	}
     
    -#ifdef HAVE_LIBJPEG
     	/**
     		Write out this image in JPEG file format to \p out.
     		\param out A FILE * handle
    @@ -1226,7 +1211,6 @@ public:
     		ostreamIOCtx _out_ctx(out);
     		gdImageJpegCtx(im, & _out_ctx, quality);
     	}
    -#endif
     
     	void GifAnimBegin(FILE * out, int GlobalCM, int Loops) const {
     		gdImageGifAnimBegin(im, out, GlobalCM, Loops);
    @@ -1542,5 +1526,5 @@ protected:
     /// Read in an image from a standard library input stream
     std::istream & operator>> (std::istream & in, GD::Image & img);
     
    -#endif /* _gdpp_h */
     #endif /* __cplusplus */
    +#endif /* _gdpp_h */
    diff --git a/Build/source/libs/gd/libgd-src/src/gdtables.c b/Build/source/libs/gd/libgd-src/src/gdtables.c
    index 7753b21a4b3..d368b8d9b78 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdtables.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdtables.c
    @@ -1,4 +1,3 @@
    -
     const int gdCosT[] = {
     	1024,
     	1023,
    diff --git a/Build/source/libs/gd/libgd-src/src/gdtest.c b/Build/source/libs/gd/libgd-src/src/gdtest.c
    index 0f8febe077a..cf0eff5477c 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdtest.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdtest.c
    @@ -24,7 +24,6 @@ static int fwriteWrapper (void *context, const char *buffer, int len);
     int
     main (int argc, char **argv)
     {
    -#ifdef HAVE_LIBPNG
     	gdImagePtr im, ref, im2, im3;
     	FILE *in, *out;
     	void *iptr;
    @@ -87,12 +86,12 @@ main (int argc, char **argv)
     	}
     	im2 = gdImageCreateFromPng (in);
     	fclose (in);
    -	
    +
     	if (!im2) {
     		fprintf(stderr, "gdImageCreateFromPng failed.\n");
     		exit (1);
     	}
    -	
    +
     	CompareImages ("GD->PNG File->GD", ref, im2);
     
     	unlink (of);
    @@ -196,7 +195,7 @@ main (int argc, char **argv)
     		fprintf(stderr, "gdImageCreateFromGdPtr failed.\n");
     		exit (1);
     	}
    -	
    +
     	CompareImages ("GD->GD ptr->GD", ref, im2);
     
     	gdImageDestroy (im2);
    @@ -409,9 +408,6 @@ main (int argc, char **argv)
     	}
     	gdImageDestroy (im);
     	gdImageDestroy (ref);
    -#else
    -	fprintf(stderr, "No PNG library support.\n");
    -#endif /* HAVE_LIBPNG */
     
     	return 0;
     }
    diff --git a/Build/source/libs/gd/libgd-src/src/gdtestft.c b/Build/source/libs/gd/libgd-src/src/gdtestft.c
    index 53945a636cf..f50b17491ba 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdtestft.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdtestft.c
    @@ -1,4 +1,3 @@
    -
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    @@ -26,13 +25,6 @@
     int
     main (int argc, char *argv[])
     {
    -#ifndef HAVE_LIBFREETYPE
    -	fprintf(stderr, "gd was not compiled with HAVE_LIBFREETYPE defined.\n");
    -	fprintf(stderr, "Install the FreeType library, including the\n");
    -	fprintf(stderr, "header files. Then edit the gd Makefile, type\n");
    -	fprintf(stderr, "make clean, and type make again.\n");
    -	return 1;
    -#else
     	gdImagePtr im;
     	int blue;
     	int blueAlpha;
    @@ -40,7 +32,6 @@ main (int argc, char *argv[])
     	int brect[8];
     	int x, y, sx, sy;
     	char *err;
    -	FILE *out;
     #ifdef JISX0208
     	char *s = "Hello. ɂ Qyjpqg,";	/* String to draw. */
     #else
    @@ -155,7 +146,7 @@ main (int argc, char *argv[])
     	/* TBB: Write img to test/fttest.jpg or test/fttest.png */
     	if (im->trueColor) {
     #ifdef HAVE_LIBJPEG
    -		out = fopen ("test/fttest.jpg", "wb");
    +		FILE *out = fopen ("test/fttest.jpg", "wb");
     		if (!out) {
     			fprintf(stderr, "Can't create test/fttest.jpg\n");
     			exit (1);
    @@ -169,7 +160,7 @@ main (int argc, char *argv[])
     #endif
     	} else {
     #ifdef HAVE_LIBPNG
    -		out = fopen ("test/fttest.png", "wb");
    +		FILE *out = fopen ("test/fttest.png", "wb");
     		if (!out) {
     			fprintf(stderr, "Can't create test/fttest.png\n");
     			exit (1);
    @@ -186,5 +177,4 @@ main (int argc, char *argv[])
     	gdImageDestroy (im);
     
     	return 0;
    -#endif /* HAVE_LIBFREETYPE */
     }
    diff --git a/Build/source/libs/gd/libgd-src/src/gdtopng.c b/Build/source/libs/gd/libgd-src/src/gdtopng.c
    index d3341b43cad..c937558eb19 100644
    --- a/Build/source/libs/gd/libgd-src/src/gdtopng.c
    +++ b/Build/source/libs/gd/libgd-src/src/gdtopng.c
    @@ -1,4 +1,3 @@
    -
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    @@ -38,11 +37,7 @@ main (int argc, char **argv)
     		gdImageDestroy (im);
     		exit (1);
     	}
    -#ifdef HAVE_LIBPNG
     	gdImagePng (im, out);
    -#else
    -	fprintf(stderr, "No PNG library support.\n");
    -#endif
     	fclose (out);
     	gdImageDestroy (im);
     
    diff --git a/Build/source/libs/gd/libgd-src/src/getopt.c b/Build/source/libs/gd/libgd-src/src/getopt.c
    new file mode 100644
    index 00000000000..8651b87de74
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/src/getopt.c
    @@ -0,0 +1,129 @@
    +/*	$NetBSD: getopt.c,v 1.29 2014/06/05 22:00:22 christos Exp $	*/
    +
    +/*
    + * Copyright (c) 1987, 1993, 1994
    + *	The Regents of the University of California.  All rights reserved.
    + *
    + * Redistribution and use in source and binary forms, with or without
    + * modification, are permitted provided that the following conditions
    + * are met:
    + * 1. Redistributions of source code must retain the above copyright
    + *    notice, this list of conditions and the following disclaimer.
    + * 2. Redistributions in binary form must reproduce the above copyright
    + *    notice, this list of conditions and the following disclaimer in the
    + *    documentation and/or other materials provided with the distribution.
    + * 3. Neither the name of the University nor the names of its contributors
    + *    may be used to endorse or promote products derived from this software
    + *    without specific prior written permission.
    + *
    + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    + * SUCH DAMAGE.
    + */
    +
    +#include <errno.h>
    +#include <stdio.h>
    +#include <stdlib.h>
    +#include <string.h>
    +#include <unistd.h>
    +
    +int	opterr = 1,		/* if error message should be printed */
    +	optind = 1,		/* index into parent argv vector */
    +	optopt,			/* character checked for validity */
    +	optreset;		/* reset getopt */
    +char	*optarg;		/* argument associated with option */
    +
    +#define	BADCH	(int)'?'
    +#define	BADARG	(int)':'
    +#define	EMSG	""
    +
    +/*
    + * getopt --
    + *	Parse argc/argv argument vector.
    + */
    +int
    +getopt(int nargc, char * const nargv[], const char *ostr)
    +{
    +	static const char *place = EMSG;	/* option letter processing */
    +	char *oli;				/* option letter list index */
    +
    +	if (optreset || *place == 0) {		/* update scanning pointer */
    +		optreset = 0;
    +		place = nargv[optind];
    +		if (optind >= nargc || *place++ != '-') {
    +			/* Argument is absent or is not an option */
    +			place = EMSG;
    +			return (-1);
    +		}
    +		optopt = *place++;
    +		if (optopt == '-' && *place == 0) {
    +			/* "--" => end of options */
    +			++optind;
    +			place = EMSG;
    +			return (-1);
    +		}
    +		if (optopt == 0) {
    +			/* Solitary '-', treat as a '-' option
    +			   if the program (eg su) is looking for it. */
    +			place = EMSG;
    +			if (strchr(ostr, '-') == NULL)
    +				return -1;
    +			optopt = '-';
    +		}
    +	} else
    +		optopt = *place++;
    +
    +	/* See if option letter is one the caller wanted... */
    +	if (optopt == ':' || (oli = strchr(ostr, optopt)) == NULL) {
    +		if (*place == 0)
    +			++optind;
    +		if (opterr && *ostr != ':')
    +			(void)fprintf(stderr,
    +			    "%s: unknown option -- %c\n", nargv[0],
    +			    optopt);
    +		return (BADCH);
    +	}
    +
    +	/* Does this option need an argument? */
    +	if (oli[1] != ':') {
    +		/* don't need argument */
    +		optarg = NULL;
    +		if (*place == 0)
    +			++optind;
    +	} else {
    +		/* Option-argument is either the rest of this argument or the
    +		   entire next argument. */
    +		if (*place)
    +			optarg = (char *)place;
    +		else if (oli[2] == ':')
    +			/*
    +			 * GNU Extension, for optional arguments if the rest of
    +			 * the argument is empty, we return NULL
    +			 */
    +			optarg = NULL;
    +		else if (nargc > ++optind)
    +			optarg = nargv[optind];
    +		else {
    +			/* option-argument absent */
    +			place = EMSG;
    +			if (*ostr == ':')
    +				return (BADARG);
    +			if (opterr)
    +				(void)fprintf(stderr,
    +				    "%s: option requires an argument -- %c\n",
    +				    nargv[0], optopt);
    +			return (BADCH);
    +		}
    +		place = EMSG;
    +		++optind;
    +	}
    +	return (optopt);			/* return option letter */
    +}
    diff --git a/Build/source/libs/gd/libgd-src/src/gifanimtest.c b/Build/source/libs/gd/libgd-src/src/gifanimtest.c
    index da17b9e24f5..28b7d27381b 100644
    --- a/Build/source/libs/gd/libgd-src/src/gifanimtest.c
    +++ b/Build/source/libs/gd/libgd-src/src/gifanimtest.c
    @@ -32,4 +32,3 @@ int main(void)
     	gdImageDestroy(im);
     	return 0;
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/giftogd2.c b/Build/source/libs/gd/libgd-src/src/giftogd2.c
    index e7d0c6b8250..68c82a1e3fd 100644
    --- a/Build/source/libs/gd/libgd-src/src/giftogd2.c
    +++ b/Build/source/libs/gd/libgd-src/src/giftogd2.c
    @@ -49,4 +49,3 @@ int main(int argc, char **argv)
     
     	return 0;
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/src/jisx0208.h b/Build/source/libs/gd/libgd-src/src/jisx0208.h
    index d49dddc010a..118c23e0aac 100644
    --- a/Build/source/libs/gd/libgd-src/src/jisx0208.h
    +++ b/Build/source/libs/gd/libgd-src/src/jisx0208.h
    @@ -1,9 +1,9 @@
    +#ifndef JISX0208_H
    +#define JISX0208_H
     #ifdef __cplusplus
     extern "C" {
     #endif
     
    -#ifndef JISX0208_H
    -#define JISX0208_H
     	/* This file was derived from "src/VF_Ftype.c" in VFlib2-2.24.2
     	   by Dr. Kakugawa */
     
    @@ -1299,8 +1299,8 @@ extern "C" {
     		}
     	};
     
    -#endif /* JISX0208_H */
    -
     #ifdef __cplusplus
     }
     #endif
    +
    +#endif /* JISX0208_H */
    diff --git a/Build/source/libs/gd/libgd-src/src/msinttypes/inttypes.h b/Build/source/libs/gd/libgd-src/src/msinttypes/inttypes.h
    index 4b3828a2162..ead903f78e4 100644
    --- a/Build/source/libs/gd/libgd-src/src/msinttypes/inttypes.h
    +++ b/Build/source/libs/gd/libgd-src/src/msinttypes/inttypes.h
    @@ -1,32 +1,32 @@
     // ISO C9x  compliant inttypes.h for Microsoft Visual Studio
    -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 
    -// 
    +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
    +//
     //  Copyright (c) 2006 Alexander Chemeris
    -// 
    +//
     // Redistribution and use in source and binary forms, with or without
     // modification, are permitted provided that the following conditions are met:
    -// 
    +//
     //   1. Redistributions of source code must retain the above copyright notice,
     //      this list of conditions and the following disclaimer.
    -// 
    +//
     //   2. Redistributions in binary form must reproduce the above copyright
     //      notice, this list of conditions and the following disclaimer in the
     //      documentation and/or other materials provided with the distribution.
    -// 
    +//
     //   3. The name of the author may be used to endorse or promote products
     //      derived from this software without specific prior written permission.
    -// 
    +//
     // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
     // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
     // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
    +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
     // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    -// 
    +//
     ///////////////////////////////////////////////////////////////////////////////
     
     #ifndef _MSC_VER // [
    diff --git a/Build/source/libs/gd/libgd-src/src/msinttypes/stdint.h b/Build/source/libs/gd/libgd-src/src/msinttypes/stdint.h
    index d02608a5972..c66fbb817c0 100644
    --- a/Build/source/libs/gd/libgd-src/src/msinttypes/stdint.h
    +++ b/Build/source/libs/gd/libgd-src/src/msinttypes/stdint.h
    @@ -1,32 +1,32 @@
     // ISO C9x  compliant stdint.h for Microsoft Visual Studio
    -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 
    -// 
    +// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
    +//
     //  Copyright (c) 2006-2008 Alexander Chemeris
    -// 
    +//
     // Redistribution and use in source and binary forms, with or without
     // modification, are permitted provided that the following conditions are met:
    -// 
    +//
     //   1. Redistributions of source code must retain the above copyright notice,
     //      this list of conditions and the following disclaimer.
    -// 
    +//
     //   2. Redistributions in binary form must reproduce the above copyright
     //      notice, this list of conditions and the following disclaimer in the
     //      documentation and/or other materials provided with the distribution.
    -// 
    +//
     //   3. The name of the author may be used to endorse or promote products
     //      derived from this software without specific prior written permission.
    -// 
    +//
     // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
     // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
     // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
    +// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
     // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    -// 
    +//
     ///////////////////////////////////////////////////////////////////////////////
     
     #ifndef _MSC_VER // [
    diff --git a/Build/source/libs/gd/libgd-src/src/pngtogd.c b/Build/source/libs/gd/libgd-src/src/pngtogd.c
    index f00fe8f7ac9..4f9804d177a 100644
    --- a/Build/source/libs/gd/libgd-src/src/pngtogd.c
    +++ b/Build/source/libs/gd/libgd-src/src/pngtogd.c
    @@ -25,11 +25,7 @@ main (int argc, char **argv)
     		fprintf (stderr, "Input file does not exist!\n");
     		exit (1);
     	}
    -#ifdef HAVE_LIBPNG
     	im = gdImageCreateFromPng (in);
    -#else
    -	fprintf (stderr, "No PNG library support available.\n");
    -#endif
     	fclose (in);
     	if (!im) {
     		fprintf (stderr, "Input is not in PNG format!\n");
    diff --git a/Build/source/libs/gd/libgd-src/src/pngtogd2.c b/Build/source/libs/gd/libgd-src/src/pngtogd2.c
    index e474afb6612..20fbee25daa 100644
    --- a/Build/source/libs/gd/libgd-src/src/pngtogd2.c
    +++ b/Build/source/libs/gd/libgd-src/src/pngtogd2.c
    @@ -1,4 +1,3 @@
    -
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    @@ -30,12 +29,7 @@ main (int argc, char **argv)
     		fprintf(stderr, "Input file does not exist!\n");
     		exit (1);
     	}
    -#ifdef HAVE_LIBPNG
     	im = gdImageCreateFromPng (in);
    -#else
    -	im = NULL;
    -	fprintf(stderr, "No PNG library support available.\n");
    -#endif
     	fclose (in);
     	if (!im) {
     		fprintf(stderr, "Input is not in PNG format!\n");
    diff --git a/Build/source/libs/gd/libgd-src/src/snprintf.c b/Build/source/libs/gd/libgd-src/src/snprintf.c
    new file mode 100644
    index 00000000000..33d1b42c81d
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/src/snprintf.c
    @@ -0,0 +1,25 @@
    +/* Provide a snprintf on Windows for older Visual Studio builds.
    + * VS2013 and older do not support C99 snprintf(). The subsitute _snprintf()
    + * does not correctly NUL-terminate buffers in case of overflow.
    + * This implementation emulates the ISO C99 snprintf() for VS2013 and older.
    + */
    +
    +#if defined(_MSC_VER) && _MSC_VER < 1900
    +
    +#include <stdio.h>
    +#include <stdarg.h>
    +
    +int snprintf(char* buf, size_t len, const char* fmt, ...)
    +{
    +  int n;
    +  va_list ap;
    +  va_start(ap, fmt);
    +
    +  n = _vscprintf(fmt, ap);
    +  vsnprintf_s(buf, len, _TRUNCATE, fmt, ap);
    +
    +  va_end(ap);
    +  return n;
    +}
    +
    +#endif
    diff --git a/Build/source/libs/gd/libgd-src/src/testac.c b/Build/source/libs/gd/libgd-src/src/testac.c
    index 0d200f0630c..bea4308f082 100644
    --- a/Build/source/libs/gd/libgd-src/src/testac.c
    +++ b/Build/source/libs/gd/libgd-src/src/testac.c
    @@ -1,4 +1,3 @@
    -
     #ifdef HAVE_CONFIG_H
     #include "config.h"
     #endif
    @@ -17,7 +16,6 @@ void testDrawing (gdImagePtr im_in,
     int
     main (int argc, char *argv[])
     {
    -#ifdef HAVE_LIBPNG
     	/* Input and output files */
     	FILE *in;
     
    @@ -55,9 +53,6 @@ main (int argc, char *argv[])
     	testDrawing (im_in, 2.0, 0, 1, "noblending-doublesize-palette.png");
     	testDrawing (im_in, 2.0, 1, 1, "blending-doublesize-palette.png");
     	gdImageDestroy (im_in);
    -#else
    -	fprintf (stderr, "No PNG library support.\n");
    -#endif
     
     	return 0;
     }
    @@ -116,11 +111,7 @@ testDrawing (gdImagePtr im_in,
     		gdImageTrueColorToPalette (im_out, 1, 256);
     	}
     
    -#ifdef HAVE_LIBPNG
     	gdImagePng (im_out, out);
    -#else
    -	fprintf (stderr, "No PNG library support.\n");
    -#endif
     	fclose (out);
     
     	gdImageDestroy (im_out);
    diff --git a/Build/source/libs/gd/libgd-src/src/testtr.c b/Build/source/libs/gd/libgd-src/src/testtr.c
    index b7b419f96c0..ed1b374a8e8 100644
    --- a/Build/source/libs/gd/libgd-src/src/testtr.c
    +++ b/Build/source/libs/gd/libgd-src/src/testtr.c
    @@ -11,8 +11,6 @@
     int
     main(void)
     {
    -#ifdef HAVE_LIBFREETYPE
    -	FILE *out;
     	int transparent, green, black;
     	gdImagePtr im;
     
    @@ -37,17 +35,15 @@ main(void)
     
     	gdImageSaveAlpha (im, TRUE);
     #ifdef HAVE_LIBPNG
    -	out = fopen ("testtr.png", "wb");
    -	gdImagePng (im, out);
    -	fclose (out);
    +	{
    +		FILE *out = fopen("testtr.png", "wb");
    +		gdImagePng(im, out);
    +		fclose(out);
    +	}
     #else
     	fprintf(stderr, "Compiled without libpng support\n");
     #endif /* HAVE_LIBPNG */
     	gdImageDestroy (im);
     
     	return 0;
    -#else
    -	fprintf(stderr, "Compiled without freetype support\n");
    -	return 0;
    -#endif /* HAVE_LIBFREETYPE */
     }
    diff --git a/Build/source/libs/gd/libgd-src/src/wbmp.c b/Build/source/libs/gd/libgd-src/src/wbmp.c
    index 6be39410c55..6f187f9b1c5 100644
    --- a/Build/source/libs/gd/libgd-src/src/wbmp.c
    +++ b/Build/source/libs/gd/libgd-src/src/wbmp.c
    @@ -38,7 +38,8 @@
      */
     int getmbi(int (*getin) (void *in), void *in)
     {
    -	int i, mbi = 0;
    +	unsigned int mbi = 0;
    +	int i;
     
     	do {
     		i = getin(in);
    diff --git a/Build/source/libs/gd/libgd-src/src/wbmp.h b/Build/source/libs/gd/libgd-src/src/wbmp.h
    index f163b4be410..9a93d6ebf09 100644
    --- a/Build/source/libs/gd/libgd-src/src/wbmp.h
    +++ b/Build/source/libs/gd/libgd-src/src/wbmp.h
    @@ -1,7 +1,3 @@
    -#ifdef __cplusplus
    -extern "C" {
    -#endif
    -
     	/* WBMP
     	 * ----
     	 * WBMP Level 0: B/W, Uncompressed
    @@ -16,6 +12,10 @@ extern "C" {
     #ifndef __WBMP_H
     #define __WBMP_H	1
     
    +#ifdef __cplusplus
    +extern "C" {
    +#endif
    +
     	/* WBMP struct
     	 * -----------
     	 * A Wireless bitmap structure
    @@ -44,8 +44,8 @@ extern "C" {
     	void freewbmp(Wbmp *wbmp);
     	void printwbmp(Wbmp *wbmp);
     
    -#endif
    -
     #ifdef __cplusplus
     }
     #endif
    +
    +#endif
    diff --git a/Build/source/libs/gd/libgd-src/src/webpng.c b/Build/source/libs/gd/libgd-src/src/webpng.c
    index 2dff83294cf..b376253def9 100644
    --- a/Build/source/libs/gd/libgd-src/src/webpng.c
    +++ b/Build/source/libs/gd/libgd-src/src/webpng.c
    @@ -4,16 +4,10 @@
     
     /* Bring in standard I/O and string manipulation functions */
     #include <stdarg.h>
    -#ifdef HAVE_ERRNO_H
     #include <errno.h>
    -#endif
     #include <stdio.h>
    -#ifdef HAVE_STDLIB_H
     #include <stdlib.h>
    -#endif
    -#ifdef HAVE_STRING_H
     #include <string.h>
    -#endif
     #ifdef HAVE_UNISTD_H
     #include <unistd.h>
     #endif
    diff --git a/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
    index 7eef4bf46eb..c99fe21457c 100644
    --- a/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/CMakeLists.txt
    @@ -1,4 +1,3 @@
    -
     if (BUILD_TEST)
     	SET(DART_TESTING_TIMEOUT 5)
     
    @@ -28,15 +27,21 @@ if (BUILD_TEST)
     		gdimageclone
     		gdimagecolor
     		gdimagecolorclosest
    +		gdimagecolorclosesthwb
     		gdimagecolordeallocate
     		gdimagecolorexact
    +		gdimagecolormatch
     		gdimagecolorreplace
     		gdimagecolorresolve
     		gdimagecolortransparent
    +		gdimagecompare
     		gdimagecontrast
     		gdimageconvolution
     		gdimagecopy
    +		gdimagecopymerge
    +		gdimagecopymergegray
     		gdimagecopyresampled
    +		gdimagecopyresized
     		gdimagecopyrotated
     		gdimagecreate
     		gdimagecrop
    @@ -49,6 +54,7 @@ if (BUILD_TEST)
     		gdimagefilltoborder
     		gdimagefilter
     		gdimageflip
    +		gdimageellipse
     		gdimagegrayscale
     		gdimageline
     		gdimagenegate
    @@ -59,15 +65,22 @@ if (BUILD_TEST)
     		gdimagerotate
     		gdimagescale
     		gdimagescatterex
    +		gdimagesetinterpolationmethod
     		gdimagesetpixel
    +		gdimagesquaretocircle
    +		gdimagestring
    +		gdimagestring16
     		gdimagestringft
     		gdimagestringftex
    +		gdimagestringup
    +		gdimagestringup16
     		gdimagetruecolortopalette
     		gdinterpolatedscale
     		gdnewfilectx
     		gdtest
     		gdtiled
     		gdtransformaffineboundingbox
    +		gdtransformaffinecopy
     		gif
     		jpeg
     		png
    diff --git a/Build/source/libs/gd/libgd-src/tests/Makefile.am b/Build/source/libs/gd/libgd-src/tests/Makefile.am
    index 5f8b624bc1c..f342ceb088b 100644
    --- a/Build/source/libs/gd/libgd-src/tests/Makefile.am
    +++ b/Build/source/libs/gd/libgd-src/tests/Makefile.am
    @@ -23,15 +23,21 @@ include gdimagebrightness/Makemodule.am
     include gdimageclone/Makemodule.am
     include gdimagecolor/Makemodule.am
     include gdimagecolorclosest/Makemodule.am
    +include gdimagecolorclosesthwb/Makemodule.am
     include gdimagecolordeallocate/Makemodule.am
     include gdimagecolorexact/Makemodule.am
    +include gdimagecolormatch/Makemodule.am
     include gdimagecolorreplace/Makemodule.am
     include gdimagecolorresolve/Makemodule.am
     include gdimagecolortransparent/Makemodule.am
    +include gdimagecompare/Makemodule.am
     include gdimagecontrast/Makemodule.am
     include gdimageconvolution/Makemodule.am
     include gdimagecopy/Makemodule.am
    +include gdimagecopymerge/Makemodule.am
    +include gdimagecopymergegray/Makemodule.am
     include gdimagecopyresampled/Makemodule.am
    +include gdimagecopyresized/Makemodule.am
     include gdimagecopyrotated/Makemodule.am
     include gdimagecreate/Makemodule.am
     include gdimagecrop/Makemodule.am
    @@ -44,6 +50,7 @@ include gdimagefilledrectangle/Makemodule.am
     include gdimagefilltoborder/Makemodule.am
     include gdimagefilter/Makemodule.am
     include gdimageflip/Makemodule.am
    +include gdimageellipse/Makemodule.am
     include gdimagegrayscale/Makemodule.am
     include gdimageline/Makemodule.am
     include gdimagenegate/Makemodule.am
    @@ -54,15 +61,22 @@ include gdimagerectangle/Makemodule.am
     include gdimagerotate/Makemodule.am
     include gdimagescale/Makemodule.am
     include gdimagescatterex/Makemodule.am
    +include gdimagesetinterpolationmethod/Makemodule.am
     include gdimagesetpixel/Makemodule.am
    +include gdimagesquaretocircle/Makemodule.am
    +include gdimagestring/Makemodule.am
    +include gdimagestring16/Makemodule.am
     include gdimagestringft/Makemodule.am
     include gdimagestringftex/Makemodule.am
    +include gdimagestringup/Makemodule.am
    +include gdimagestringup16/Makemodule.am
     include gdimagetruecolortopalette/Makemodule.am
     include gdinterpolatedscale/Makemodule.am
     include gdnewfilectx/Makemodule.am
     include gdtest/Makemodule.am
     include gdtiled/Makemodule.am
     include gdtransformaffineboundingbox/Makemodule.am
    +include gdtransformaffinecopy/Makemodule.am
     include gif/Makemodule.am
     include jpeg/Makemodule.am
     include png/Makemodule.am
    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 8f2a88f9753..0cc1d067b93 100644
    --- a/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/bmp/CMakeLists.txt
    @@ -1,13 +1,9 @@
     LIST(APPEND TESTS_FILES
     	bmp_null
     	bug00275
    -)
    -
    -IF(PNG_FOUND)
    -LIST(APPEND TESTS_FILES
    +	bug00450
     	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 f3f1660e9ce..e7908f34c38 100644
    --- a/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/bmp/Makemodule.am
    @@ -1,12 +1,10 @@
     libgd_test_programs += \
     	bmp/bmp_null \
    -	bmp/bug00275
    -
    -if HAVE_LIBPNG
    -libgd_test_programs += \
    +	bmp/bug00275 \
    +	bmp/bug00450 \
     	bmp/bmp_im2im \
     	bmp/bug00276
    -endif
     
     EXTRA_DIST += \
    +	bmp/bug00450.bmp \
     	bmp/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c b/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c
    index 710c084c877..775d8495dd5 100644
    --- a/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c
    +++ b/Build/source/libs/gd/libgd-src/tests/bmp/bug00275.c
    @@ -6,7 +6,7 @@
     
     
     #ifdef __GNUC__
    -#define UNUSED __attribute__((unused))
    +#define UNUSED __attribute__((__unused__))
     #else
     #define UNUSED
     #endif
    @@ -49,5 +49,7 @@ int main()
     	/* "save" the image as BMP */
     	gdImageBmpCtx(im, &ctx, 2);
     
    +	gdImageDestroy(im);
    +
     	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c b/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c
    index 58ca423b7ee..dd5d5131202 100644
    --- a/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c
    +++ b/Build/source/libs/gd/libgd-src/tests/bmp/bug00276.c
    @@ -28,5 +28,7 @@ int main()
     	gdImageDestroy(im_orig);
     	gdImageDestroy(im_saved);
     
    +	gdFree(data);
    +
     	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.bmp b/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.bmp
    new file mode 100644
    index 00000000000..2db27a37f92
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.bmp differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.c b/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.c
    new file mode 100644
    index 00000000000..e048845654f
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/bmp/bug00450.c
    @@ -0,0 +1,40 @@
    +#include <stdio.h>
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main(void) {
    +	char *path = gdTestFilePath("bmp/bug00450.bmp");
    +	gdImagePtr im = gdImageCreateFromFile(path);
    +	gdTestAssert(im != NULL);
    +
    +	if (im) {
    +		char const ref[] =
    +			"#         "
    +			"##        "
    +			"###       "
    +			"####      "
    +			"#####     "
    +			"######    "
    +			"#######   "
    +			"########  "
    +			"######### "
    +			"##########"
    +			;
    +		int x, y;
    +
    +		for (y = 0; y < 10; ++y) {
    +			for (x = 0; x < 10; ++x) {
    +				int const expected_pixel = ref[x + y * 10] == '#';
    +				int const actual_pixel = gdImageGetPixel(im, x, y);
    +				gdTestAssert(expected_pixel == actual_pixel);
    +			}
    +		}
    +
    +		gdImageDestroy(im);
    +	}
    +
    +	free(path);
    +
    +	return gdNumFailures();
    +}
    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 312759a176f..a0dda49c5fe 100644
    --- a/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/freetype/Makemodule.am
    @@ -1,5 +1,5 @@
     if HAVE_LIBFREETYPE
    -if HAVE_LIBPNG 
    +if HAVE_LIBPNG
     libgd_test_programs += \
     	freetype/bug00132
     endif
    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 6053ba50826..e86c7801dcc 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gd/CMakeLists.txt
    @@ -1,13 +1,14 @@
     LIST(APPEND TESTS_FILES
    -	gd_null
    -	gd_num_colors
     	gd_versiontest
     )
     
    -IF(PNG_FOUND)
    +IF(ENABLE_GD_FORMATS)
     LIST(APPEND TESTS_FILES
    +	bug00383
    +	gd_null
    +	gd_num_colors
     	gd_im2im
     )
    -ENDIF(PNG_FOUND)
    +ENDIF(ENABLE_GD_FORMATS)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am
    index e4a741fb9dd..4a45bc22025 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gd/Makemodule.am
    @@ -1,13 +1,15 @@
     libgd_test_programs += \
    -	gd/gd_null \
    -	gd/gd_num_colors \
     	gd/gd_versiontest
     
    -if HAVE_LIBPNG
    +if ENABLE_GD_FORMATS
     libgd_test_programs += \
    +	gd/bug00383 \
    +	gd/gd_null \
    +	gd/gd_num_colors \
     	gd/gd_im2im
     endif
     
     EXTRA_DIST += \
    +	gd/bug00383.gd \
     	gd/crafted_num_colors.gd \
     	gd/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd/bug00383.c b/Build/source/libs/gd/libgd-src/tests/gd/bug00383.c
    new file mode 100644
    index 00000000000..edcfd059456
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gd/bug00383.c
    @@ -0,0 +1,32 @@
    +/**
    + * Test that invalid transparent colors can't be read
    + *
    + * We're reading a corrupt palette image in GD format, which has only a single
    + * palette entry, but claims that the transparent color would be 1.  We check
    + * that the transparency is simply ignored in this case.
    + *
    + * See also <https://github.com/libgd/libgd/issues/383>
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +
    +    fp = gdTestFileOpen2("gd", "bug00383.gd");
    +    gdTestAssert(fp != NULL);
    +    im = gdImageCreateFromGd(fp);
    +    gdTestAssert(im != NULL);
    +    fclose(fp);
    +
    +    gdTestAssert(gdImageGetTransparent(im) == -1);
    +
    +    gdImageDestroy(im);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd/bug00383.gd b/Build/source/libs/gd/libgd-src/tests/gd/bug00383.gd
    new file mode 100644
    index 00000000000..7f8611cd76c
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gd/bug00383.gd differ
    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 d60823130d8..cc188ca043d 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/CMakeLists.txt
    @@ -1,25 +1,27 @@
    +IF(ENABLE_GD_FORMATS)
    +IF(ZLIB_FOUND)
     LIST(APPEND TESTS_FILES
     	bug_289
     	bug00209
     	bug00309
     	bug00354
    +	bug00383
    +	createimagefromgd2part
    +	createimagefromgd2partptr
     	gd2_empty_file
     	php_bug_72339
    +	gd2_null
     	gd2_read_corrupt
     	too_few_image_data
    -)
    -
    -IF(ZLIB_FOUND)
    -LIST(APPEND TESTS_FILES
    -	gd2_null
    +	gd2_im2im
     )
     
     IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
    -	gd2_im2im
     	gd2_read
     )
     ENDIF(PNG_FOUND)
     ENDIF(ZLIB_FOUND)
    +ENDIF(ENABLE_GD_FORMATS)
     
     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 9c53b85649a..5cd29e6f7f9 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/Makemodule.am
    @@ -1,29 +1,33 @@
    +if ENABLE_GD_FORMATS
    +if HAVE_LIBZ
     libgd_test_programs += \
     	gd2/bug_289 \
     	gd2/bug00209 \
     	gd2/bug00309 \
     	gd2/bug00354 \
    +	gd2/bug00383 \
    +	gd2/createimagefromgd2part \
    +	gd2/createimagefromgd2partptr \
     	gd2/gd2_empty_file \
     	gd2/php_bug_72339 \
    +	gd2/gd2_null \
     	gd2/gd2_read_corrupt \
    -	gd2/too_few_image_data
    -
    -if HAVE_LIBZ
    -libgd_test_programs += \
    -	gd2/gd2_null
    +	gd2/too_few_image_data \
    +	gd2/gd2_im2im
     
     if HAVE_LIBPNG
     libgd_test_programs += \
    -	gd2/gd2_im2im \
     	gd2/gd2_read
     endif
     endif
    +endif
     
     EXTRA_DIST += \
     	gd2/CMakeLists.txt \
     	gd2/bug00209.gd2 \
     	gd2/bug00354a.gd2 \
     	gd2/bug00354b.gd2 \
    +	gd2/bug00383.gd2 \
     	gd2/conv_gd2_exp.gd2 \
     	gd2/conv_test.gd2 \
     	gd2/conv_test_exp.png \
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c
    index 4379d389ccc..7904d01fcf5 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug00209.c
    @@ -8,21 +8,19 @@
      * See <https://github.com/libgd/libgd/issues/209>.
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr im;
    -    FILE *fp;
    +	gdImagePtr im;
    +	FILE *fp;
     
    -    fp = gdTestFileOpen2("gd2", "bug00209.gd2");
    -    gdTestAssert(fp != NULL);
    -    im = gdImageCreateFromGd2(fp);
    -    gdTestAssert(im == NULL);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("gd2", "bug00209.gd2");
    +	gdTestAssert(fp != NULL);
    +	im = gdImageCreateFromGd2(fp);
    +	gdTestAssert(im == NULL);
    +	fclose(fp);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c b/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c
    index 8dc27cc5ad0..1bce091ab09 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug00354.c
    @@ -6,27 +6,25 @@
      * See also <https://github.com/libgd/libgd/issues/354>.
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr im;
    -    FILE *fp;
    +	gdImagePtr im;
    +	FILE *fp;
     
    -    fp = gdTestFileOpen2("gd2", "bug00354a.gd2");
    -    gdTestAssert(fp != NULL);
    -    im = gdImageCreateFromGd2(fp);
    -    gdTestAssert(im == NULL);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("gd2", "bug00354a.gd2");
    +	gdTestAssert(fp != NULL);
    +	im = gdImageCreateFromGd2(fp);
    +	gdTestAssert(im == NULL);
    +	fclose(fp);
     
    -    fp = gdTestFileOpen2("gd2", "bug00354b.gd2");
    -    gdTestAssert(fp != NULL);
    -    im = gdImageCreateFromGd2(fp);
    -    gdTestAssert(im == NULL);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("gd2", "bug00354b.gd2");
    +	gdTestAssert(fp != NULL);
    +	im = gdImageCreateFromGd2(fp);
    +	gdTestAssert(im == NULL);
    +	fclose(fp);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.c b/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.c
    new file mode 100644
    index 00000000000..dbbf661aa58
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.c
    @@ -0,0 +1,32 @@
    +/**
    + * Test that invalid transparent colors can't be read
    + *
    + * We're reading a corrupt palette image in GD2 format, which has only a single
    + * palette entry, but claims that the transparent color would be 1.  We check
    + * that the transparency is simply ignored in this case.
    + *
    + * See also <https://github.com/libgd/libgd/issues/383>
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +
    +    fp = gdTestFileOpen2("gd2", "bug00383.gd2");
    +    gdTestAssert(fp != NULL);
    +    im = gdImageCreateFromGd2(fp);
    +    gdTestAssert(im != NULL);
    +    fclose(fp);
    +
    +    gdTestAssert(gdImageGetTransparent(im) == -1);
    +
    +    gdImageDestroy(im);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.gd2 b/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.gd2
    new file mode 100644
    index 00000000000..dcb164de288
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gd2/bug00383.gd2 differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c b/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c
    index ad311e93ebc..9ca03cc1ee1 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/bug_289.c
    @@ -29,5 +29,7 @@ int main()
         gdTestAssertMsg(buffer[12] == 0, MSG, "1st", 0, buffer[12]);
         gdTestAssertMsg(buffer[13] == GD2_FMT_TRUECOLOR_COMPRESSED, MSG, "2nd", GD2_FMT_TRUECOLOR_COMPRESSED, buffer[13]);
     
    +    gdFree(buffer);
    +
         return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2part.c b/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2part.c
    new file mode 100644
    index 00000000000..0c81ba6235b
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2part.c
    @@ -0,0 +1,35 @@
    +/**
    + *Base test for gdImageCreateFromGd2Part()
    + */
    +#include "gd.h"
    +#include "gdtest.h"
    +#include <stdio.h>
    +#include <stdlib.h>
    +
    +int main()
    +{
    +	gdImagePtr im;
    +	FILE *p;
    +	int expected_color = 0xffffff;
    +	int actual_color = 0;
    +
    +	p = gdTestFileOpen2("gd2", "conv_test.gd2");
    +
    +	if (!p) {
    +		gdTestErrorMsg("failed, connot open gd2 file: conv_test.gd2");
    +		return 1;
    +	}
    +
    +	im = gdImageCreateFromGd2Part(p, 3, 3, 3, 3);
    +	fclose(p);
    +
    +	if (!im) {
    +		return 1;
    +	}
    +
    +	actual_color = gdImageGetPixel(im, 2, 2);
    +	gdImageDestroy(im);
    +	gdTestAssert(expected_color == actual_color);
    +
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2partptr.c b/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2partptr.c
    new file mode 100644
    index 00000000000..e432874667f
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/createimagefromgd2partptr.c
    @@ -0,0 +1,59 @@
    +/**
    + * Base test for gdImageCreateFromGd2PartPtr()
    + */
    +#include "gd.h"
    +#include "gdtest.h"
    +#include <stdio.h>
    +
    +int main()
    +{
    +	FILE *p;
    +	gdImagePtr im, partim;
    +	void *pg;
    +	int size = 0;
    +	int status = 0;
    +	int actual_color = 0;
    +	int expected_color = 0xffffff;
    +
    +	p = gdTestFileOpen2("gd2", "conv_test.gd2");
    +	if (!p) {
    +		gdTestErrorMsg("failed, cannot open gd2 file:conv_test.gd2");
    +		return 1;
    +	}
    +
    +	im = gdImageCreateFromGd2(p);
    +	fclose(p);
    +
    +	if (!im) {
    +		gdTestErrorMsg("failed, cannot create gd2 file.");
    +		return 1;
    +	}
    +
    +	pg = gdImageGd2Ptr(im, (GD2_CHUNKSIZE_MIN + GD2_CHUNKSIZE_MAX) / 2, GD2_FMT_COMPRESSED, &size);
    +	if (!pg) {
    +		status = 1;
    +		goto done1;
    +	}
    +
    +	if (size <= 0) {
    +		status = 1;
    +		goto done0;
    +	}
    +
    +	partim =  gdImageCreateFromGd2PartPtr(size, pg, 3, 3, 3, 3);
    +	if (!partim) {
    +		status = 1;
    +		goto done0;
    +	}
    +
    +	actual_color = gdImageGetPixel(partim, 2, 2);
    +	status = (expected_color == actual_color) ? 0 : 1;
    +	gdImageDestroy(partim);
    +
    +done0:
    +	gdFree(pg);
    +done1:
    +	gdImageDestroy(im);
    +
    +	return status;
    +}
    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 8ce8bd15d57..9f2b808255e 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
    @@ -33,17 +33,18 @@ int main(int argc, char *argv[])
     			fp = gdTestFileOpen2("gd2", path_exp[i]);
     			if (!fp) {
     				gdTestErrorMsg("failed, cannot open file: %s\n", path_exp[i]);
    +				gdImageDestroy(im);
     				return 1;
     			}
     			exp = gdImageCreateFromPng(fp);
     			if (!gdAssertImageEquals(exp, im)) {
     				gdTestErrorMsg("image %s differs from expected result\n", path[i]);
    -				gdImageDestroy(im);
     				error = 1;
     			}
     			if (exp) {
     				gdImageDestroy(exp);
     			}
    +			gdImageDestroy(im);
     		} else {
     			/* expected to fail */
     			if (im) {
    diff --git a/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c
    index 7ce60289ef8..8217c87c1d5 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gd2/php_bug_72339.c
    @@ -29,7 +29,7 @@ int main()
     
     	im = gdImageCreateFromGd2(fp);
     	fclose(fp);
    -	
    +
     	gdTestAssertMsg(im == NULL, "Image should have failed to be loaded\n");
     
     	return gdNumFailures();
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c
    index 779704830f0..dfed2429970 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagebrightness/basic.c
    @@ -2,40 +2,36 @@
      * Basic test for gdImageBrightness()
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     static void test_brightness(int brightness);
     
    -
     int main()
     {
    -    test_brightness(+100);
    -    test_brightness(-100);
    +	test_brightness(+100);
    +	test_brightness(-100);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
     
    -
     static void test_brightness(int brightness)
     {
    -    gdImagePtr im;
    -    FILE *fp;
    -    char basename[256];
    -    char *path;
    +	gdImagePtr im;
    +	FILE *fp;
    +	char basename[256];
    +	char *path;
     
    -    fp = gdTestFileOpen2("gdimagebrightness", "basic.png");
    -    im = gdImageCreateFromPng(fp);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("gdimagebrightness", "basic.png");
    +	im = gdImageCreateFromPng(fp);
    +	fclose(fp);
     
    -    gdImageBrightness(im, brightness);
    +	gdImageBrightness(im, brightness);
     
    -    sprintf(basename, "basic%+03d.png", brightness);
    -    path = gdTestFilePath2("gdimagebrightness", basename);
    -    gdAssertImageEqualsToFile(path, im);
    -    gdFree(path);
    +	sprintf(basename, "basic%+03d.png", brightness);
    +	path = gdTestFilePath2("gdimagebrightness", basename);
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt
    index e6ccc318a0f..662f4e966a1 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageclone/CMakeLists.txt
    @@ -1,5 +1,6 @@
     LIST(APPEND TESTS_FILES
     	bug00300
    +	style
     )
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am
    index 4b1b54c0100..51abf5c1171 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageclone/Makemodule.am
    @@ -1,5 +1,6 @@
     libgd_test_programs += \
    -	gdimageclone/bug00300
    +	gdimageclone/bug00300 \
    +	gdimageclone/style
     
     EXTRA_DIST += \
     	gdimageclone/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageclone/style.c b/Build/source/libs/gd/libgd-src/tests/gdimageclone/style.c
    new file mode 100644
    index 00000000000..c2b246ed705
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageclone/style.c
    @@ -0,0 +1,30 @@
    +/**
    + * Cloning an image should exactly reproduce all style related data
    + */
    +
    +
    +#include <string.h>
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im, clone;
    +    int style[] = {0, 0, 0};
    +
    +    im = gdImageCreate(8, 8);
    +    gdImageSetStyle(im, style, sizeof(style)/sizeof(style[0]));
    +
    +    clone = gdImageClone(im);
    +    gdTestAssert(clone != NULL);
    +
    +    gdTestAssert(clone->styleLength == im->styleLength);
    +    gdTestAssert(clone->stylePos == im->stylePos);
    +    gdTestAssert(!memcmp(clone->style, im->style, sizeof(style)/sizeof(style[0])));
    +
    +    gdImageDestroy(clone);
    +    gdImageDestroy(im);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c
    index ff2fe349854..86c0aff10be 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolor/basic.c
    @@ -2,28 +2,26 @@
      * Basic test for gdImageColor()
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr im;
    -    FILE *fp;
    -    char *path;
    +	gdImagePtr im;
    +	FILE *fp;
    +	char *path;
     
    -    fp = gdTestFileOpen2("gdimagecolor", "basic.png");
    -    im = gdImageCreateFromPng(fp);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("gdimagecolor", "basic.png");
    +	im = gdImageCreateFromPng(fp);
    +	fclose(fp);
     
    -    gdImageColor(im, 127, -127, -127, 0);
    +	gdImageColor(im, 127, -127, -127, 0);
     
    -    path = gdTestFilePath2("gdimagecolor", "basic_exp.png");
    -    gdAssertImageEqualsToFile(path, im);
    -    gdFree(path);
    +	path = gdTestFilePath2("gdimagecolor", "basic_exp.png");
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    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 be903abe33e..3964bfa79c0 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/CMakeLists.txt
    @@ -1,7 +1,5 @@
    -IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	gdimagecolorclosest
     )
    -ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am
    index f4da8beca66..be4220412ef 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosest/Makemodule.am
    @@ -1,7 +1,5 @@
    -if HAVE_LIBPNG
     libgd_test_programs += \
     	gdimagecolorclosest/gdimagecolorclosest
    -endif
     
     EXTRA_DIST += \
     	gdimagecolorclosest/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/CMakeLists.txt
    new file mode 100644
    index 00000000000..7a8afdc1e89
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/CMakeLists.txt
    @@ -0,0 +1,7 @@
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gdImageColorClosestHWB
    +)
    +ENDIF(PNG_FOUND)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/Makemodule.am
    new file mode 100644
    index 00000000000..14eddbd2395
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/Makemodule.am
    @@ -0,0 +1,7 @@
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimagecolorclosesthwb/gdImageColorClosestHWB
    +endif
    +
    +EXTRA_DIST += \
    +	gdimagecolorclosesthwb/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/gdImageColorClosestHWB.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/gdImageColorClosestHWB.c
    new file mode 100644
    index 00000000000..ab2018779fe
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorclosesthwb/gdImageColorClosestHWB.c
    @@ -0,0 +1,26 @@
    +/**
    +  * Basic test for gdImageColorClosestHWB()
    +  **/
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr im;
    +	FILE *fp;
    +
    +	fp = gdTestFileOpen2("gdimageflip", "remi.png");
    +	im = gdImageCreateFromPng(fp);
    +	fclose(fp);
    +
    +	int result = gdImageColorClosestHWB(im, 255, 0, 255);
    +
    +	if (gdTestAssert(result <= 0))
    +	{
    +		gdImageDestroy(im);
    +		return 1;
    +	}
    +
    +	gdImageDestroy(im);
    +	return 0;
    +}
    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 294fe4f7c9b..029d9296495 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/CMakeLists.txt
    @@ -1,7 +1,5 @@
    -IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	gdimagecolorexact
     )
    -ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am
    index 835b25ed62c..74279991e65 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorexact/Makemodule.am
    @@ -1,7 +1,5 @@
    -if HAVE_LIBPNG
     libgd_test_programs += \
     	gdimagecolorexact/gdimagecolorexact
    -endif
     
     EXTRA_DIST += \
     	gdimagecolorexact/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/CMakeLists.txt
    new file mode 100644
    index 00000000000..857b99a278e
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/CMakeLists.txt
    @@ -0,0 +1,6 @@
    +LIST(APPEND TESTS_FILES
    +	cve_2019_6977
    +	gdimagecolormatch
    +)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/Makemodule.am
    new file mode 100644
    index 00000000000..4ed48cec862
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/Makemodule.am
    @@ -0,0 +1,6 @@
    +libgd_test_programs += \
    +	gdimagecolormatch/cve_2019_6977 \
    +	gdimagecolormatch/gdimagecolormatch
    +
    +EXTRA_DIST += \
    +	gdimagecolormatch/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/cve_2019_6977.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/cve_2019_6977.c
    new file mode 100644
    index 00000000000..fdd7af57a89
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/cve_2019_6977.c
    @@ -0,0 +1,25 @@
    +/**
    + * Test for CVE-2019-6977
    + */
    +
    +#include "gd.h"
    +
    +int main()
    +{
    +	gdImagePtr im1;
    +	gdImagePtr im2;
    +
    +	im1 = gdImageCreateTrueColor(0xfff, 0xfff);
    +	im2 = gdImageCreate(0xfff, 0xfff);
    +	if (gdImageColorAllocate(im2, 0, 0, 0) < 0)
    +	{
    +		gdImageDestroy(im1);
    +		gdImageDestroy(im2);
    +		return 1;
    +	}
    +	gdImageSetPixel(im2, 0, 0, 255);
    +	gdImageColorMatch(im1, im2);
    +	gdImageDestroy(im1);
    +	gdImageDestroy(im2);
    +	return 0;
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/gdimagecolormatch.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/gdimagecolormatch.c
    new file mode 100644
    index 00000000000..f59c7691b3d
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolormatch/gdimagecolormatch.c
    @@ -0,0 +1,32 @@
    +/**
    + * Basic test for gdImageColorMatch()
    + **/
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main(){
    +	gdImagePtr im1, im2;
    +
    +	im1 = gdImageCreateTrueColor(80, 80);
    +	im2 = gdImageCreate(80, 80);
    +
    +	gdImageColorAllocate(im1, 255, 36, 74);
    +
    +	gdImageColorAllocate(im2, 255, 36, 74);
    +	gdImageColorAllocate(im2, 40, 0, 240);
    +	gdImageColorAllocate(im2, 255, 100, 255);
    +	gdImageColorAllocate(im2, 80, 60, 44);
    +
    +	int ifMatch = gdImageColorMatch(im1, im2);
    +
    +	gdImageDestroy(im1);
    +	gdImageDestroy(im2);
    +
    +	if (gdTestAssert(ifMatch != 0))
    +	{
    +		gdTestErrorMsg("gdImageColorMatch failed.\n");
    +		return 1;
    +	}
    +
    +	return 0;
    +}
    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 f2495d973ee..03bd9ebdf0a 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/CMakeLists.txt
    @@ -1,7 +1,5 @@
    -IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	gdimagecolorreplace
     )
    -ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am
    index a8badb05c99..3ea38e55500 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/Makemodule.am
    @@ -1,7 +1,5 @@
    -if HAVE_LIBPNG
     libgd_test_programs += \
     	gdimagecolorreplace/gdimagecolorreplace
    -endif
     
     EXTRA_DIST += \
     	gdimagecolorreplace/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c
    index dd3c17ee49d..102a674fe8c 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorreplace/gdimagecolorreplace.c
    @@ -44,22 +44,22 @@ static void run_tests(gdImagePtr im, int *error)
     	COLOR(yellow, 0xFF, 0xFF, 0);
     #undef COLOR
     
    -#define CHECK_VALUE(n, expected) do {							\
    -		if (gdTestAssert((n) == (expected)) != 1) {				\
    +#define CHECK_VALUE(n, expected) do {								\
    +		if (gdTestAssert((n) == (expected)) != 1) {					\
     			gdTestErrorMsg("%d is expected, but %d\n", expected, n);\
    -			*error = -1;										\
    -		}														\
    +			*error = -1;											\
    +		}															\
     	} while (0)
     
     #define CHECK_PIXEL(x, y, expected) \
    -	do {														\
    -		int pix;												\
    -		gdImageSetClip(im, 0, 0, 4, 4);							\
    -		pix = gdImageGetPixel(im, (x), (y));					\
    -		if (gdTestAssert(pix == (expected)) != 1) {				\
    +	do {																\
    +		int pix;														\
    +		gdImageSetClip(im, 0, 0, 4, 4);									\
    +		pix = gdImageGetPixel(im, (x), (y));							\
    +		if (gdTestAssert(pix == (expected)) != 1) {						\
     			gdTestErrorMsg("%d is expected, but %d\n", expected, pix);	\
    -			*error = -1;										\
    -		}														\
    +			*error = -1;												\
    +		}																\
     	} while (0)
     
     	c = gdImageColorAllocate(im, 0xFF, 0, 0xFF);
    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 5b553388668..a26084285d1 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/CMakeLists.txt
    @@ -1,7 +1,5 @@
    -IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	gdimagecolorresolve
     )
    -ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am
    index 316484c2068..a3e944276e4 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecolorresolve/Makemodule.am
    @@ -1,7 +1,5 @@
    -if HAVE_LIBPNG
     libgd_test_programs += \
     	gdimagecolorresolve/gdimagecolorresolve
    -endif
     
     EXTRA_DIST += \
     	gdimagecolorresolve/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecompare/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/CMakeLists.txt
    new file mode 100644
    index 00000000000..2974a07a620
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/CMakeLists.txt
    @@ -0,0 +1,4 @@
    +LIST(APPEND TESTS_FILES
    +	gdimagecompare
    +)
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecompare/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/Makemodule.am
    new file mode 100644
    index 00000000000..b4b0ebbd62a
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/Makemodule.am
    @@ -0,0 +1,5 @@
    +libgd_test_programs += \
    +	gdimagecompare/gdimagecompare
    +
    +EXTRA_DIST += \
    +	gdimagecompare/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecompare/gdimagecompare.c b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/gdimagecompare.c
    new file mode 100644
    index 00000000000..0e8367a8095
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecompare/gdimagecompare.c
    @@ -0,0 +1,56 @@
    +/**
    + * Base test for gdImageCompare()
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr im1;
    +	gdImagePtr im2;
    +	int black;
    +	int red1, red2;
    +	int yellow1, yellow2;
    +	int white;
    +	int blue;
    +	int ret;
    +
    +	im1 = gdImageCreate(128, 128);
    +	im2 = gdImageCreateTrueColor(256, 256);
    +
    +	/* Set different interlace */
    +	gdImageInterlace(im1, 1);
    +	gdImageInterlace(im2, 2);
    +
    +	/* Set different transparent */
    +	gdImageColorTransparent(im1, 10);
    +	gdImageColorTransparent(im2, 20);
    +
    +	/* Allocate different color number */
    +	black = gdImageColorAllocate(im1, 0, 0, 0);
    +	red1 = gdImageColorAllocate(im1, 255, 0, 0);
    +	yellow1 = gdImageColorAllocate(im1, 255, 255, 0);
    +	red2 = gdImageColorAllocate(im2, 255, 0, 0);
    +	yellow2 = gdImageColorAllocate(im2, 255, 255, 0);
    +	white = gdImageColorAllocate(im2, 255, 255, 255);
    +	blue = gdImageColorAllocate(im2, 0, 0, 255);
    +
    +	/* Filled different color */
    +	gdImageFilledRectangle(im1, 0, 0, 127, 8, black);
    +	gdImageFilledRectangle(im1, 9, 0, 127, 16, red1);
    +	gdImageFilledRectangle(im1, 17, 0, 127, 24, yellow1);
    +	gdImageFilledRectangle(im2, 0, 0, 127, 8, red2);
    +	gdImageFilledRectangle(im2, 9, 0, 127, 16, yellow2);
    +	gdImageFilledRectangle(im2, 17, 0, 127, 24, white);
    +	gdImageFilledRectangle(im2, 25, 0, 127, 32, blue);
    +
    +	ret = gdImageCompare(im1, im2);
    +
    +	gdTestAssert(ret == (GD_CMP_INTERLACE | GD_CMP_TRANSPARENT | GD_CMP_TRUECOLOR | GD_CMP_SIZE_X | GD_CMP_SIZE_Y | GD_CMP_COLOR | GD_CMP_IMAGE | GD_CMP_NUM_COLORS));
    +
    +	gdImageDestroy(im1);
    +	gdImageDestroy(im2);
    +
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c
    index 66c17ab9fb9..ef1f44ac16b 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecontrast/basic.c
    @@ -2,40 +2,36 @@
      * Basic test for gdImageContrast()
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     static void test_contrast(double contrast);
     
    -
     int main()
     {
    -    test_contrast(+50.0);
    -    test_contrast(-50.0);
    +	test_contrast(+50.0);
    +	test_contrast(-50.0);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
     
    -
     static void test_contrast(double contrast)
     {
    -    gdImagePtr im;
    -    FILE *fp;
    -    char basename[256];
    -    char *path;
    +	gdImagePtr im;
    +	FILE *fp;
    +	char basename[256];
    +	char *path;
     
    -    fp = gdTestFileOpen2("gdimagecontrast", "basic.png");
    -    im = gdImageCreateFromPng(fp);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("gdimagecontrast", "basic.png");
    +	im = gdImageCreateFromPng(fp);
    +	fclose(fp);
     
    -    gdImageContrast(im, contrast);
    +	gdImageContrast(im, contrast);
     
    -    sprintf(basename, "basic%+03.0f.png", contrast);
    -    path = gdTestFilePath2("gdimagecontrast", basename);
    -    gdAssertImageEqualsToFile(path, im);
    -    gdFree(path);
    +	sprintf(basename, "basic%+03.0f.png", contrast);
    +	path = gdTestFilePath2("gdimagecontrast", basename);
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     }
    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 802c38220ae..dc1fc51cefb 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/CMakeLists.txt
    @@ -1,3 +1,5 @@
    +LIST(APPEND TESTS_FILES bug00369)
    +
     IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	basic
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
    index 8f65b0f36e9..df5249d4529 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/Makemodule.am
    @@ -1,3 +1,6 @@
    +libgd_test_programs += \
    +	gdimageconvolution/bug00369
    +
     if HAVE_LIBPNG
     libgd_test_programs += \
     	gdimageconvolution/basic
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
    index 267a079d898..5fe308ca043 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/basic.c
    @@ -2,61 +2,54 @@
      * Basic test for gdImageConvolution() and related functions
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     static void test_convolution(void (*convolution_func)(gdImagePtr im), const char *expected)
     {
    -    gdImagePtr im;
    -    FILE *fp;
    -    char *path;
    +	gdImagePtr im;
    +	FILE *fp;
    +	char *path;
     
    -    fp = gdTestFileOpen2("gdimageconvolution", "basic.png");
    -    im = gdImageCreateFromPng(fp);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("gdimageconvolution", "basic.png");
    +	im = gdImageCreateFromPng(fp);
    +	fclose(fp);
     
    -    convolution_func(im);
    +	convolution_func(im);
     
    -    path = gdTestFilePath2("gdimageconvolution", expected);
    -    gdAssertImageEqualsToFile(path, im);
    -    gdFree(path);
    +	path = gdTestFilePath2("gdimageconvolution", expected);
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     }
     
    -
     static void test_edge_detect_quick(gdImagePtr im)
     {
    -    gdImageEdgeDetectQuick(im);
    +	gdImageEdgeDetectQuick(im);
     }
     
    -
     static void test_smooth(gdImagePtr im)
     {
    -    gdImageSmooth(im, 5);
    +	gdImageSmooth(im, 5);
     }
     
    -
     static void test_emboss(gdImagePtr im)
     {
    -    gdImageEmboss(im);
    +	gdImageEmboss(im);
     }
     
    -
     static void test_mean_removal(gdImagePtr im)
     {
    -    gdImageMeanRemoval(im);
    +	gdImageMeanRemoval(im);
     }
     
    -
     int main()
     {
    -    test_convolution(&test_edge_detect_quick, "basic_edge_detect_quick.png");
    -    test_convolution(&test_smooth, "basic_smooth.png");
    -    test_convolution(&test_emboss, "basic_emboss.png");
    -    test_convolution(&test_mean_removal, "basic_mean_removal.png");
    +	test_convolution(&test_edge_detect_quick, "basic_edge_detect_quick.png");
    +	test_convolution(&test_smooth, "basic_smooth.png");
    +	test_convolution(&test_emboss, "basic_emboss.png");
    +	test_convolution(&test_mean_removal, "basic_mean_removal.png");
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c
    new file mode 100644
    index 00000000000..631cb7adbc1
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageconvolution/bug00369.c
    @@ -0,0 +1,28 @@
    +/**
    + * Test Issue #369 for gdImageConvolution()
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr im;
    +	float matrix[3][3] = {
    +		{1, 0, 1},
    +		{0, 5, 0},
    +		{1, 0, 0}
    +	};
    +
    +	im = gdImageCreateTrueColor(40, 40);
    +	gdImageAlphaBlending(im, gdEffectReplace);
    +	gdImageFilledRectangle(im, 0, 0, 39, 39, 0x7FFFFFFF);
    +	gdImageFilledEllipse(im, 19, 19, 20, 20, 0x00FF00);
    +
    +	gdImageConvolution(im, matrix, 9, 1);
    +	gdTestAssert(0x7F010101 == gdImageGetPixel(im, 0, 0));
    +
    +	gdImageDestroy(im);
    +
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/CMakeLists.txt
    new file mode 100644
    index 00000000000..df9bdc67f3b
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/CMakeLists.txt
    @@ -0,0 +1,7 @@
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gdimagecopymerge
    +)
    +ENDIF(PNG_FOUND)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/Makemodule.am
    new file mode 100644
    index 00000000000..67511681117
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/Makemodule.am
    @@ -0,0 +1,8 @@
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimagecopymerge/gdimagecopymerge
    +endif
    +
    +EXTRA_DIST += \
    +	gdimagecopymerge/CMakeLists.txt \
    +	gdimagecopymerge/gdimagecopymerge_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge.c
    new file mode 100644
    index 00000000000..9f08020dd48
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge.c
    @@ -0,0 +1,38 @@
    +/**
    + * Basic test for gdImageCopyMerge()
    + */
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr dst = NULL;
    +	gdImagePtr src = NULL;
    +	int error = 0;
    +
    +	dst = gdImageCreate(100, 100);
    +	src = gdImageCreate(50, 50);
    +
    +	if (gdTestAssert(!dst)) {
    +		error = 1;
    +		goto done;
    +	}
    +	if (gdTestAssert(!src)) {
    +		error = 1;
    +		goto done;
    +	}
    +
    +	gdImageColorAllocate(src, 255, 255, 255);
    +	gdImageColorAllocate(dst, 0, 0, 0);
    +	gdImageCopyMerge(dst, src, 25, 25, 0, 0, 50, 50, 50);
    +
    +	if (!gdAssertImageEqualsToFile("gdimagecopymerge/gdimagecopymerge_exp.png", dst)) {
    +		error = 1;
    +	}
    +
    +done:
    +	gdImageDestroy(dst);
    +	gdImageDestroy(src);
    +
    +	return error;
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge_exp.png
    new file mode 100644
    index 00000000000..18302817297
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagecopymerge/gdimagecopymerge_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/CMakeLists.txt
    new file mode 100644
    index 00000000000..e0656ef6a8e
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/CMakeLists.txt
    @@ -0,0 +1,7 @@
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gdimagecopymergegray
    +)
    +ENDIF(PNG_FOUND)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/Makemodule.am
    new file mode 100644
    index 00000000000..6856d750579
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/Makemodule.am
    @@ -0,0 +1,8 @@
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimagecopymergegray/gdimagecopymergegray
    +endif
    +
    +EXTRA_DIST += \
    +	gdimagecopymergegray/CMakeLists.txt \
    +	gdimagecopymergegray/gdimagecopymergegray_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray.c
    new file mode 100644
    index 00000000000..34a8923a708
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray.c
    @@ -0,0 +1,38 @@
    +/**
    + * Basic test for gdImageCopyMergeGray()
    + */
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr dst = NULL;
    +	gdImagePtr src = NULL;
    +	int error = 0;
    +
    +	dst = gdImageCreate(100, 100);
    +	src = gdImageCreate(50, 50);
    +
    +	if (gdTestAssert(!dst)) {
    +		error = 1;
    +		goto done;
    +	}
    +	if (gdTestAssert(!src)) {
    +		error = 1;
    +		goto done;
    +	}
    +
    +	gdImageColorAllocate(src, 255, 255, 255);
    +	gdImageColorAllocate(dst, 0, 0, 0);
    +	gdImageCopyMergeGray(dst, src, 25, 25, 0, 0, 50, 50, 50);
    +
    +	if (!gdAssertImageEqualsToFile("gdimagecopymergegray/gdimagecopymergegray_exp.png", dst)) {
    +		error = 1;
    +	}
    +
    +done:
    +	gdImageDestroy(dst);
    +	gdImageDestroy(src);
    +
    +	return error;
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray_exp.png
    new file mode 100644
    index 00000000000..18302817297
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagecopymergegray/gdimagecopymergegray_exp.png differ
    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 4d0d66ba436..00351ca4c70 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 @@
    +LIST(APPEND TESTS_FILES
    +	exact_alpha
    +)
     IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	basic
     	basic_alpha
    -	exact_alpha
     	bug00201
     )
     ENDIF(PNG_FOUND)
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am
    index 5d0d714e8bb..d42eab559c2 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/Makemodule.am
    @@ -1,8 +1,10 @@
    +libgd_test_programs += \
    +	gdimagecopyresampled/exact_alpha
    +
     if HAVE_LIBPNG
     libgd_test_programs += \
     	gdimagecopyresampled/basic \
     	gdimagecopyresampled/basic_alpha \
    -	gdimagecopyresampled/exact_alpha \
     	gdimagecopyresampled/bug00201
     endif
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c
    index 053b6db3b72..0287267e6f2 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresampled/bug00201.c
    @@ -48,23 +48,23 @@ int main()
         fp = gdTestFileOpen2("gdimagecopyresampled", "bug00201_src.png");
         logo_source = gdImageCreateFromPng(fp);
         fclose(fp);
    -    
    +
         logo = blank_image(SRC_WIDTH,SRC_HEIGHT);
         gdImageAlphaBlending(logo, 0);
         gdImageCopy(logo, logo_source, 0,0, 0,0, SRC_WIDTH,SRC_HEIGHT);
         gdImageDestroy(logo_source);
    -    
    +
         scaled_logo = blank_image(DEST_WIDTH,DEST_HEIGHT);
         gdImageAlphaBlending(scaled_logo, 0);
         gdImageCopyResampled(scaled_logo, logo, 0,0, 0,0, 200,105, SRC_WIDTH,SRC_HEIGHT);
         gdImageDestroy(logo);
    -    
    +
         layers[0] = background;
         layers[1] = scaled_logo;
         img = flatten(layers, 2, DEST_WIDTH, DEST_HEIGHT);
         gdImageDestroy(background);
         gdImageDestroy(scaled_logo);
    -    
    +
         gdAssertImageEqualsToFile("gdimagecopyresampled/bug00201_exp.png", img);
         gdImageDestroy(img);
         return gdNumFailures();
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/CMakeLists.txt
    new file mode 100644
    index 00000000000..78b4fa9aab4
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/CMakeLists.txt
    @@ -0,0 +1,7 @@
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gdimagecopyresized
    +)
    +ENDIF(PNG_FOUND)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/Makemodule.am
    new file mode 100644
    index 00000000000..9d83e40052f
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/Makemodule.am
    @@ -0,0 +1,8 @@
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimagecopyresized/gdimagecopyresized
    +endif
    +
    +EXTRA_DIST += \
    +	gdimagecopyresized/CMakeLists.txt \
    +	gdimagecopyresized/gdimagecopyresized_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized.c b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized.c
    new file mode 100644
    index 00000000000..137f84b2146
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized.c
    @@ -0,0 +1,35 @@
    +/**
    + * add test case for gdImageCopyResized
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr src;
    +	gdImagePtr dst;
    +	gdImagePtr dst_tc;
    +
    +	/* We prepare two image type: Palette and True Color */
    +	/* src image is white, while dst and dst_tc is black */
    +	src = gdImageCreate(64, 64);
    +	gdImageColorAllocate(src, 255, 255, 255);
    +	dst = gdImageCreate(128, 128);
    +	gdImageColorAllocate(dst, 0, 0, 0);
    +	dst_tc = gdImageCreateTrueColor(128, 128);
    +
    +	/* Copy src to two image type separately */
    +	/* We copy src to the center of dst and dst_tc */
    +	gdImageCopyResized(dst, src, 32, 32, 0, 0, 64, 64, 64, 64);
    +	gdImageCopyResized(dst_tc, src, 32, 32, 0, 0, 64, 64, 64, 64);
    +
    +	gdAssertImageEqualsToFile("gdimagecopyresized/gdimagecopyresized_exp.png", dst);
    +	gdAssertImageEqualsToFile("gdimagecopyresized/gdimagecopyresized_exp.png", dst_tc);
    +
    +	gdImageDestroy(src);
    +	gdImageDestroy(dst);
    +	gdImageDestroy(dst_tc);
    +
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized_exp.png
    new file mode 100644
    index 00000000000..32fa084520a
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagecopyresized/gdimagecopyresized_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt
    index 905e79c52e2..1cd0c1a6033 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecreate/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	bug00340
     )
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c b/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c
    index 14129ab8660..9c6eff3ad64 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecreate/bug00340.c
    @@ -5,29 +5,25 @@
      * triggering an appropriate warning.
      */
     
    -
     #include <string.h>
     #include "gd.h"
     #include "gd_errors.h"
     #include "gdtest.h"
     
    -
     #define MSG "product of memory allocation multiplication would exceed INT_MAX, failing operation gracefully\n"
     
    -
     void error_handler(int priority, const char *format, ...)
     {
    -    gdTestAssert(priority == GD_WARNING);
    -    gdTestAssert(!strcmp(format, MSG));
    +	gdTestAssert(priority == GD_WARNING);
    +	gdTestAssert(!strcmp(format, MSG));
     }
     
    -
     int main()
     {
    -    gdImagePtr im;
    +	gdImagePtr im;
     
    -    im = gdImageCreate(64970, 65111);
    -    gdTestAssert(im == NULL);
    +	im = gdImageCreate(64970, 65111);
    +	gdTestAssert(im == NULL);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt
    index 4b1e97e292c..43f6f6c14cd 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/CMakeLists.txt
    @@ -1,6 +1,10 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	bug00297
    +	bug00432
    +	bug00485_auto
    +	bug00485_threshold
     	php_bug_72494
    +	bug00486
     )
     
     ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am
    index fe73c1de929..1725f6cbc5f 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/Makemodule.am
    @@ -1,5 +1,9 @@
     libgd_test_programs += \
     	gdimagecrop/bug00297 \
    +	gdimagecrop/bug00432 \
    +	gdimagecrop/bug00485_auto \
    +	gdimagecrop/bug00485_threshold \
    +	gdimagecrop/bug00486 \
     	gdimagecrop/php_bug_72494
     
     EXTRA_DIST += \
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00432.c b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00432.c
    new file mode 100644
    index 00000000000..d3f681f9857
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00432.c
    @@ -0,0 +1,45 @@
    +/**
    + * Test that gdImageCrop() retains transparency
    + *
    + * We create an image with transparent pixels, crop the image, and check whether
    + * all pixels are identical to the respective source image.
    + *
    + * See <https://github.com/libgd/libgd/issues/432>
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +#define WIDTH 10
    +#define HEIGHT 10
    +#define XOFF 1
    +#define YOFF 1
    +
    +
    +int main()
    +{
    +    gdImagePtr src, dst;
    +    gdRect crop = {XOFF, YOFF, WIDTH-XOFF-1, HEIGHT-YOFF-1};
    +    int i, j;
    +
    +    src = gdImageCreateTrueColor(WIDTH, HEIGHT);
    +    gdImageAlphaBlending(src, gdEffectReplace);
    +    gdImageFilledRectangle(src, 0, 0, WIDTH-1, HEIGHT-1,
    +            gdTrueColorAlpha(gdRedMax, gdGreenMax, gdBlueMax, gdAlphaMax));
    +
    +    dst = gdImageCrop(src, &crop);
    +    gdTestAssert(dst != NULL);
    +
    +    for (i = 0; i < gdImageSX(dst); i++) {
    +        for (j = 0; j < gdImageSY(dst); j++) {
    +            gdTestAssert(gdImageGetPixel(dst, i, j) == gdImageGetPixel(src, i+XOFF, j+YOFF));
    +        }
    +    }
    +
    +    gdImageDestroy(src);
    +    gdImageDestroy(dst);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_auto.c b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_auto.c
    new file mode 100644
    index 00000000000..3c0627e49d8
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_auto.c
    @@ -0,0 +1,52 @@
    +/**
    + * Test that gdImageCropAuto() works pixel precise
    + *
    + * We test that a single black pixel anywhere (but the corners) on an 8x8 pixel
    + * image with a white background is auto-cropped to a 1x1 pixel image with a
    + * black pixel.
    + *
    + * See <https://github.com/libgd/libgd/issues/485>
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +gdImagePtr createWhiteImageWithBlackPixelAt(int x, int y)
    +{
    +    gdImagePtr im = gdImageCreateTrueColor(8, 8);
    +    gdImageFilledRectangle(im, 0, 0, 7, 7, 0xffffff);
    +    gdImageSetPixel(im, x, y, 0x000000);
    +    return im;
    +}
    +
    +
    +int main()
    +{
    +    int x, y, height, width, color;
    +    gdImagePtr orig, cropped;
    +
    +    for (y = 0; y < 8; y++) {
    +        for (x = 0; x < 8; x++) {
    +            if ((x == 0 && (y == 0 || y == 7)) || (x == 7 && (y == 0 || y == 7))) {
    +                continue; // skip the corners
    +            }
    +            orig = createWhiteImageWithBlackPixelAt(x, y);
    +            cropped = gdImageCropAuto(orig, GD_CROP_SIDES);
    +            gdTestAssertMsg(cropped != NULL, "Pixel at %d, %d: unexpected NULL crop\n", x, y);
    +            if (cropped) {
    +                width = gdImageSX(cropped);
    +                gdTestAssertMsg(width == 1, "Pixel at %d, %d: unexpected width (%d)\n", x, y, width);
    +                height = gdImageSY(cropped);
    +                gdTestAssertMsg(height == 1, "Pixel at %d, %d: unexpected height (%d)\n", x, y, height);
    +                color = gdImageGetPixel(cropped, 0, 0);
    +                gdTestAssertMsg(color == 0x000000, "Pixel at %d, %d: unexpected color (%d)\n", x, y, color);
    +                gdImageDestroy(cropped);
    +            }
    +            gdImageDestroy(orig);
    +        }
    +    }
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_threshold.c b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_threshold.c
    new file mode 100644
    index 00000000000..31ac38f1577
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00485_threshold.c
    @@ -0,0 +1,48 @@
    +/**
    + * Test that gdImageCropThreshold() works pixel precise
    + *
    + * We test that a single black pixel anywhere on an 8x8 pixel image with a white
    + * background is threshold-cropped to a 1x1 pixel image with a black pixel.
    + *
    + * See <https://github.com/libgd/libgd/issues/485>
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +gdImagePtr createWhiteImageWithBlackPixelAt(int x, int y)
    +{
    +    gdImagePtr im = gdImageCreateTrueColor(8, 8);
    +    gdImageFilledRectangle(im, 0, 0, 7, 7, 0xffffff);
    +    gdImageSetPixel(im, x, y, 0x000000);
    +    return im;
    +}
    +
    +
    +int main()
    +{
    +    int x, y, height, width, color;
    +    gdImagePtr orig, cropped;
    +
    +    for (y = 0; y < 8; y++) {
    +        for (x = 0; x < 8; x++) {
    +            orig = createWhiteImageWithBlackPixelAt(x, y);
    +            cropped = gdImageCropThreshold(orig, 0xffffff, 1.0);
    +            gdTestAssertMsg(cropped != NULL, "Pixel at %d, %d: unexpected NULL crop\n", x, y);
    +            if (cropped) {
    +                width = gdImageSX(cropped);
    +                gdTestAssertMsg(width == 1, "Pixel at %d, %d: unexpected width (%d)\n", x, y, width);
    +                height = gdImageSY(cropped);
    +                gdTestAssertMsg(height == 1, "Pixel at %d, %d: unexpected height (%d)\n", x, y, height);
    +                color = gdImageGetPixel(cropped, 0, 0);
    +                gdTestAssertMsg(color == 0x000000, "Pixel at %d, %d: unexpected color (%d)\n", x, y, color);
    +                gdImageDestroy(cropped);
    +            }
    +            gdImageDestroy(orig);
    +        }
    +    }
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00486.c b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00486.c
    new file mode 100644
    index 00000000000..289d88fe596
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagecrop/bug00486.c
    @@ -0,0 +1,48 @@
    +/**
    + * Test that gdImageCropAuto() crops left and right as well
    + *
    + * We test that an image with four unicolored quadrants, where either both left
    + * quadrants or both right quadrants have the same color, but the remaining
    + * quadrants have different colors, are treated identically by
    + * gdImageCropAuto(…, GD_CROP_SIDES).
    + *
    + * See <https://github.com/libgd/libgd/issues/486>
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr orig, croppedLeft, croppedRight;
    +    int red, green, blue;
    +
    +    orig = gdImageCreateTrueColor(8, 8);
    +    red = gdImageColorAllocate(orig, 255, 0, 0);
    +    green = gdImageColorAllocate(orig, 0, 255, 0);
    +    blue = gdImageColorAllocate(orig, 0, 0, 255);
    +
    +    gdImageFilledRectangle(orig, 0, 0, 3, 3, green); // tl
    +    gdImageFilledRectangle(orig, 4, 0, 7, 3, red);   // tr
    +    gdImageFilledRectangle(orig, 0, 4, 3, 7, green); // bl
    +    gdImageFilledRectangle(orig, 4, 4, 7, 7, blue);  // br
    +    croppedLeft = gdImageCropAuto(orig, GD_CROP_SIDES);
    +    gdTestAssert(croppedLeft != NULL);
    +
    +    gdImageFilledRectangle(orig, 0, 0, 3, 3, red);   // tl
    +    gdImageFilledRectangle(orig, 4, 0, 7, 3, green); // tr
    +    gdImageFilledRectangle(orig, 0, 4, 3, 7, blue);  // bl
    +    gdImageFilledRectangle(orig, 4, 4, 7, 7, green); // br
    +    croppedRight = gdImageCropAuto(orig, GD_CROP_SIDES);
    +    gdTestAssert(croppedRight != NULL);
    +
    +    gdAssertImageEquals(croppedRight, croppedLeft);
    +
    +	gdImageDestroy(orig);
    +	gdImageDestroy(croppedLeft);
    +	gdImageDestroy(croppedRight);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageellipse/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/CMakeLists.txt
    new file mode 100644
    index 00000000000..b7d79f2cd8b
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/CMakeLists.txt
    @@ -0,0 +1,7 @@
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	bug00169
    +)
    +ENDIF(PNG_FOUND)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageellipse/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/Makemodule.am
    new file mode 100644
    index 00000000000..11d207902b0
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/Makemodule.am
    @@ -0,0 +1,8 @@
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimageellipse/bug00169
    +endif
    +
    +EXTRA_DIST += \
    +	gdimageellipse/CMakeLists.txt \
    +	gdimageellipse/bug00169_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169.c b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169.c
    new file mode 100644
    index 00000000000..8246c8c6394
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169.c
    @@ -0,0 +1,22 @@
    +/**
    + * add test case for gdImageEllipse
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr im;
    +	int white = 0;
    +
    +	im = gdImageCreateTrueColor(2200, 2200);
    +	white = gdImageColorAllocate(im, 255, 255, 255);
    +
    +	gdImageEllipse(im, 1100, 1100, 2200, 2200, white);
    +	gdAssertImageEqualsToFile("gdimageellipse/bug00169_exp.png", im);
    +
    +	gdImageDestroy(im);
    +
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169_exp.png
    new file mode 100644
    index 00000000000..f844608ab8f
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimageellipse/bug00169_exp.png differ
    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 df86097df95..8c9e4d53913 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/Makemodule.am
    @@ -1,9 +1,11 @@
     if HAVE_LIBTIFF
     if HAVE_LIBWEBP
    +if ENABLE_GD_FORMATS
     libgd_test_programs += \
     	gdimagefile/gdnametest
     endif
     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 2b3cc322c45..fcd040adbec 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefile/gdnametest.c
    @@ -11,149 +11,145 @@
     #define LY (HEIGHT/2)   // Line Y
     #define HT 2            // Half of line-thickness
     
    -
    -gdImagePtr mkwhite(int x, int y)
    +static gdImagePtr
    +mkwhite(int x, int y)
     {
    -    gdImagePtr im;
    +	gdImagePtr im;
     
     	im = gdImageCreateTrueColor(x, y);
     	gdImageFilledRectangle(im, 0, 0, x-1, y-1,
    -                           gdImageColorExactAlpha(im, 255, 255, 255, 0));
    +	                       gdImageColorExactAlpha(im, 255, 255, 255, 0));
     
    -    gdTestAssert(im != NULL);
    +	gdTestAssert(im != NULL);
     
    -    gdImageSetInterpolationMethod(im, GD_BICUBIC);    // FP interp'n
    +	gdImageSetInterpolationMethod(im, GD_BICUBIC);    // FP interp'n
     
    -    return im;
    +	return im;
     }/* mkwhite*/
     
    +static gdImagePtr
    +mkcross(void)
    +{
    +	gdImagePtr im;
    +	int fg, n;
     
    -gdImagePtr mkcross() {
    -    gdImagePtr im;
    -    int fg, n;
    -
    -    im = mkwhite(WIDTH, HEIGHT);
    -    fg = gdImageColorAllocate(im, 0, 0, 0);
    +	im = mkwhite(WIDTH, HEIGHT);
    +	fg = gdImageColorAllocate(im, 0, 0, 0);
     
    -    for (n = -HT; n < HT; n++) {
    -        gdImageLine(im, LX-n, 0, LX-n, HEIGHT-1, fg);
    -        gdImageLine(im, 0, LY-n, WIDTH-1, LY-n, fg);
    -    }/* for */
    +	for (n = -HT; n < HT; n++) {
    +		gdImageLine(im, LX-n, 0, LX-n, HEIGHT-1, fg);
    +		gdImageLine(im, 0, LY-n, WIDTH-1, LY-n, fg);
    +	}/* for */
     
    -    return im;
    +	return im;
     }/* mkcross*/
     
    -
    -
    -
    -void
    -do_test() {
    -
    -    gdTestAssertMsg(strchr("123",'2') != 0, "strchr() is not functional.\n");
    -    gdTestAssertMsg(strcasecmp("123abC","123Abc") == 0, "strcasecmp() is not functional.\n");
    -    
    -    int n;
    -    struct {
    -        const char *nm;     // Filename
    -        unsigned maxdiff;   // Maximum total pixel diff
    -        int required;       // 1 -> image type always supported, -1 -> skip it
    -        int readonly;       // 1 -> gd can only read this type
    -    } names[] = {
    -        {"img.png",     0,  0,  0},
    -        {"img.gif",     5,  1,  0},     // This seems to come from tc<->palette
    -        {"img.GIF",     5,  1,  0},     // Test for case insensitivity
    -        {"img.gd",      0,  1,  0}, 
    -        {"img.gd2",     0,  0,  0}, 
    -        {"img.jpg",    25,  0,  0},
    -        {"img.jpeg",   25,  0,  0},
    -        {"img.wbmp",    0,  1,  0},
    -        {"img.bmp",     0,  1,  0},
    -        {"img-ref.xpm", 0,  0,  1},
    -        {"img-ref.xbm", 0,  1,  1},
    -        {"img-ref.tga", 0,  1,  1},
    -        {"img.webp",   10,  1,  0},
    -        {"img.tiff",    0,  1,  0},
    -
    -        {NULL, 0}
    -    };
    -
    -    for (n = 0; names[n].nm; n++) {
    -        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
    -         * skipped items as bugs are fixed. */
    -        if (names[n].required < 0) {
    -            printf("Skipping test for '%s'.  FIX THIS!\n", names[n].nm);
    -            continue;
    -        }/* if */
    -
    -        /* Skip this file if the current library build doesn't support
    -         * 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", names[n].nm);
    -            continue;
    -        }/* if */
    -
    -        orig = mkcross();
    -
    -        /* Write the image unless writing is not supported. */
    -        if (!names[n].readonly) {
    -            /* Prepend the test directory; this is expected to be run in
    -             * the parent dir. */
    -            full_filename = gdTestTempFile(names[n].nm);
    -            status = gdImageFile(orig, full_filename);
    -            gdTestAssertMsg(status == GD_TRUE, "Failed to create %s\n", full_filename);
    -        } else {
    -            /* Prepend the test directory; this is expected to be run in
    -             * the parent dir. */
    -            full_filename = gdTestFilePath2("gdimagefile", names[n].nm);
    -        }/* if */
    -
    -        copy = gdImageCreateFromFile(full_filename);
    -        gdTestAssertMsg(!!copy, "Failed to load %s\n", full_filename);
    -        if (!copy) continue;
    -
    -        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);
    -            gdTestAssertMsg(status == 0, "Failed to delete %s\n", full_filename);
    -        }/* if */
    -
    -        free(full_filename);
    -        gdImageDestroy(orig);
    -        gdImageDestroy(copy);
    -    }/* for */
    +static void
    +do_test(void)
    +{
    +	gdTestAssertMsg(strchr("123",'2') != 0, "strchr() is not functional.\n");
    +	gdTestAssertMsg(strcasecmp("123abC","123Abc") == 0, "strcasecmp() is not functional.\n");
    +
    +	int n;
    +	struct {
    +		const char *nm;     // Filename
    +		unsigned maxdiff;   // Maximum total pixel diff
    +		int required;       // 1 -> image type always supported, -1 -> skip it
    +		int readonly;       // 1 -> gd can only read this type
    +	} names[] = {
    +		{"img.png",     0,  0,  0},
    +		{"img.gif",     5,  1,  0},     // This seems to come from tc<->palette
    +		{"img.GIF",     5,  1,  0},     // Test for case insensitivity
    +		{"img.gd",      0,  1,  0},
    +		{"img.gd2",     0,  0,  0},
    +		{"img.jpg",    25,  0,  0},
    +		{"img.jpeg",   25,  0,  0},
    +		{"img.wbmp",    0,  1,  0},
    +		{"img.bmp",     0,  1,  0},
    +		{"img-ref.xpm", 0,  0,  1},
    +		{"img-ref.xbm", 0,  1,  1},
    +		{"img-ref.tga", 0,  1,  1},
    +		{"img.webp",   10,  1,  0},
    +		{"img.tiff",    0,  1,  0},
    +
    +		{NULL, 0}
    +	};
    +
    +	for (n = 0; names[n].nm; n++) {
    +		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
    +		 * skipped items as bugs are fixed. */
    +		if (names[n].required < 0) {
    +			printf("Skipping test for '%s'.  FIX THIS!\n", names[n].nm);
    +			continue;
    +		}/* if */
    +
    +		/* Skip this file if the current library build doesn't support
    +		 * 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", names[n].nm);
    +			continue;
    +		}/* if */
    +
    +		orig = mkcross();
    +
    +		/* Write the image unless writing is not supported. */
    +		if (!names[n].readonly) {
    +			/* Prepend the test directory; this is expected to be run in
    +			 * the parent dir. */
    +			full_filename = gdTestTempFile(names[n].nm);
    +			status = gdImageFile(orig, full_filename);
    +			gdTestAssertMsg(status == GD_TRUE, "Failed to create %s\n", full_filename);
    +		} else {
    +			/* Prepend the test directory; this is expected to be run in
    +			 * the parent dir. */
    +			full_filename = gdTestFilePath2("gdimagefile", names[n].nm);
    +		}/* if */
    +
    +		copy = gdImageCreateFromFile(full_filename);
    +		gdTestAssertMsg(!!copy, "Failed to load %s\n", full_filename);
    +		if (!copy) continue;
    +
    +		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);
    +			gdTestAssertMsg(status == 0, "Failed to delete %s\n", full_filename);
    +		}/* if */
    +
    +		free(full_filename);
    +		gdImageDestroy(orig);
    +		gdImageDestroy(copy);
    +	}/* for */
     
     }/* do_test*/
     
    +static void
    +do_errortest(void)
    +{
    +	gdImagePtr im;
     
    -void
    -do_errortest() {
    -    gdImagePtr im;
    -
    -    im = mkcross();
    +	im = mkcross();
     
    -    gdTestAssert(!gdImageFile(im, "img.xpng"));
    -    gdTestAssert(!gdImageFile(im, "bobo"));
    -    gdTestAssert(!gdImageFile(im, "png"));
    -    gdTestAssert(!gdImageFile(im, ""));
    +	gdTestAssert(!gdImageFile(im, "img.xpng"));
    +	gdTestAssert(!gdImageFile(im, "bobo"));
    +	gdTestAssert(!gdImageFile(im, "png"));
    +	gdTestAssert(!gdImageFile(im, ""));
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     }/* do_errortest*/
     
    -
     int main()
     {
    +	do_test();
    +	do_errortest();
     
    -    do_test();
    -    do_errortest();
    -
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c
    index 752178a4805..3feaf42f68d 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_1.c
    @@ -37,4 +37,3 @@ int main()
     
     	return error;
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c
    index 982ae8f64d4..4edcd6aca7c 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_2.c
    @@ -46,4 +46,3 @@ int main()
     	gdImageDestroy(tile);
     	return error;
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c
    index b11fbc91ccb..1a1929e4205 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00002_3.c
    @@ -51,4 +51,3 @@ int main()
     	gdImageDestroy(tile);
     	return error;
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c
    index 13247cab4e0..694788a5f86 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefill/bug00104_1.c
    @@ -8,26 +8,26 @@ int main()
     	gdImagePtr im, tile;
     	int tile_red, tile_blue;
     	int error = 0;
    -	
    +
     	im = gdImageCreate(200, 150);
     
     	tile = gdImageCreateTrueColor(2, 2);
    -	
    +
     	tile_red = gdImageColorAllocate(tile, 255, 0, 0);
     	tile_blue = gdImageColorAllocate(tile, 0, 0, 255);
    -	
    +
     	gdImageSetPixel(tile, 0, 0, tile_red);
     	gdImageSetPixel(tile, 1, 1, tile_red);
     	gdImageSetPixel(tile, 1, 0, tile_blue);
     	gdImageSetPixel(tile, 0, 1, tile_blue);
    -	
    +
     	gdImageSetTile(im, tile);
     	gdImageFill(im, 11, 12, gdTiled);
     
     	if (!gdAssertImageEqualsToFile("gdimagefill/bug00104_1_exp.png", im)) {
     		error = 1;
     	}
    -	
    +
     	gdImageDestroy(im);
     	gdImageDestroy(tile);
     	return error;
    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 ba6d28f49a6..4042df931c2 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,6 @@
     IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
    +	bug00351
     	php_bug43828
     )
     ENDIF(PNG_FOUND)
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am
    index 4af6963f86c..710c0a095ee 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/Makemodule.am
    @@ -1,8 +1,10 @@
     if HAVE_LIBPNG
     libgd_test_programs += \
    +	gdimagefilledarc/bug00351 \
     	gdimagefilledarc/php_bug43828
     endif
     
     EXTRA_DIST += \
     	gdimagefilledarc/CMakeLists.txt \
    +	gdimagefilledarc/bug00351_exp.png \
     	gdimagefilledarc/php_bug43828_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351.c
    new file mode 100644
    index 00000000000..20b0fdea308
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351.c
    @@ -0,0 +1,30 @@
    +/**
    + * Test drawing of pies starting and/or ending near 90°
    + *
    + * See <https://github.com/libgd/libgd/issues/351>.
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    int white, navy, red;
    +
    +    im = gdImageCreateTrueColor(500, 500);
    +    white = gdTrueColorAlpha(0xFF, 0xFF, 0xFF, gdAlphaOpaque);
    +    navy = gdTrueColorAlpha(0x00, 0x00, 0x80, gdAlphaOpaque);
    +    red = gdTrueColorAlpha(0xFF, 0x00, 0x00, gdAlphaOpaque);
    +
    +    gdImageFilledArc(im, 250, 250, 500, 250, 0, 88, white, gdPie);
    +    gdImageFilledArc(im, 250, 250, 500, 250, 88, 91 , navy, gdPie);
    +    gdImageFilledArc(im, 250, 250, 500, 250, 91, 360 , red, gdPie);
    +
    +    gdAssertImageEqualsToFile("gdimagefilledarc/bug00351_exp.png", im);
    +
    +    gdImageDestroy(im);
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351_exp.png
    new file mode 100644
    index 00000000000..16b2db2623e
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagefilledarc/bug00351_exp.png differ
    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 5fe4edd1ad4..48286e4a5ef 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/CMakeLists.txt
    @@ -1,6 +1,7 @@
     IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	bug00010
    +	bug00169
     	bug00191
     	github_bug_00238
     )
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am
    index 6a5185a10c1..0a886868967 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/Makemodule.am
    @@ -1,6 +1,7 @@
     if HAVE_LIBPNG
     libgd_test_programs += \
     	gdimagefilledellipse/bug00010 \
    +	gdimagefilledellipse/bug00169 \
     	gdimagefilledellipse/bug00191 \
     	gdimagefilledellipse/github_bug_00238
     endif
    @@ -8,5 +9,6 @@ endif
     EXTRA_DIST += \
     	gdimagefilledellipse/CMakeLists.txt \
     	gdimagefilledellipse/bug00010_exp.png \
    +	gdimagefilledellipse/bug00169_exp.png \
     	gdimagefilledellipse/bug00191.png \
     	gdimagefilledellipse/github_bug_00238_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169.c
    new file mode 100644
    index 00000000000..639e52fc767
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169.c
    @@ -0,0 +1,22 @@
    +/**
    + * add test case for gdImageFilledEllipse
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr im;
    +	int white = 0;
    +
    +	im = gdImageCreateTrueColor(2200, 2200);
    +	white = gdImageColorAllocate(im, 255, 255, 255);
    +
    +	gdImageFilledEllipse(im, 1100, 1100, 2200, 2200, white);
    +	gdAssertImageEqualsToFile("gdimagefilledellipse/bug00169_exp.png", im);
    +
    +	gdImageDestroy(im);
    +
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169_exp.png
    new file mode 100644
    index 00000000000..db883907cdc
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/bug00169_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c
    index 499923fedd3..67c93fd551b 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledellipse/github_bug_00238.c
    @@ -12,7 +12,7 @@ int main()
     		goto exit;
     	}
     
    -	gdImageAlphaBlending(im, gdEffectNormal);	
    +	gdImageAlphaBlending(im, gdEffectNormal);
     	gdImageFilledRectangle(im, 0, 0, 140, 199, gdTrueColorAlpha(0,0,0,127));
     
     	gdImageAlphaBlending(im, gdEffectAlphaBlend);
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c
    index ebb1404984d..f9b96dac535 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledpolygon/self_intersecting.c
    @@ -3,29 +3,27 @@
      * *currently* using the even-odd fillrule.
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr im;
    -    int black;
    -    gdPoint points[] = {{50, 5}, {24, 86}, {93, 36}, {7, 36}, {76, 86}};
    -    char *path;
    +	gdImagePtr im;
    +	int black;
    +	gdPoint points[] = {{50, 5}, {24, 86}, {93, 36}, {7, 36}, {76, 86}};
    +	char *path;
     
    -    im = gdImageCreate(100, 100);
    -    gdImageColorAllocate(im, 255, 255, 255);
    -    black = gdImageColorAllocate(im, 0, 0, 0);
    +	im = gdImageCreate(100, 100);
    +	gdImageColorAllocate(im, 255, 255, 255);
    +	black = gdImageColorAllocate(im, 0, 0, 0);
     
    -    gdImageFilledPolygon(im, points, 5, black);
    +	gdImageFilledPolygon(im, points, 5, black);
     
    -    path = gdTestFilePath2("gdimagefilledpolygon", "self_intersecting_exp.png");
    -    gdAssertImageEqualsToFile(path, im);
    -    gdFree(path);
    +	path = gdTestFilePath2("gdimagefilledpolygon", "self_intersecting_exp.png");
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00004.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00004.c
    index 594e29637d7..87e33dc3a22 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00004.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00004.c
    @@ -24,4 +24,3 @@ int main()
     		return 1;
     	}
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00078.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00078.c
    index adf244ebca2..4cde69867ee 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00078.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00078.c
    @@ -36,4 +36,3 @@ int main()
     	gdImageDestroy(im);
     	return 0;
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00106_gdimagefilledrectangle.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00106_gdimagefilledrectangle.c
    index 24f5ceb9327..a6f5c06959b 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00106_gdimagefilledrectangle.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilledrectangle/bug00106_gdimagefilledrectangle.c
    @@ -24,4 +24,3 @@ int main()
     		return 1;
     	}
     }
    -
    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 fcf18f1a2e5..29502352ad3 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/CMakeLists.txt
    @@ -1,8 +1,6 @@
    -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/gdimagefilltoborder/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am
    index fc7ed3d05d6..779bda0565b 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/Makemodule.am
    @@ -1,8 +1,6 @@
    -if HAVE_LIBPNG
     libgd_test_programs += \
     	gdimagefilltoborder/bug00037 \
     	gdimagefilltoborder/github_bug_215
    -endif
     
     EXTRA_DIST += \
     	gdimagefilltoborder/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c
    index ab7e1b805bf..72e58b7fe64 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilltoborder/bug00037.c
    @@ -27,4 +27,3 @@ int main()
     	}
     
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c
    index dee2f1f8d52..aec49f51eb9 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagefilter/gdCopyBlurred.c
    @@ -143,7 +143,7 @@ void do_crosstest()
     {
         gdImagePtr im = mkcross();
         gdImagePtr blurred;
    -    const int RADIUS = 16; 
    +    const int RADIUS = 16;
     
         gdTestAssert(!!im);
     
    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 a29e50e18f2..da834eeda65 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageflip/gdimageflip.c
    @@ -2,36 +2,33 @@
      * Testing the basic operation of the gdImageFlip*() functions
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     static void test_flip(void (BGD_STDCALL *func)(gdImagePtr), const char *filename)
     {
    -    gdImagePtr im;
    -    FILE *fp;
    -    char *path;
    +	gdImagePtr im;
    +	FILE *fp;
    +	char *path;
     
    -    fp = gdTestFileOpen2("gdimageflip", "remi.png");
    -    im = gdImageCreateFromPng(fp);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("gdimageflip", "remi.png");
    +	im = gdImageCreateFromPng(fp);
    +	fclose(fp);
     
    -    func(im);
    +	func(im);
     
    -    path = gdTestFilePath2("gdimageflip", filename);
    -    gdAssertImageEqualsToFile(path, im);
    -    gdFree(path);
    +	path = gdTestFilePath2("gdimageflip", filename);
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     }
     
    -
     int main()
     {
    -    test_flip(gdImageFlipVertical, "gdimageflipvertical_exp.png");
    -    test_flip(gdImageFlipHorizontal, "gdimagefliphorizontal_exp.png");
    -    test_flip(gdImageFlipBoth, "gdimageflipboth_exp.png");
    +	test_flip(gdImageFlipVertical, "gdimageflipvertical_exp.png");
    +	test_flip(gdImageFlipHorizontal, "gdimagefliphorizontal_exp.png");
    +	test_flip(gdImageFlipBoth, "gdimageflipboth_exp.png");
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c
    index 40b4201944a..3ecc482366d 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/basic.c
    @@ -2,28 +2,26 @@
      * Basic test for gdImageGrayScale()
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr im;
    -    FILE *fp;
    -    char *path;
    +	gdImagePtr im;
    +	FILE *fp;
    +	char *path;
     
    -    fp = gdTestFileOpen2("gdimagegrayscale", "basic.png");
    -    im = gdImageCreateFromPng(fp);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("gdimagegrayscale", "basic.png");
    +	im = gdImageCreateFromPng(fp);
    +	fclose(fp);
     
    -    gdImageGrayScale(im);
    +	gdImageGrayScale(im);
     
    -    path = gdTestFilePath2("gdimagegrayscale", "basic_exp.png");
    -    gdAssertImageEqualsToFile(path, im);
    -    gdFree(path);
    +	path = gdTestFilePath2("gdimagegrayscale", "basic_exp.png");
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c
    index 5b6d048130a..2e68ed4d051 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagegrayscale/bug00386.c
    @@ -47,5 +47,7 @@ int main()
             }
         }
     
    +    gdImageDestroy(im);
    +
         return gdNumFailures();
     }
    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 1f8c419a682..c345ed1426e 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/CMakeLists.txt
    @@ -7,6 +7,7 @@ LIST(APPEND TESTS_FILES
     	bug00077
     	bug00072
     	bug00111
    +	bug00315
     	gdimageline_aa
     	gdimageline_bug5
     	gdImageAALine_thickness
    @@ -14,4 +15,4 @@ LIST(APPEND TESTS_FILES
     )
     ENDIF(PNG_FOUND)
     
    -ADD_GD_TESTS(m)
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am
    index 3b541a16a9a..9c104da2d5e 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/Makemodule.am
    @@ -6,6 +6,7 @@ libgd_test_programs += \
     	gdimageline/bug00072 \
     	gdimageline/bug00077 \
     	gdimageline/bug00111 \
    +	gdimageline/bug00315 \
     	gdimageline/gdimageline_aa \
     	gdimageline/gdimageline_bug5 \
     	gdimageline/gdImageAALine_thickness \
    @@ -17,6 +18,7 @@ EXTRA_DIST += \
     	gdimageline/bug00072_exp.png \
     	gdimageline/bug00077_exp.png \
     	gdimageline/bug00111_exp.png \
    +	gdimageline/bug00315_exp.png \
     	gdimageline/gdimageline_aa_a_1_exp.png \
     	gdimageline/gdimageline_aa_b_0_exp.png \
     	gdimageline/gdimageline_aa_c_0_exp.png \
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315.c b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315.c
    new file mode 100644
    index 00000000000..719d155e0ba
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315.c
    @@ -0,0 +1,37 @@
    +/**
    + * Regression test for <https://github.com/libgd/libgd/issues/315>
    + *
    + * We're testing that a single-pointed gdImageAALine() is drawn as a single
    + * non-antialized pixel, according to (two-pointed) vertical and horizontal
    + * lines.
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr im;
    +	int white, black;
    +	char *path;
    +
    +	im = gdImageCreateTrueColor(6, 6);
    +	white = gdImageColorAllocate(im, 255, 255, 255);
    +	black = gdImageColorAllocate(im, 0, 0, 0);
    +	gdImageFilledRectangle(im, 0,0, 5,5, white);
    +
    +	gdImageLine(im, 4,4, 4,4, black);
    +	gdImageLine(im, 1,4, 2,4, black);
    +	gdImageLine(im, 4,1, 4,2, black);
    +
    +	gdImageSetAntiAliased(im, black);
    +	gdImageLine(im, 1,1, 1,1, gdAntiAliased);
    +
    +	path = gdTestFilePath2("gdimageline", "bug00315_exp.png");
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
    +
    +	gdImageDestroy(im);
    +
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315_exp.png
    new file mode 100644
    index 00000000000..a6b2d850597
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimageline/bug00315_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c b/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c
    index f8dafc8ea23..563eec60d33 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagenegate/basic.c
    @@ -2,28 +2,26 @@
      * Basic test for gdImageNegate()
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr im;
    -    FILE *fp;
    -    char *path;
    +	gdImagePtr im;
    +	FILE *fp;
    +	char *path;
     
    -    fp = gdTestFileOpen2("gdimagenegate", "basic.png");
    -    im = gdImageCreateFromPng(fp);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("gdimagenegate", "basic.png");
    +	im = gdImageCreateFromPng(fp);
    +	fclose(fp);
     
    -    gdImageNegate(im);
    +	gdImageNegate(im);
     
    -    path = gdTestFilePath2("gdimagenegate", "basic_exp.png");
    -    gdAssertImageEqualsToFile(path, im);
    -    gdFree(path);
    +	path = gdTestFilePath2("gdimagenegate", "basic_exp.png");
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c
    index 047ac8f446e..f8e6646d05b 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagepixelate/gdimagepixelate.c
    @@ -27,28 +27,28 @@ static const int expected_average[][3] = {
     		}													\
     	} while (0)
     
    -#define CHECK_PIXELS(im, expected) do {									\
    -		int x, y;														\
    -		for (y = 0; y < (im)->sy; y++) {								\
    -			for (x = 0; x < (im)->sx; x++) {							\
    -				int p = gdImageGetPixel(im, x, y);						\
    -				int r = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]>>16)&0xFF; \
    -				int g = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]>> 8)&0xFF; \
    -				int b = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]    )&0xFF; \
    -				if (r != gdImageRed(im, p)) {							\
    +#define CHECK_PIXELS(im, expected) do {														  \
    +		int x, y;																			  \
    +		for (y = 0; y < (im)->sy; y++) {													  \
    +			for (x = 0; x < (im)->sx; x++) {												  \
    +				int p = gdImageGetPixel(im, x, y);											  \
    +				int r = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]>>16)&0xFF;					  \
    +				int g = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]>> 8)&0xFF;					  \
    +				int b = ((expected)[y/BLOCK_SIZE][x/BLOCK_SIZE]    )&0xFF; 					  \
    +				if (r != gdImageRed(im, p)) {												  \
     					gdTestErrorMsg("Red %x is expected, but %x\n", r, gdImageRed(im, p));	  \
    -					return 0;											\
    -				}														\
    -				if (g != gdImageGreen(im, p)) {							\
    +					return 0;																  \
    +				}																			  \
    +				if (g != gdImageGreen(im, p)) {												  \
     					gdTestErrorMsg("Green %x is expected, but %x\n", g, gdImageGreen(im, p)); \
    -					return 0;											\
    -				}														\
    -				if (b != gdImageBlue(im, p)) {							\
    +					return 0;																  \
    +				}																			  \
    +				if (b != gdImageBlue(im, p)) {												  \
     					gdTestErrorMsg("Blue %x is expected, but %x\n", b, gdImageBlue(im, p));	  \
    -					return 0;											\
    -				}														\
    -			}															\
    -		}																\
    +					return 0;																  \
    +				}																			  \
    +			}																				  \
    +		}																					  \
     	} while (0)
     
     static int testPixelate(gdImagePtr im)
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c
    index 6519342041f..9fd18aad8f8 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/github_bug_00172.c
    @@ -40,13 +40,6 @@ int main() {
     			error |=1;
     		}
     	}
    -
    -	if (gdImageGetPixel(im, xs -1, 95) != white) {
    -		error |=1;
    -	}
    -	if (gdImageGetPixel(im, xe +1, 95) != white) {
    -		error |=1;
    -	}
     	gdImageDestroy(im);
     
     	return error;
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c
    index b2ea4ed1735..704b3bd35b2 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerectangle/point_ordering.c
    @@ -1,7 +1,7 @@
     /**
      * Test point ordering of gdImageRectangle()
      *
    - * We're testing the two allowed point orders with and without thickness,
    + * We're testing all four possible point orders with and without thickness,
      * and verify that all sides of the rectangle are drawn.
      *
      * See also <https://github.com/libgd/libgd/issues/177>
    @@ -27,10 +27,14 @@ int main()
         red   = gdImageColorAllocate(im, 255,   0,   0);
     
         draw_and_check_rectangle(im,  10,  10,  50,  50, black, red);
    +    draw_and_check_rectangle(im,  50,  60,  10, 100, black, red);
         draw_and_check_rectangle(im,  50, 150,  10, 110, black, red);
    +    draw_and_check_rectangle(im,  10, 200,  50, 160, black, red);
         gdImageSetThickness(im, 4);
         draw_and_check_rectangle(im,  60,  10, 100,  50, black, red);
    +    draw_and_check_rectangle(im, 100,  60,  60, 100, black, red);
         draw_and_check_rectangle(im, 100, 150,  60, 110, black, red);
    +    draw_and_check_rectangle(im,  60, 200, 100, 160, black, red);
     
     #if 0
         /* save image for debugging purposes */
    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 01957c5905c..7b8ab14b35a 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/CMakeLists.txt
    @@ -1,11 +1,6 @@
     IF(PNG_FOUND)
    -IF(JPEG_FOUND)
     LIST(APPEND TESTS_FILES
     	bug00067
    -)
    -ENDIF(JPEG_FOUND)
    -
    -LIST(APPEND TESTS_FILES
     	php_bug_64898
     	php_bug_65070
     )
    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 9d375f39b9e..116c851b432 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/Makemodule.am
    @@ -1,10 +1,6 @@
     if HAVE_LIBPNG
    -if HAVE_LIBJPEG
    -libgd_test_programs += \
    -	gdimagerotate/bug00067
    -endif
    -
     libgd_test_programs += \
    +	gdimagerotate/bug00067 \
     	gdimagerotate/php_bug_64898 \
     	gdimagerotate/php_bug_65070
     endif
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c
    index 0bf34a3d78e..87a43ea2e7c 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070.c
    @@ -5,11 +5,9 @@
      * color.
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
     	gdImagePtr src, dst;
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png
    index fba85f6f06f..64b8b1095b7 100644
    Binary files a/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png and b/Build/source/libs/gd/libgd-src/tests/gdimagerotate/php_bug_65070_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c
    index bc505c12935..67a15618879 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00329.c
    @@ -6,48 +6,45 @@
      * expected color.
      */
     
    -
     #include <string.h>
     #include "gd.h"
     #include "gdtest.h"
     
    -
     static void test(const char *mode)
     {
    -    gdImagePtr src, dst;
    -    int expected, actual;
    -
    -    if (strcmp(mode, "palette")) {
    -        src = gdImageCreateTrueColor(100, 100);
    -        expected = gdTrueColorAlpha(255, 255, 255, gdAlphaOpaque);
    -        gdImageFilledRectangle(src, 0,0, 99,99, expected);
    -    } else {
    -        src = gdImageCreate(100, 100);
    -        gdImageColorAllocate(src, 255, 255, 255);
    -        expected = gdImageGetTrueColorPixel(src, 49, 49);
    -    }
    -
    -    gdImageSetInterpolationMethod(src, GD_BILINEAR_FIXED);
    -    dst = gdImageScale(src, 200, 200);
    -
    -    actual = gdImageGetPixel(dst, 0, 0);
    -    gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
    -    actual = gdImageGetPixel(dst, 0, 199);
    -    gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
    -    actual = gdImageGetPixel(dst, 199, 199);
    -    gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
    -    actual = gdImageGetPixel(dst, 199, 0);
    -    gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
    -
    -    gdImageDestroy(src);
    -    gdImageDestroy(dst);
    +	gdImagePtr src, dst;
    +	int expected, actual;
    +
    +	if (strcmp(mode, "palette")) {
    +		src = gdImageCreateTrueColor(100, 100);
    +		expected = gdTrueColorAlpha(255, 255, 255, gdAlphaOpaque);
    +		gdImageFilledRectangle(src, 0,0, 99,99, expected);
    +	} else {
    +		src = gdImageCreate(100, 100);
    +		gdImageColorAllocate(src, 255, 255, 255);
    +		expected = gdImageGetTrueColorPixel(src, 49, 49);
    +	}
    +
    +	gdImageSetInterpolationMethod(src, GD_BILINEAR_FIXED);
    +	dst = gdImageScale(src, 200, 200);
    +
    +	actual = gdImageGetPixel(dst, 0, 0);
    +	gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
    +	actual = gdImageGetPixel(dst, 0, 199);
    +	gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
    +	actual = gdImageGetPixel(dst, 199, 199);
    +	gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
    +	actual = gdImageGetPixel(dst, 199, 0);
    +	gdTestAssertMsg(actual == expected, "%s: wrong color; expected %x, but got %x", mode, expected, actual);
    +
    +	gdImageDestroy(src);
    +	gdImageDestroy(dst);
     }
     
    -
     int main()
     {
    -    test("palette");
    -    test("truecolor");
    +	test("palette");
    +	test("truecolor");
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c
    index 0c9d10c9139..44ba2f473fd 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug00330.c
    @@ -5,28 +5,26 @@
      * has the expected color value.
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr src, dst;
    -    int color;
    +	gdImagePtr src, dst;
    +	int color;
     
    -    src = gdImageCreate(100, 100);
    -    gdImageColorAllocate(src, 255, 255, 255);
    +	src = gdImageCreate(100, 100);
    +	gdImageColorAllocate(src, 255, 255, 255);
     
    -    gdImageSetInterpolationMethod(src, GD_BILINEAR_FIXED);
    -    dst = gdImageScale(src, 200, 200);
    +	gdImageSetInterpolationMethod(src, GD_BILINEAR_FIXED);
    +	dst = gdImageScale(src, 200, 200);
     
    -    color = gdImageGetPixel(dst, 99, 99);
    -    gdTestAssertMsg(color == 0xffffff,
    -                    "expected color ffffff, but got %x\n", color);
    +	color = gdImageGetPixel(dst, 99, 99);
    +	gdTestAssertMsg(color == 0xffffff,
    +	                "expected color ffffff, but got %x\n", color);
     
    -    gdImageDestroy(src);
    -    gdImageDestroy(dst);
    +	gdImageDestroy(src);
    +	gdImageDestroy(dst);
     
    -    return 0;
    +	return 0;
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c
    index 0a8503b745f..20cda1d03e2 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagescale/bug_overflow_large_new_size.c
    @@ -15,13 +15,14 @@ int main()
     		return 1;
     	}
     	gdImageSetInterpolationMethod(im, GD_BELL);
    -	
    +
     	/* here the call may pass if the system has enough memory (physical or swap)
     	   or fails (overflow check or alloc fails.
     	   in both cases the tests pass */
     	im2 = gdImageScale(im,0x15555556, 1);
     	if (im2 == NULL) {
     		printf("gdImageScale failed, expected (out of memory or overflow validation\n");
    +		gdImageDestroy(im);
     		return 0;
     	}
     	gdImageDestroy(im);
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/CMakeLists.txt
    new file mode 100644
    index 00000000000..655106266cd
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/CMakeLists.txt
    @@ -0,0 +1,5 @@
    +LIST(APPEND TESTS_FILES
    +	github_bug_00584
    +)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/Makemodule.am
    new file mode 100644
    index 00000000000..1b833367e5e
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/Makemodule.am
    @@ -0,0 +1,5 @@
    +libgd_test_programs += \
    +	gdimagesetinterpolationmethod/github_bug_00584
    +
    +EXTRA_DIST += \
    +	gdimagesetinterpolationmethod/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/github_bug_00584.c b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/github_bug_00584.c
    new file mode 100644
    index 00000000000..e11f9f06331
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetinterpolationmethod/github_bug_00584.c
    @@ -0,0 +1,31 @@
    +/**
    + * Test that gdImageSetInterpolationMethod(im, GD_DEFAULT) is consistent
    + *
    + * See <https://github.com/libgd/libgd/issues/584>
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    gdInterpolationMethod old_m, new_m;
    +    interpolation_method old_f, new_f;
    +
    +    im = gdImageCreateTrueColor(8, 8);
    +    gdTestAssert(im != NULL);
    +    gdTestAssert(gdImageSetInterpolationMethod(im, GD_SINC));
    +    old_m = gdImageGetInterpolationMethod(im);
    +    gdTestAssert(old_m == GD_SINC);
    +    old_f = im->interpolation;
    +    gdTestAssert(gdImageSetInterpolationMethod(im, GD_DEFAULT));
    +    new_m = gdImageGetInterpolationMethod(im);
    +    gdTestAssert(new_m == GD_LINEAR);
    +    new_f = im->interpolation;
    +    gdTestAssert(new_m != old_m);
    +    gdTestAssert(new_f != old_f);
    +    gdImageDestroy(im);
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c
    index 9874df659d9..f182d59f124 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesetpixel/alpha_blending.c
    @@ -2,53 +2,51 @@
      * Testing all effects
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr im;
    -    int effects[] = {
    -        gdEffectReplace, gdEffectAlphaBlend, gdEffectNormal,
    -        gdEffectOverlay, gdEffectMultiply
    -    };
    -    int red[3], blue[3];
    -    int x, y, i, j;
    -    char *path;
    -
    -    red[0] = gdTrueColorAlpha(0, 0, 255, 127);
    -    red[1] = gdTrueColorAlpha(0, 0, 255, 63);
    -    red[2] = gdTrueColorAlpha(0, 0, 255, 0);
    -    blue[0] = gdTrueColorAlpha(255, 0, 0, 127);
    -    blue[1] = gdTrueColorAlpha(255, 0, 0, 63);
    -    blue[2] = gdTrueColorAlpha(255, 0, 0, 0);
    -
    -    im = gdImageCreateTrueColor(120, 180);
    -
    -    gdImageAlphaBlending(im, gdEffectReplace);
    -    for (j = 0; j < 3; j++) {
    -        y = 60 * j;
    -        gdImageFilledRectangle(im, 0,y, 119,y+59, red[j]);
    -    }
    -
    -    for (i = 0; i < 5; i++) {
    -        x = 20 * i;
    -        gdImageAlphaBlending(im, effects[i]);
    -        for (j = 0; j < 9; j++) {
    -            y = 20 * j;
    -            gdImageFilledRectangle(im, x+20,y, x+39,y+19, blue[j % 3]);
    -        }
    -    }
    -
    -    gdImageSaveAlpha(im, 1);
    -
    -    path = gdTestFilePath2("gdimagesetpixel", "alphablending_exp.png");
    -    gdAssertImageEqualsToFile(path, im);
    -    gdFree(path);
    -
    -    gdImageDestroy(im);
    -
    -    return gdNumFailures();
    +	gdImagePtr im;
    +	int effects[] = {
    +		gdEffectReplace, gdEffectAlphaBlend, gdEffectNormal,
    +		gdEffectOverlay, gdEffectMultiply
    +	};
    +	int red[3], blue[3];
    +	int x, y, i, j;
    +	char *path;
    +
    +	red[0] = gdTrueColorAlpha(0, 0, 255, 127);
    +	red[1] = gdTrueColorAlpha(0, 0, 255, 63);
    +	red[2] = gdTrueColorAlpha(0, 0, 255, 0);
    +	blue[0] = gdTrueColorAlpha(255, 0, 0, 127);
    +	blue[1] = gdTrueColorAlpha(255, 0, 0, 63);
    +	blue[2] = gdTrueColorAlpha(255, 0, 0, 0);
    +
    +	im = gdImageCreateTrueColor(120, 180);
    +
    +	gdImageAlphaBlending(im, gdEffectReplace);
    +	for (j = 0; j < 3; j++) {
    +		y = 60 * j;
    +		gdImageFilledRectangle(im, 0,y, 119,y+59, red[j]);
    +	}
    +
    +	for (i = 0; i < 5; i++) {
    +		x = 20 * i;
    +		gdImageAlphaBlending(im, effects[i]);
    +		for (j = 0; j < 9; j++) {
    +			y = 20 * j;
    +			gdImageFilledRectangle(im, x+20,y, x+39,y+19, blue[j % 3]);
    +		}
    +	}
    +
    +	gdImageSaveAlpha(im, 1);
    +
    +	path = gdTestFilePath2("gdimagesetpixel", "alphablending_exp.png");
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
    +
    +	gdImageDestroy(im);
    +
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/CMakeLists.txt
    new file mode 100644
    index 00000000000..a8c9430b5c7
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/CMakeLists.txt
    @@ -0,0 +1,7 @@
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gdimagesquaretocircle
    +)
    +ENDIF(PNG_FOUND)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/Makemodule.am
    new file mode 100644
    index 00000000000..5b303000756
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/Makemodule.am
    @@ -0,0 +1,6 @@
    +libgd_test_programs += \
    +	gdimagesquaretocircle/gdimagesquaretocircle
    +
    +EXTRA_DIST += \
    +	gdimagesquaretocircle/CMakeLists.txt \
    +	gdimagesquaretocircle/gdimagesquaretocircle_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle.c b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle.c
    new file mode 100644
    index 00000000000..f8fba91d384
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle.c
    @@ -0,0 +1,32 @@
    +/**
    + * Basic test for gdImageSquareToCircle()
    + */
    +#include "gd.h"
    +#include "gdfx.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr im1, im2;
    +	int white;
    +	int black;
    +
    +	im1 = gdImageCreateTrueColor(128, 128);
    +	white = gdImageColorAllocate(im1, 255, 255, 255);
    +	black = gdImageColorAllocate(im1, 0, 0, 0);
    +	gdImageFilledRectangle(im1, 0, 0, 127, 127, white);
    +
    +	/* Draw a cross line in the middle of im1 */
    +	/* The horizonal line will become a circle in im2 */
    +	/* The vertical line will become a horizonal with half len in im2 */
    +	gdImageLine(im1, 0, 63, 127, 63, black);
    +	gdImageLine(im1, 63, 0, 63, 127, black);
    +	im2 = gdImageSquareToCircle(im1, 64);
    +
    +	gdAssertImageEqualsToFile("gdimagesquaretocircle/gdimagesquaretocircle_exp.png", im2);
    +
    +	gdImageDestroy(im1);
    +	gdImageDestroy(im2);
    +
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle_exp.png
    new file mode 100644
    index 00000000000..222bb13f6fa
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagesquaretocircle/gdimagesquaretocircle_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestring/CMakeLists.txt
    new file mode 100644
    index 00000000000..3cabaec548b
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring/CMakeLists.txt
    @@ -0,0 +1,7 @@
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gdimagestring
    +)
    +ENDIF(PNG_FOUND)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestring/Makemodule.am
    new file mode 100644
    index 00000000000..84ca656555f
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring/Makemodule.am
    @@ -0,0 +1,8 @@
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimagestring/gdimagestring
    +endif
    +
    +EXTRA_DIST += \
    +	gdimagestring/CMakeLists.txt \
    +	gdimagestring/gdimagestring_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring.c b/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring.c
    new file mode 100644
    index 00000000000..c4b4aa1e898
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring.c
    @@ -0,0 +1,34 @@
    +/**
    + * Base test for gdImageString()
    + */
    +#include <gd.h>
    +#include <gdfontl.h>
    +#include "gdtest.h"
    +#include <string.h>
    +
    +int main()
    +{
    +	/* Declare the image */
    +	gdImagePtr im = NULL;
    +	char *s = "Hello gd";
    +	int foreground = 0;
    +	int error = 0;
    +	gdFontPtr fontptr = gdFontGetLarge();
    +
    +	im = gdImageCreate(100, 50);
    +	gdImageColorAllocate(im, 202, 202, 0);
    +	foreground = gdImageColorAllocate(im, 22, 4, 238);
    +
    +	gdImageString(im, fontptr,
    +			im->sx / 2 - (strlen(s) * fontptr->w / 2),
    +			im->sy / 2 - fontptr->h / 2,
    +			(unsigned char*)s, foreground);
    +
    +	if (!gdAssertImageEqualsToFile("gdimagestring/gdimagestring_exp.png", im))
    +		error= 1;
    +
    +	/* Destroy the image in memory. */
    +	gdImageDestroy(im);
    +
    +	return error;
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring_exp.png
    new file mode 100644
    index 00000000000..24356267fe9
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagestring/gdimagestring_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring16/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/CMakeLists.txt
    new file mode 100644
    index 00000000000..e85db9b587c
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/CMakeLists.txt
    @@ -0,0 +1,7 @@
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gdimagestring16
    +)
    +ENDIF(PNG_FOUND)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring16/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/Makemodule.am
    new file mode 100644
    index 00000000000..84b6b5fd2fe
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/Makemodule.am
    @@ -0,0 +1,8 @@
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimagestring16/gdimagestring16
    +endif
    +
    +EXTRA_DIST += \
    +	gdimagestring16/CMakeLists.txt \
    +	gdimagestring16/gdimagestring16_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16.c b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16.c
    new file mode 100644
    index 00000000000..57eae978c36
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16.c
    @@ -0,0 +1,32 @@
    +/**
    + * Base test for gdImageString16()
    + */
    +#include <gd.h>
    +#include <gdfontl.h>
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	/* Declare the image */
    +	gdImagePtr im = NULL;
    +	wchar_t *wchr = L"H";
    +	unsigned short *sptr;
    +	sptr = (unsigned short *)wchr;
    +	int foreground;
    +	int errorcode = 0;
    +	gdFontPtr fontptr = gdFontGetLarge();
    +
    +	im = gdImageCreate(20, 20);
    +	gdImageColorAllocate(im, 255, 255, 255);
    +	foreground = gdImageColorAllocate(im, 22, 4, 238);
    +
    +	gdImageString16(im, fontptr, 2, 2, sptr, foreground);
    +
    +	if (!gdAssertImageEqualsToFile("gdimagestring16/gdimagestring16_exp.png", im))
    +		errorcode = 1;
    +
    +	/* Destroy the image in memory */
    +	gdImageDestroy(im);
    +
    +	return errorcode;
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16_exp.png
    new file mode 100644
    index 00000000000..5700578b0e2
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagestring16/gdimagestring16_exp.png differ
    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 00a8f43cb63..f46b9006ee6 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/CMakeLists.txt
    @@ -1,9 +1,7 @@
     IF(FREETYPE_FOUND)
    -IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	gdimagestringft_bbox
     )
    -ENDIF(PNG_FOUND)
     ENDIF(FREETYPE_FOUND)
     
    -ADD_GD_TESTS(m)
    +ADD_GD_TESTS()
    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 956e1db0d10..0dfe26fb13c 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringft/Makemodule.am
    @@ -1,9 +1,7 @@
     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 1596a9e7be5..5d57bc7b062 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
    @@ -8,22 +8,22 @@
     #define DELTA (PI/8)
     
     static int EXPECT[16][8] = {
    -	{498, 401, 630, 401, 630, 374, 498, 374},
    -	{491, 364, 613, 313, 602, 288, 481, 338},
    -	{470, 332, 563, 239, 544, 219, 451, 312},
    -	{438, 310, 488, 189, 463, 178, 412, 300},
    -	{401, 303, 401, 171, 374, 171, 374, 303},
    -	{365, 310, 314, 188, 289, 199, 339, 320},
    -	{334, 331, 241, 238, 221, 257, 314, 350},
    -	{313, 362, 192, 312, 181, 337, 303, 388},
    -	{306, 398, 174, 398, 174, 425, 306, 425},
    -	{313, 433, 191, 484, 202, 509, 323, 459},
    -	{333, 463, 240, 556, 259, 576, 352, 483},
    -	{363, 484, 313, 605, 338, 616, 389, 494},
    -	{398, 490, 398, 622, 425, 622, 425, 490},
    -	{432, 483, 483, 605, 508, 594, 458, 473},
    -	{461, 464, 554, 557, 574, 538, 481, 445},
    -	{481, 435, 602, 485, 613, 460, 491, 409},
    +	{500, 400, 628, 400, 628, 376, 500, 376},
    +	{492, 362, 611, 312, 601, 290, 483, 339},
    +	{470, 330, 561, 239, 544, 221, 453, 312},
    +	{437, 308, 486, 189, 464, 180, 414, 299},
    +	{400, 301, 400, 173, 376, 173, 376, 301},
    +	{363, 309, 313, 190, 291, 200, 340, 318},
    +	{332, 331, 241, 240, 223, 257, 314, 348},
    +	{311, 363, 192, 314, 183, 336, 302, 386},
    +	{304, 399, 176, 399, 176, 423, 304, 423},
    +	{312, 435, 193, 485, 203, 507, 321, 458},
    +	{333, 465, 242, 556, 259, 574, 350, 483},
    +	{364, 486, 315, 605, 337, 614, 387, 495},
    +	{399, 492, 399, 620, 423, 620, 423, 492},
    +	{434, 484, 484, 603, 506, 593, 457, 475},
    +	{463, 464, 554, 555, 572, 538, 481, 447},
    +	{483, 434, 602, 483, 611, 461, 492, 411},
     };
     
     int main()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/CMakeLists.txt
    new file mode 100644
    index 00000000000..424cb837dad
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/CMakeLists.txt
    @@ -0,0 +1,7 @@
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gdimagestringup
    +)
    +ENDIF(PNG_FOUND)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/Makemodule.am
    new file mode 100644
    index 00000000000..b136c80c906
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/Makemodule.am
    @@ -0,0 +1,8 @@
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimagestringup/gdimagestringup
    +endif
    +
    +EXTRA_DIST += \
    +	gdimagestringup/CMakeLists.txt \
    +	gdimagestringup/gdimagestringup_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup.c b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup.c
    new file mode 100644
    index 00000000000..0832bd79072
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup.c
    @@ -0,0 +1,34 @@
    +/**
    + * Base test for gdImageStringUp()
    + */
    +#include <gd.h>
    +#include <gdfontl.h>
    +#include "gdtest.h"
    +#include <string.h>
    +
    +int main()
    +{
    +	/* Declare the image */
    +	gdImagePtr im = NULL;
    +	char *s = "Hello gd";
    +	int errorcode = 0;
    +	int foreground;
    +	gdFontPtr fontptr = gdFontGetLarge();
    +
    +	im = gdImageCreate(50, 100);
    +	gdImageColorAllocate(im, 202, 202, 0);
    +	foreground = gdImageColorAllocate(im, 22, 4, 238);
    +
    +	gdImageStringUp(im, fontptr,
    +			im->sx / 2 - fontptr->h / 2,
    +			im->sy / 2 + (strlen(s) * fontptr->w / 2),
    +			(unsigned char*)s, foreground);
    +
    +	if (!gdAssertImageEqualsToFile("gdimagestringup/gdimagestringup_exp.png", im))
    +		errorcode = 1;
    +
    +	/* Destroy the image im memory */
    +	gdImageDestroy(im);
    +
    +	return errorcode;
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup_exp.png
    new file mode 100644
    index 00000000000..d1f6d664848
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagestringup/gdimagestringup_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/CMakeLists.txt
    new file mode 100644
    index 00000000000..08f4ff8238f
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/CMakeLists.txt
    @@ -0,0 +1,7 @@
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
    +	gdimagestringup16
    +)
    +ENDIF(PNG_FOUND)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/Makemodule.am
    new file mode 100644
    index 00000000000..7735432b3da
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/Makemodule.am
    @@ -0,0 +1,8 @@
    +if HAVE_LIBPNG
    +libgd_test_programs += \
    +	gdimagestringup16/gdimagestringup16
    +endif
    +
    +EXTRA_DIST += \
    +	gdimagestringup16/CMakeLists.txt \
    +	gdimagestringup16/gdimagestringup16_exp.png
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16.c b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16.c
    new file mode 100644
    index 00000000000..c843abec473
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16.c
    @@ -0,0 +1,31 @@
    +/**
    + * Base test for gdImageStringUp16()
    + */
    +#include <gd.h>
    +#include <gdfontl.h>
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	/* Declare the image */
    +	gdImagePtr im = NULL;
    +	wchar_t *wchr = L"H";
    +	unsigned short *sptr;
    +	sptr = (unsigned short *)wchr;
    +	int foreground;
    +	int errorcode = 0;
    +	gdFontPtr fontptr = gdFontGetLarge();
    +
    +	im = gdImageCreate(20, 20);
    +	gdImageColorAllocate(im, 255, 255, 255);
    +	foreground = gdImageColorAllocate(im, 22, 4, 238);
    +
    +	gdImageStringUp16(im, fontptr, 2, 18, sptr, foreground);
    +
    +	if (!gdAssertImageEqualsToFile("gdimagestringup16/gdimagestringup16_exp.png", im))
    +		errorcode = 1;
    +
    +	gdImageDestroy(im);
    +
    +	return errorcode;
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16_exp.png b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16_exp.png
    new file mode 100644
    index 00000000000..a1a457016dc
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gdimagestringup16/gdimagestringup16_exp.png differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt
    index b23d2a1b86a..fc7f6f73b14 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/CMakeLists.txt
    @@ -1,4 +1,4 @@
    -SET(TESTS_FILES
    +LIST(APPEND TESTS_FILES
     	bug00307
     	php_bug_72512
     )
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c
    index a5c6a04b64f..a01eb5ae940 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdimagetruecolortopalette/bug00307.c
    @@ -5,7 +5,7 @@
      * GD_QUANT_NEUQUANT has its trueColor flag unset.
      */
     
    - 
    +
     #include "gd.h"
     #include "gdtest.h"
     
    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 af0fd8c585e..7957c156a86 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gdinterpolatedscale/CMakeLists.txt
    @@ -4,3 +4,6 @@ LIST(APPEND TESTS_FILES
     )
     
     ADD_GD_TESTS()
    +
    +# Probably should speed this test up.
    +set_tests_properties(test_${TEST_PREFIX}_gdTrivialResize PROPERTIES TIMEOUT 20)
    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 7e9ee362985..832f27ae303 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.c
    @@ -1,4 +1,6 @@
    +#ifdef HAVE_CONFIG_H
     #include <config.h>
    +#endif
     #include <assert.h>
     #include <setjmp.h>
     #include <stdlib.h>
    @@ -21,7 +23,14 @@
     #endif
     
     #ifdef _WIN32
    -# include "readdir.h"
    +#include "readdir.h"
    +#include <errno.h>
    +#endif
    +
    +/* GDTEST_TOP_DIR is defined in other compile ways except msys
    + * test_config.h is created by windows/msys/run_test.sh*/
    +#ifndef GDTEST_TOP_DIR
    +#include <test_config.h>
     #endif
     
     #include "gd.h"
    @@ -40,7 +49,6 @@ void gdSilence(int priority, const char *format, va_list args)
     	(void)args;
     }
     
    -#ifdef HAVE_LIBPNG
     gdImagePtr gdTestImageFromPng(const char *filename)
     {
     	gdImagePtr image;
    @@ -58,14 +66,13 @@ gdImagePtr gdTestImageFromPng(const char *filename)
     	}
     
     	if (fp == NULL) {
    -			return NULL;
    +		return NULL;
     	}
     
     	image = gdImageCreateFromPng(fp);
     	fclose(fp);
     	return image;
     }
    -#endif
     
     static char *tmpdir_base;
     
    @@ -188,11 +195,11 @@ static int getfilesystemtime(struct timeval *tv)
     	fft.LowPart = ft.dwLowDateTime;
     	ff = fft.QuadPart;
     
    -	ff /= 10Ui64; /* convert to microseconds */
    -	ff -= 11644473600000000Ui64; /* convert to unix epoch */
    +	ff /= 10ULL; /* convert to microseconds */
    +	ff -= 11644473600000000ULL; /* convert to unix epoch */
     
    -	tv->tv_sec = (long)(ff / 1000000Ui64);
    -	tv->tv_usec = (long)(ff % 1000000Ui64);
    +	tv->tv_sec = (long)(ff / 1000000ULL);
    +	tv->tv_usec = (long)(ff % 1000000ULL);
     
     	return 0;
     }
    @@ -205,7 +212,7 @@ mkdtemp (char *tmpl)
     	static int counter = 0;
     	char *XXXXXX;
     	struct timeval tv;
    -	_int64 value;
    +	__int64 value;
     	int count;
     
     	/* find the last occurrence of "XXXXXX" */
    @@ -221,7 +228,7 @@ mkdtemp (char *tmpl)
     	value = (tv.tv_usec ^ tv.tv_sec) + counter++;
     
     	for (count = 0; count < 100; value += 7777, ++count) {
    -		_int64 v = value;
    +		__int64 v = value;
     
     		/* Fill in the random bits.  */
     		XXXXXX[0] = letters[v % NLETTERS];
    @@ -306,7 +313,7 @@ char *gdTestTempFile(const char *template)
     										  ret);
     				gdTestAssert(error != 0);
     		} else {
    -			sprintf(ret, "%s\\%s", tempdir, template);		
    +			sprintf(ret, "%s\\%s", tempdir, template);
     		}
     	}
     #else
    @@ -363,6 +370,7 @@ char *gdTestFilePathV(const char *path, va_list args)
     		strcat(file, "/");
     #endif
     		strcat(file, p);
    +
     	} while ((p = va_arg(args, const char *)) != NULL);
     	va_end(args);
     
    @@ -502,7 +510,6 @@ 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)
     {
    @@ -562,6 +569,7 @@ int gdTestImageCompareToImage(const char* file, unsigned int line, const char* m
     		if (!fp) goto fail;
     		gdImagePng(surface_diff,fp);
     		fclose(fp);
    +		gdImageDestroy(surface_diff);
     
     		fp = fopen(file_out, "wb");
     		if (!fp) goto fail;
    @@ -581,9 +589,7 @@ fail:
     	}
     	return 1;
     }
    -#endif
     
    -#ifdef HAVE_LIBPNG
     int gdTestImageCompareToFile(const char* file, unsigned int line, const char* message,
                                  const char *expected_file, gdImagePtr actual)
     {
    @@ -601,7 +607,6 @@ int gdTestImageCompareToFile(const char* file, unsigned int line, const char* me
     	}
     	return res;
     }
    -#endif
     
     static int failureCount = 0;
     
    @@ -622,9 +627,9 @@ int _gdTestAssert(const char* file, unsigned int line, int condition)
     int _gdTestAssertMsg(const char* file, unsigned int line, int condition, const char* message, ...)
     {
     	va_list args;
    -	
    +
     	if (condition) return 1;
    -  
    +
     	fprintf(stderr, "%s:%u: ", file, line);
     	va_start(args, message);
     	vfprintf(stderr, message, args);
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h
    index 82d2feba305..16d89aa48cb 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtest/gdtest.h
    @@ -3,7 +3,6 @@
     
     #include <stdarg.h>
     
    -#define GDTEST_STRING_MAX 1024
     typedef struct CuTestImageResult CuTestImageResult;
     struct CuTestImageResult {
     	unsigned int pixels_changed;
    @@ -64,10 +63,8 @@ int _gdTestErrorMsg(const char* file, unsigned int line, const char* string, ...
     
     /* public assert functions */
     #define gdAssertImageEqualsToFile(ex,ac) gdTestImageCompareToFile(__FILE__,__LINE__,NULL,(ex),(ac))
    -#define gdAssertImageFileEqualsMsg(ex,ac,ms) gdTestImageCompareFiles(__FILE__,__LINE__,(ms),(ex),(ac))
     
     #define gdAssertImageEquals(ex,ac) gdTestImageCompareToImage(__FILE__,__LINE__,NULL,(ex),(ac))
    -#define gdAssertImageEqualsMsg(ex,ac,ms) gdTestImageCompareToImage(__FILE__,__LINE__,(ms),(ex),(ac))
     
     #define gdTestAssert(cond) _gdTestAssert(__FILE__, __LINE__, (cond))
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c b/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c
    index 4c788e235cc..7a2b5cccb0d 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtiled/bug00032.c
    @@ -29,4 +29,3 @@ int main()
     	gdImageDestroy(tile);
     	return 0;
     }
    -
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c
    index c327789d9f8..9e75d0ee368 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffineboundingbox/github_bug_00221.c
    @@ -10,7 +10,7 @@ int main()
     		gdRect bbox;
     		gdRect area;
     		double affine[6];
    -		
    +
     		affine[0] = -0.965926;
     		affine[1] = -0.258819;
     		affine[2] =  0.258819;
    @@ -24,7 +24,7 @@ int main()
     		if (gdTransformAffineBoundingBox(&area, affine, &bbox) != GD_TRUE) {
     			return 1;
     		}
    -		if (!(bbox.x ==-253 &&  bbox.y ==-228 && bbox.width == 298 && bbox.height == 230)) {
    +		if (!(bbox.x ==-253 &&  bbox.y ==-228 && bbox.width == 297 && bbox.height == 229)) {
     			return 1;
     		}
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/CMakeLists.txt b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/CMakeLists.txt
    new file mode 100644
    index 00000000000..4af9fcc2b10
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/CMakeLists.txt
    @@ -0,0 +1,8 @@
    +LIST(APPEND TESTS_FILES
    +	github_bug_00583
    +	github_bug_00585
    +	github_bug_00586
    +	github_bug_00596
    +)
    +
    +ADD_GD_TESTS()
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/Makemodule.am
    new file mode 100644
    index 00000000000..494ec80d535
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/Makemodule.am
    @@ -0,0 +1,8 @@
    +libgd_test_programs += \
    +	gdtransformaffinecopy/github_bug_00583 \
    +	gdtransformaffinecopy/github_bug_00585 \
    +	gdtransformaffinecopy/github_bug_00586 \
    +	gdtransformaffinecopy/github_bug_00596
    +
    +EXTRA_DIST += \
    +	gdtransformaffinecopy/CMakeLists.txt
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00583.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00583.c
    new file mode 100644
    index 00000000000..6b0fd53d1ca
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00583.c
    @@ -0,0 +1,30 @@
    +/**
    + * Test that a zero determinant matrix causes gdTransformAffineCopy() to fail
    + *
    + * See <https://github.com/libgd/libgd/issues/583>
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr src, dst;
    +    gdRect rect = {0, 0, 8, 8};
    +    double matrix[] = {1, 1, 1, 1, 1, 1};
    +    int white;
    +    int res;
    +
    +    src = gdImageCreateTrueColor(8, 8);
    +    gdTestAssert(src != NULL);
    +    dst = gdImageCreateTrueColor(8, 8);
    +    gdTestAssert(dst != NULL);
    +    white = gdImageColorAllocate(src, 255, 255, 255);
    +    gdImageFilledRectangle(src, 0, 0, 7, 7, white);
    +    res = gdTransformAffineCopy(dst, 0, 0, src, &rect, matrix);
    +    gdTestAssert(res == GD_FALSE);
    +    gdImageDestroy(dst);
    +    gdImageDestroy(src);
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00585.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00585.c
    new file mode 100644
    index 00000000000..e83910c95ac
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00585.c
    @@ -0,0 +1,33 @@
    +/*
    + * Test that gdTransformAffineCopy() does not change the interpolation method
    + *
    + * See <https://github.com/libgd/libgd/issues/585>
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr src, dst;
    +	gdRect rect = {0, 0, 8, 8};
    +	double matrix[] = {1, 1, 1, 1, 1, 1};
    +	int res;
    +	gdInterpolationMethod old_m, new_m;
    +
    +	src = gdImageCreateTrueColor(8, 8);
    +	gdTestAssert(src != NULL);
    +	dst = gdImageCreateTrueColor(8, 8);
    +	gdTestAssert(dst != NULL);
    +
    +	res = gdImageSetInterpolationMethod(src, GD_CATMULLROM);
    +	gdTestAssert(res == GD_TRUE);
    +	old_m = gdImageGetInterpolationMethod(src);
    +	gdTransformAffineCopy(dst, 0, 0, src, &rect, matrix);
    +	new_m = gdImageGetInterpolationMethod(src);
    +	gdTestAssert(new_m == old_m);
    +
    +	gdImageDestroy(src);
    +	gdImageDestroy(dst);
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00586.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00586.c
    new file mode 100644
    index 00000000000..4cf2f2ee572
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00586.c
    @@ -0,0 +1,26 @@
    +/*
    + * Test that gdTransformAffineCopy() does not segfault for palette images
    + *
    + * See <>
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr src, dst;
    +	gdRect rect = {0, 0, 8, 8};
    +	double matrix[] = {1, 0, 0, 1, 0, 0};
    +
    +	src = gdImageCreate(8, 8);
    +	gdTestAssert(src != NULL);
    +	dst = gdImageCreate(8, 8);
    +	gdTestAssert(dst != NULL);
    +
    +	gdTransformAffineCopy(dst, 0, 0, src, &rect, matrix);
    +
    +	gdImageDestroy(dst);
    +	gdImageDestroy(src);
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00596.c b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00596.c
    new file mode 100644
    index 00000000000..51912e1a1ec
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gdtransformaffinecopy/github_bug_00596.c
    @@ -0,0 +1,42 @@
    +/**
    + * Test gdTransformAffineCopy() run error
    + *
    + * See <https://github.com/libgd/libgd/issues/596>
    + *
    + */
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	double matrix[] = {1, 0, 0, 1, 0, 0};
    +	gdImagePtr src, dst;
    +	gdRect rect = {0, 0, 16, 16};
    +	int white, green;
    +	int status = 0;
    +	int res;
    +	int actual_color = 0;
    +	int expected_color = 0x00ff00;
    +
    +	src = gdImageCreateTrueColor(16, 16);
    +	gdTestAssert(src != NULL);
    +	white = gdImageColorAllocate(src, 255, 255, 255);
    +	gdImageFilledRectangle(src, 0, 0, 16, 16, white);
    +
    +	dst = gdImageCreateTrueColor(50, 50);
    +	gdTestAssert(dst != NULL);
    +	green = gdImageColorAllocate(dst, 0, 255, 0);
    +	gdImageFilledRectangle(dst, 0, 0, 50, 50, green);
    +
    +	res = gdTransformAffineCopy(dst, 4, 4, src, &rect, matrix);
    +	gdTestAssert(res != GD_FALSE);
    +
    +	status = gdNumFailures();
    +	actual_color = gdImageGetPixel(dst, 20, 5);
    +	status = (actual_color == expected_color) ? status : 1;
    +
    +	gdImageDestroy(src);
    +	gdImageDestroy(dst);
    +	return status;
    +}
    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 7d40cddca6a..c4b90077a28 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/CMakeLists.txt
    @@ -2,17 +2,20 @@ LIST(APPEND TESTS_FILES
     	bug00005_2
     	bug00181
     	bug00227
    +	bug00499
     	gif_null
    +	ossfuzz5700
    +	php_bug_75571
    +	uninitialized_memory_read
    +	bug00006
    +	bug00060
    +	gif_im2im
     )
     
     IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	bug00005
    -	bug00006
    -	bug00060
     	bug00066
    -	gif_im2im
    -	uninitialized_memory_read
     )
     ENDIF(PNG_FOUND)
     
    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 0bdeab7e663..9306b7189e7 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/Makemodule.am
    @@ -2,16 +2,19 @@ libgd_test_programs += \
     	gif/bug00005_2 \
     	gif/bug00181 \
     	gif/bug00227 \
    +	gif/bug00499 \
     	gif/gif_null \
    -	gif/uninitialized_memory_read
    +	gif/ossfuzz5700 \
    +	gif/php_bug_75571 \
    +	gif/uninitialized_memory_read \
    +	gif/bug00006 \
    +	gif/bug00060 \
    +	gif/gif_im2im
     
     if HAVE_LIBPNG
     libgd_test_programs += \
     	gif/bug00005 \
    -	gif/bug00006 \
    -	gif/bug00060 \
    -	gif/bug00066 \
    -	gif/gif_im2im
    +	gif/bug00066
     endif
     
     EXTRA_DIST += \
    @@ -24,4 +27,6 @@ EXTRA_DIST += \
     	gif/bug00060.gif \
     	gif/bug00066.gif \
     	gif/bug00066_exp.png \
    +	gif/ossfuzz5700.gif \
    +	gif/php_bug_75571.gif \
     	gif/unitialized_memory_read.gif
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c
    index c80d3878e5b..95f76203b29 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00006.c
    @@ -64,5 +64,6 @@ int main()
     
     	/* Destroy it */
     	gdImageDestroy(im);
    +	free(file);
     	return error;
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c
    index 43b9e3b15c9..878537ff839 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00181.c
    @@ -92,6 +92,7 @@ int main()
             }
     	error = !im->interlace;
     	gdImageDestroy(im);
    +	free(file);
     
     	return error;
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c
    index e25bd9a92a8..aa20645114f 100644
    --- a/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00227.c
    @@ -65,5 +65,7 @@ int main()
     	if (buf[PROBE_SIZE-1] & 0x80) return 1;
     	free(buf);
     	fclose(fp);
    +
    +	free(file);
     	return 0;
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/bug00499.c b/Build/source/libs/gd/libgd-src/tests/gif/bug00499.c
    new file mode 100644
    index 00000000000..0fedb927ca4
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/bug00499.c
    @@ -0,0 +1,51 @@
    +/**
    + * Test that adding identical images to GIF animations do no double-free
    + *
    + * We are adding two frames to a GIF animation in gdDisposalNone mode, were the
    + * second frame is identical to the first, which result in that image to have
    + * zero extent.  This program must not cause any memory issues.
    + *
    + * See also <https://github.com/libgd/libgd/issues/499>.
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    int black;
    +    int size;
    +    void * res;
    +
    +    im = gdImageCreate(100, 100);
    +    black = gdImageColorAllocate(im, 0, 0, 0);
    +    gdImageRectangle(im, 0, 0, 10, 10, black);
    +
    +    res = gdImageGifAnimBeginPtr(im, &size, 1, 3);
    +    if (res != NULL) {
    +        gdFree(res);
    +    }
    +
    +    res = gdImageGifAnimAddPtr(im, &size, 0, 0, 0, 100, gdDisposalNone, NULL);
    +    if (res != NULL) {
    +        gdFree(res);
    +    }
    +
    +    res = gdImageGifAnimAddPtr(im, &size, 0, 0, 0, 100, gdDisposalNone, im);
    +    gdTestAssert(res == NULL);
    +    if (res != NULL) {
    +         gdFree(res);
    +    }
    +
    +    res = gdImageGifAnimEndPtr(&size);
    +    if (res != NULL) {
    +        gdFree(res);
    +    }
    +
    +    gdImageDestroy(im);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.c b/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.c
    new file mode 100644
    index 00000000000..8fc9f88cd6c
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.c
    @@ -0,0 +1,13 @@
    +#include <stdio.h>
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr im;
    +	FILE *fp = gdTestFileOpen("gif/ossfuzz5700.gif");
    +	im = gdImageCreateFromGif(fp);
    +	fclose(fp);
    +	gdImageDestroy(im);
    +	return 0;
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.gif b/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.gif
    new file mode 100644
    index 00000000000..315c5a88dbc
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gif/ossfuzz5700.gif differ
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.c b/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.c
    new file mode 100644
    index 00000000000..ec1f37e4e58
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.c
    @@ -0,0 +1,28 @@
    +/**
    + * Test that GIF reading does not loop infinitely
    + *
    + * We are reading a crafted GIF image which has been truncated.  This would
    + * trigger an infinite loop formerly, but know bails out early, returning
    + * NULL from gdImageCreateFromGif().
    + *
    + * See also https://bugs.php.net/bug.php?id=75571.
    + */
    +
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +
    +int main()
    +{
    +    gdImagePtr im;
    +    FILE *fp;
    +
    +    fp = gdTestFileOpen2("gif", "php_bug_75571.gif");
    +    gdTestAssert(fp != NULL);
    +    im = gdImageCreateFromGif(fp);
    +    gdTestAssert(im == NULL);
    +    fclose(fp);
    +
    +    return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.gif b/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.gif
    new file mode 100644
    index 00000000000..3c30b40f281
    Binary files /dev/null and b/Build/source/libs/gd/libgd-src/tests/gif/php_bug_75571.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 19964b0ce2c..ff188a93888 100644
    --- a/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/CMakeLists.txt
    @@ -2,14 +2,15 @@ IF(JPEG_FOUND)
     LIST(APPEND TESTS_FILES
     	jpeg_empty_file
     	jpeg_im2im
    +	jpeg_ptr_double_free
     	jpeg_null
    +	jpeg_resolution
     )
     
     IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	bug_github_18
     	jpeg_read
    -	jpeg_resolution
     	bug00338
     )
     ENDIF(PNG_FOUND)
    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 7e5d317b69f..b778470a9de 100644
    --- a/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/Makemodule.am
    @@ -2,14 +2,15 @@ if HAVE_LIBJPEG
     libgd_test_programs += \
     	jpeg/jpeg_empty_file \
     	jpeg/jpeg_im2im \
    -	jpeg/jpeg_null
    +	jpeg/jpeg_null \
    +	jpeg/jpeg_ptr_double_free \
    +	jpeg/jpeg_resolution
     
     if HAVE_LIBPNG
     libgd_test_programs += \
     	jpeg/bug_github_18 \
     	jpeg/bug00338 \
    -	jpeg/jpeg_read \
    -	jpeg/jpeg_resolution
    +	jpeg/jpeg_read
     endif
     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
    index 15224d32b34..7874df28ed2 100644
    --- a/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c
    +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/bug00338.c
    @@ -8,44 +8,39 @@
      * 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;
    -    }
    +	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;
    +	gdImagePtr im;
    +	FILE *fp;
     
    -    gdSetErrorMethod(error_handler);
    +	gdSetErrorMethod(error_handler);
     
    -    im = gdImageCreateTrueColor(10, 10);
    -    fp = gdTestTempFp();
    -    gdImagePng(im, fp);
    -    gdImageDestroy(im);
    +	im = gdImageCreateTrueColor(10, 10);
    +	fp = gdTestTempFp();
    +	gdImagePng(im, fp);
    +	gdImageDestroy(im);
     
    -    im = gdImageCreateFromJpeg(fp);
    -    gdTestAssert(im == NULL);
    +	im = gdImageCreateFromJpeg(fp);
    +	gdTestAssert(im == NULL);
     
    -    gdTestAssert(error_handler_called);
    +	gdTestAssert(error_handler_called);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_ptr_double_free.c b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_ptr_double_free.c
    new file mode 100644
    index 00000000000..df5a510bb55
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/jpeg/jpeg_ptr_double_free.c
    @@ -0,0 +1,31 @@
    +/**
    + * Test that failure to convert to JPEG returns NULL
    + *
    + * We are creating an image, set its width to zero, and pass this image to
    + * `gdImageJpegPtr()` 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 src, dst;
    +    int size;
    +
    +    src = gdImageCreateTrueColor(1, 10);
    +    gdTestAssert(src != NULL);
    +
    +    src->sx = 0; /* this hack forces gdImageJpegPtr() to fail */
    +
    +    dst = gdImageJpegPtr(src, &size, 0);
    +    gdTestAssert(dst == NULL);
    +
    +    gdImageDestroy(src);
    +
    +    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 6fd64b24447..6d618a0e56a 100644
    --- a/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/png/CMakeLists.txt
    @@ -10,8 +10,13 @@ LIST(APPEND TESTS_FILES
     	bug00193
     	bug00338
     	bug00381_1
    +)
    +
    +IF(ENABLE_GD_FORMATS)
    +LIST(APPEND TESTS_FILES
     	bug00381_2
     )
    +ENDIF(ENABLE_GD_FORMATS)
     ENDIF(PNG_FOUND)
     
     ADD_GD_TESTS()
    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 c167955b1cb..d28253effff 100644
    --- a/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/png/Makemodule.am
    @@ -7,10 +7,14 @@ libgd_test_programs += \
     	png/bug00193 \
     	png/bug00338 \
     	png/bug00381_1 \
    -	png/bug00381_2 \
     	png/png_im2im \
     	png/png_null \
     	png/png_resolution
    +
    +if ENABLE_GD_FORMATS
    +libgd_test_programs += \
    +	png/bug00381_2
    +endif
     endif
     
     EXTRA_DIST += \
    diff --git a/Build/source/libs/gd/libgd-src/tests/png/bug00338.c b/Build/source/libs/gd/libgd-src/tests/png/bug00338.c
    index 0bdd9f9a6f0..f439d8cb8ce 100644
    --- a/Build/source/libs/gd/libgd-src/tests/png/bug00338.c
    +++ b/Build/source/libs/gd/libgd-src/tests/png/bug00338.c
    @@ -8,41 +8,37 @@
      * 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;
    -    }
    +	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;
    +	gdImagePtr im;
    +	FILE *fp;
     
    -    gdSetErrorMethod(error_handler);
    +	gdSetErrorMethod(error_handler);
     
    -    im = gdImageCreateTrueColor(10, 10);
    -    fp = gdTestTempFp();
    -    gdImagePngEx(im, fp, 100);
    -    gdImageDestroy(im);
    +	im = gdImageCreateTrueColor(10, 10);
    +	fp = gdTestTempFp();
    +	gdImagePngEx(im, fp, 100);
    +	gdImageDestroy(im);
    +	fclose(fp);
     
    -    gdTestAssert(error_handler_called);
    +	gdTestAssert(error_handler_called);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/png/png_resolution.c b/Build/source/libs/gd/libgd-src/tests/png/png_resolution.c
    index aed7545ba51..bfc944d01ff 100644
    --- a/Build/source/libs/gd/libgd-src/tests/png/png_resolution.c
    +++ b/Build/source/libs/gd/libgd-src/tests/png/png_resolution.c
    @@ -24,7 +24,7 @@ int main()
     		gdImageDestroy(im);
     		return 1;
     	}
    -		
    +
     	gdImageDestroy(im);
     	return 0;
     }
    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 8e542e690c4..b1ce8a81627 100644
    --- a/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/tiff/CMakeLists.txt
    @@ -4,8 +4,13 @@ LIST(APPEND TESTS_FILES
     	tiff_invalid_read
     	tiff_null
     	tiff_dpi
    +)
    +
    +IF(PNG_FOUND)
    +LIST(APPEND TESTS_FILES
     	tiff_read_bw
     )
    +ENDIF(PNG_FOUND)
     ENDIF(TIFF_FOUND)
     
     ADD_GD_TESTS()
    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 2a88d68df3c..a1364399080 100644
    --- a/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/tiff/Makemodule.am
    @@ -3,9 +3,13 @@ libgd_test_programs += \
     	tiff/tiff_dpi \
     	tiff/tiff_im2im \
     	tiff/tiff_invalid_read \
    -	tiff/tiff_null \
    +	tiff/tiff_null
    +
    +if HAVE_LIBPNG
    +libgd_test_programs += \
     	tiff/tiff_read_bw
     endif
    +endif
     
     EXTRA_DIST += \
     	tiff/CMakeLists.txt \
    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 7b607a25fa1..73626466dc1 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
    @@ -1,4 +1,4 @@
    -/* 
    +/*
      * Test that reading and writing image resolution values to/from TIFF files
      * works correctly.  Set the image resolution, write the file, read the file
      * back and test that the image resolution comes back correct.
    @@ -23,7 +23,7 @@ int main()
     	r = gdImageColorAllocate(src, 0xFF, 0, 0);
     	gdImageFilledRectangle(src, 0, 0, 99, 99, r);
     
    -	// gd default DPI is 96; libtiff default is 72.  
    +	// gd default DPI is 96; libtiff default is 72.
     	// Use something else so we know the value has been
     	// written / read correctly.
     	res_x = 100;
    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
    index c302c63aa86..93b646dfd97 100644
    --- 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
    @@ -1,26 +1,25 @@
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr im;
    -    FILE *fp;
    -    char *path;
    +	gdImagePtr im;
    +	FILE *fp;
    +	char *path;
     
    -    fp = gdTestFileOpen2("tiff", "tiff_read_bw.tiff");
    -    gdTestAssert(fp != NULL);
    -    im = gdImageCreateFromTiff(fp);
    -    fclose(fp);
    +	fp = gdTestFileOpen2("tiff", "tiff_read_bw.tiff");
    +	gdTestAssert(fp != NULL);
    +	im = gdImageCreateFromTiff(fp);
    +	fclose(fp);
     
    -    gdTestAssert(im != NULL);
    -    gdTestAssert(!gdImageTrueColor(im));
    +	gdTestAssert(im != NULL);
    +	gdTestAssert(!gdImageTrueColor(im));
     
    -    path = gdTestFilePath2("tiff", "tiff_read_bw_exp.png");
    -    gdAssertImageEqualsToFile(path, im);
    -    gdFree(path);
    +	path = gdTestFilePath2("tiff", "tiff_read_bw_exp.png");
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    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 1f85a15f86e..4ec45bd30b1 100644
    --- a/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/wbmp/CMakeLists.txt
    @@ -1,11 +1,6 @@
     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/wbmp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am
    index fb12272cd83..37f09e1896d 100644
    --- a/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/wbmp/Makemodule.am
    @@ -1,10 +1,6 @@
     libgd_test_programs += \
    -	wbmp/wbmp_null
    -
    -if HAVE_LIBPNG
    -libgd_test_programs += \
    +	wbmp/wbmp_null \
     	wbmp/wbmp_im2im
    -endif
     
     EXTRA_DIST += \
     	wbmp/CMakeLists.txt
    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 ec27127b1d6..bfabf2626cd 100644
    --- a/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/webp/CMakeLists.txt
    @@ -2,6 +2,7 @@ IF(WEBP_FOUND)
     LIST(APPEND TESTS_FILES
     	bug00111
     	bug_double_free
    +	gdImageWebpEx
     )
     ENDIF(WEBP_FOUND)
     
    diff --git a/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am b/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am
    index f01f9e672fc..48f2a527014 100644
    --- a/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/webp/Makemodule.am
    @@ -1,7 +1,8 @@
     if HAVE_LIBWEBP
     libgd_test_programs += \
     	webp/bug00111 \
    -	webp/bug_double_free
    +	webp/bug_double_free \
    +	webp/gdImageWebpEx
     endif
     
     EXTRA_DIST += \
    diff --git a/Build/source/libs/gd/libgd-src/tests/webp/gdImageWebpEx.c b/Build/source/libs/gd/libgd-src/tests/webp/gdImageWebpEx.c
    new file mode 100644
    index 00000000000..43011de9446
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/webp/gdImageWebpEx.c
    @@ -0,0 +1,26 @@
    +/**
    + * Basic testcase for gdImageWebpEx()
    + **/
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +	gdImagePtr im;
    +	FILE *fp1;
    +	int size = 1;
    +
    +	im = gdImageCreateTrueColor(20, 20);
    +	if (!im) {
    +		return 1;
    +	}
    +
    +	fp1 = gdTestTempFp();
    +	gdImageWebpEx(im, fp1, 8);
    +	gdImageWebpPtrEx(im, &size, 9);
    +
    +	fclose(fp1);
    +
    +	gdImageDestroy(im);
    +	return 0;
    +}
    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 3e3bb696cad..2447fd54d67 100644
    --- a/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/CMakeLists.txt
    @@ -1,7 +1,11 @@
    +LIST(APPEND TESTS_FILES
    +	github_bug_501
    +	github_bug_170
    +)
    +
     IF(PNG_FOUND)
     LIST(APPEND TESTS_FILES
     	github_bug_109
    -	github_bug_170
     	x10_basic_read
     )
     ENDIF(PNG_FOUND)
    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 a9a293d1612..4d14916b133 100644
    --- a/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/Makemodule.am
    @@ -1,7 +1,10 @@
    +libgd_test_programs += \
    +	xbm/github_bug_501 \
    +	xbm/github_bug_170
    +
     if HAVE_LIBPNG
     libgd_test_programs += \
     	xbm/github_bug_109 \
    -	xbm/github_bug_170 \
     	xbm/x10_basic_read
     endif
     
    @@ -10,4 +13,5 @@ EXTRA_DIST += \
     	xbm/github_bug_109.xbm \
     	xbm/github_bug_109_exp.png \
     	xbm/x10_basic_read.xbm \
    -	xbm/x10_basic_read_exp.png
    +	xbm/x10_basic_read_exp.png \
    +	xbm/github_bug_501.xbm
    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
    index c0b50a8f0d4..70b793738e1 100644
    --- 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
    @@ -7,29 +7,27 @@
      * See also <https://github.com/libgd/libgd/issues/109>.
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr im;
    -    FILE *fp;
    -    char *path;
    +	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);
    +	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);
    +	path = gdTestFilePath2("xbm", "github_bug_109_exp.png");
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c
    index 3900da7b1b6..8134fb82fdb 100644
    --- a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_170.c
    @@ -47,4 +47,4 @@ int main()
     	gdTestAssertMsg(length == 250, "expected to write 250 bytes; %jd bytes written", (intmax_t) length);
     	return gdNumFailures();
     }
    -#endif
    \ No newline at end of file
    +#endif
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.c b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.c
    new file mode 100644
    index 00000000000..5d8bfd76b80
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.c
    @@ -0,0 +1,39 @@
    +/*
    +	Test reading an invalid XBM image.
    +
    +	The pixels of the XBM image are invalid hex which makes the uninitialezed
    +	variable be encoded into the output image i.e. information disclosure.
    +	The image is 8*2.
    +
    +	See also <https://github.com/libgd/libgd/issues/501>.
    +*/
    +
    +#include "gd.h"
    +#include "gdtest.h"
    +
    +int main()
    +{
    +
    +	gdImagePtr im;
    +	FILE *fp;
    +
    +	fp = gdTestFileOpen2("xbm", "github_bug_501.xbm");
    +	im = gdImageCreateFromXbm(fp);
    +
    +	gdTestAssert(im == NULL);
    +
    +	if (im) {
    +		gdTestErrorMsg("Info Disclosed\n");
    +		int i;
    +		for (i = 0; i < 8; i++) {
    +			printf("Pixel(%d, 0) %0x\n", i, gdImageGetPixel(im, i, 0));
    +		}
    +		for (i = 0; i < 8; i++) {
    +			printf("Pixel(%d, 1) %0x\n", i, gdImageGetPixel(im, i, 1));
    +		}
    +		gdImageDestroy(im);
    +	}
    +
    +	fclose(fp);
    +	return gdNumFailures();
    +}
    diff --git a/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.xbm b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.xbm
    new file mode 100644
    index 00000000000..41ad301e7fe
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/tests/xbm/github_bug_501.xbm
    @@ -0,0 +1,4 @@
    +#define width 8
    +#define height 2
    +static char bits[] ={
    +xzzxzz
    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
    index 99b9019c5f7..f7c505e55b7 100644
    --- 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
    @@ -6,27 +6,25 @@
      * which is 2 bytes instead of 1, and the endianess.
      */
     
    -
     #include "gd.h"
     #include "gdtest.h"
     
    -
     int main()
     {
    -    gdImagePtr im;
    -    FILE *fp;
    -    char *path;
    +	gdImagePtr im;
    +	FILE *fp;
    +	char *path;
     
    -    fp = gdTestFileOpen2("xbm", "x10_basic_read.xbm");
    -    im = gdImageCreateFromXbm(fp);
    -    fclose(fp);
    -    gdTestAssert(im != NULL);
    +	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);
    +	path = gdTestFilePath2("xbm", "x10_basic_read_exp.png");
    +	gdAssertImageEqualsToFile(path, im);
    +	gdFree(path);
     
    -    gdImageDestroy(im);
    +	gdImageDestroy(im);
     
    -    return gdNumFailures();
    +	return gdNumFailures();
     }
    diff --git a/Build/source/libs/gd/libgd-src/windows/Makefile.vc b/Build/source/libs/gd/libgd-src/windows/Makefile.vc
    index c87583c5089..67a8014196b 100644
    --- a/Build/source/libs/gd/libgd-src/windows/Makefile.vc
    +++ b/Build/source/libs/gd/libgd-src/windows/Makefile.vc
    @@ -130,16 +130,16 @@ CFLAGS= $(CFLAGS) \
            /D_WIN32=1\
            /DMSWIN32=1\
            /DBGDWIN32=1\
    +       /DENABLE_GD_FORMATS=1\
            /DHAVE_FT2BUILD_H=1\
            /DHAVE_GD_H=1\
            /DHAVE_ICONV_H=1\
    -       /DHAVE_GD_BUNDLED=1\
            /DHAVE_LIBFREETYPE=1\
            /DHAVE_LIBJPEG=1\
            /DHAVE_LIBPNG=1\
    -	   /DHAVE_LIBWEBP=1\
    +       /DHAVE_LIBWEBP=1\
            /DHAVE_LIBZ=1\
    -	   /DHAVE_LIBXPM=1\
    +       /DHAVE_LIBXPM=1\
            /DHAVE_LIBTIFF=1\
            $(INCLUDES)
     
    diff --git a/Build/source/libs/gd/libgd-src/windows/Makefiletest.vc b/Build/source/libs/gd/libgd-src/windows/Makefiletest.vc
    new file mode 100644
    index 00000000000..827a4e79e04
    --- /dev/null
    +++ b/Build/source/libs/gd/libgd-src/windows/Makefiletest.vc
    @@ -0,0 +1,117 @@
    +TESTS=bmp\bmp_im2im \
    +bmp\bmp_null \
    +freetype\bug00132 \
    +gd\gd_im2im \
    +gd\gd_null \
    +gd\gd_num_colors \
    +gd\gd_versiontest \
    +gd2\gd2_empty_file \
    +gd2\gd2_im2im \
    +gd2\gd2_null \
    +gd2\gd2_read \
    +gd2\gd2_read_corrupt \
    +gd2\php_bug_72339 \
    +gdimagearc\bug00079 \
    +gdimagecolorclosest\gdimagecolorclosest \
    +gdimagecolordeallocate\gdimagecolordeallocate \
    +gdimagecolorexact\gdimagecolorexact \
    +gdimagecolorreplace\gdimagecolorreplace \
    +gdimagecolorresolve\gdimagecolorresolve \
    +gdimagecolortransparent\gdimagecolortransparent \
    +gdimagecopy\bug00007 \
    +gdimagecopy\bug00081 \
    +gdimagecopyrotated\bug00020 \
    +gdimagecrop\php_bug_72494 \
    +gdimagefile\gdnametest \
    +gdimagefill\bug00002_1 \
    +gdimagefill\bug00002_2 \
    +gdimagefill\bug00002_3 \
    +gdimagefill\bug00002_4 \
    +gdimagefill\bug00104_1 \
    +gdimagefilledellipse\bug00010 \
    +gdimagefilledellipse\bug00191 \
    +gdimagefilledellipse\github_bug_00238 \
    +gdimagefilledpolygon\bug00100 \
    +gdimagefilledpolygon\gdimagefilledpolygon0 \
    +gdimagefilledpolygon\gdimagefilledpolygon1 \
    +gdimagefilledpolygon\gdimagefilledpolygon2 \
    +gdimagefilledpolygon\gdimagefilledpolygon3 \
    +gdimagefilledpolygon\php_bug_64641 \
    +gdimagefilledrectangle\bug00004 \
    +gdimagefilledrectangle\bug00078 \
    +gdimagefilledrectangle\bug00106_gdimagefilledrectangle \
    +gdimagefilltoborder\bug00037 \
    +gdimagefilltoborder\github_bug_215 \
    +gdimagefilter\gdCopyBlurred \
    +gdimageline\bug00072 \
    +gdimageline\bug00077 \
    +gdimageline\bug00111 \
    +gdimageline\gdImageAALine_thickness \
    +gdimageline\gdimageline_aa \
    +gdimageline\gdimageline_aa_outofrange \
    +gdimageline\gdimageline_bug5 \
    +gdimageline\github_bug_167 \
    +gdimageopenpolygon\gdimageopenpolygon0 \
    +gdimageopenpolygon\gdimageopenpolygon1 \
    +gdimageopenpolygon\gdimageopenpolygon2 \
    +gdimageopenpolygon\gdimageopenpolygon3 \
    +gdimagepixelate\gdimagepixelate \
    +gdimagepolygon\gdimagepolygon0 \
    +gdimagepolygon\gdimagepolygon1 \
    +gdimagepolygon\gdimagepolygon2 \
    +gdimagepolygon\gdimagepolygon3 \
    +gdimagerectangle\bug00003 \
    +gdimagerectangle\bug00106_gdimagerectangle \
    +gdimagerectangle\github_bug_00172 \
    +gdimagerotate\bug00067 \
    +gdimagerotate\php_bug_64898 \
    +gdimagescale\github_bug_00218 \
    +gdimagescatterex\bug00208_1 \
    +gdimagescatterex\bug00208_2 \
    +gdimagesetpixel\bug00186 \
    +gdimagesetpixel\gdeffectmultiply \
    +gdimagesetpixel\gdeffectoverlay \
    +gdimagestringft\gdimagestringft_bbox \
    +gdimagestringftex\gdimagestringftex_returnfontpathname \
    +gdinterpolatedscale\gdModesAndPalettes \
    +gdinterpolatedscale\gdTrivialResize \
    +gdnewfilectx\gdnewfilectx_null \
    +gdtiled\bug00032 \
    +gdtransformaffineboundingbox\github_bug_00221 \
    +gif\bug00005 \
    +gif\bug00005_2 \
    +gif\bug00006 \
    +gif\bug00060 \
    +gif\bug00066 \
    +gif\bug00181 \
    +gif\bug00227 \
    +gif\gif_im2im \
    +gif\gif_null \
    +jpeg\bug_github_18 \
    +jpeg\jpeg_empty_file \
    +jpeg\jpeg_im2im \
    +jpeg\jpeg_null \
    +jpeg\jpeg_read \
    +jpeg\jpeg_resolution \
    +png\bug00011 \
    +png\bug00033 \
    +png\bug00086 \
    +png\bug00088 \
    +png\bug00193 \
    +png\png_im2im \
    +png\png_null \
    +png\png_resolution \
    +tga\bug00084 \
    +tga\bug00247 \
    +tga\bug00247a \
    +tga\tga_null \
    +tiff\tiff_dpi \
    +tiff\tiff_im2im \
    +tiff\tiff_null \
    +wbmp\wbmp_im2im \
    +wbmp\wbmp_null \
    +webp\bug00111 \
    +xbm\github_bug_170 \
    +xpm\bug00166 \
    +xpm\bug00185 \
    +xpm\color_name
    diff --git a/Build/source/libs/gd/libgd-src/windows/gentest.bat b/Build/source/libs/gd/libgd-src/windows/gentest.bat
    index f57d08b6708..756e0f91bb2 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"=="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
    +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
    diff --git a/Build/source/libs/gd/libgd-src/windows/libgd.rc b/Build/source/libs/gd/libgd-src/windows/libgd.rc
    index dfe6ff0aa78..803b3462123 100644
    --- a/Build/source/libs/gd/libgd-src/windows/libgd.rc
    +++ b/Build/source/libs/gd/libgd-src/windows/libgd.rc
    @@ -1,5 +1,4 @@
     /* This is a template RC file.
    - * $Id$
      * Do not edit with MSVC */
     #ifdef APSTUDIO_INVOKED
     # error dont edit with MSVC
    @@ -38,7 +37,7 @@ BEGIN
                 VALUE "FileDescription", "LIBGD" "\0"
                 VALUE "FileVersion", GD_VERSION_STRING "\0"
                 VALUE "InternalName", "bgd.dll" "\0"
    -            VALUE "LegalCopyright", "Copyright  1997-2008 Thomas Boutell, Pierre A. Joye and contributors, see COPYING\0" 
    +            VALUE "LegalCopyright", "Copyright  1997-2008 Thomas Boutell, Pierre A. Joye and contributors, see COPYING\0"
                 VALUE "LegalTrademarks", "Thomas Boutell, Pierre A. Joye and contributors\0"
                 VALUE "OriginalFilename", "bgd.dll" "\0"
                 VALUE "PrivateBuild", "\0"
    @@ -56,4 +55,3 @@ END
     #ifdef MC_INCLUDE
     #include MC_INCLUDE
     #endif
    -
    diff --git a/Build/source/libs/gd/libgd-src/windows/msys/Makefile b/Build/source/libs/gd/libgd-src/windows/msys/Makefile
    index 3b1ced42b64..d4acaafc324 100644
    --- a/Build/source/libs/gd/libgd-src/windows/msys/Makefile
    +++ b/Build/source/libs/gd/libgd-src/windows/msys/Makefile
    @@ -1,4 +1,3 @@
    -
     # Simple makefile for building and testing libgd under MSYS/MinGW on
     # Windows
     
    @@ -7,9 +6,10 @@
     LIBVER=3.0.1
     
     # Misc. config flags.
    -CDEFS=-DHAVE_ERRNO_H -DHAVE_ICONV -DHAVE_ICONV_H		\
    --DHAVE_ICONV_T_DEF -DHAVE_INTTYPES_H -DHAVE_LIMITS_H -DHAVE_STDDEF_H	\
    --DHAVE_STDINT_H -DHAVE_STDLIB_H -DHAVE_VISIBILITY -DICONV_CONST
    +CDEFS=-DHAVE_ICONV -DHAVE_ICONV_H		\
    +-DHAVE_ICONV_T_DEF -DHAVE_INTTYPES_H	\
    +-DHAVE_STDINT_H -DHAVE_VISIBILITY -DICONV_CONST \
    +-DENABLE_GD_FORMATS=1
     
     # GnuWin32 libs should all be installed in one place.
     GNUDIR=/c/tools/GnuWin32
    @@ -131,13 +131,3 @@ $(TARGET): $(OBJ)
     		$(OBJ) $(LIBS)
     
     include deps.mk
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/windows/msys/README.MSYS.md b/Build/source/libs/gd/libgd-src/windows/msys/README.MSYS.md
    index 601802dd8e0..e45adc64a3e 100644
    --- a/Build/source/libs/gd/libgd-src/windows/msys/README.MSYS.md
    +++ b/Build/source/libs/gd/libgd-src/windows/msys/README.MSYS.md
    @@ -1,4 +1,3 @@
    -
     # MSYS Fallback Makefile
     
     This is a simple, straightforward Makefile for building LibGD with
    @@ -49,6 +48,14 @@ use one of the other build systems (or add them yourself.)
         DLLs; it sweeps up all of the DLLs in the directories pointed to
         by *_DLLDIR Makefile variables.
     
    +    Before type "make dist", please make sure you have installed
    +    zip command in msys. Or you can try:
    +    * If you use msys, you can install msys-zip(lib, docs, lic)
    +    in MinGW Installation Manager/all package.
    +    * If you use msys2, you can install msys/zip by pacman and running:
    +
    +       pacman -S msys/zip
    +
         Alternately, you can copy the lib (in src/) to wherever it needs
         to go.
     
    @@ -59,7 +66,3 @@ use one of the other build systems (or add them yourself.)
       worth.
     * LibFontconfig: I couldn't find Windows binaries for it anywhere
       reputable.
    -
    - 
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/windows/msys/run_tests.sh b/Build/source/libs/gd/libgd-src/windows/msys/run_tests.sh
    index 22de13c4036..f7c4b44cf51 100755
    --- a/Build/source/libs/gd/libgd-src/windows/msys/run_tests.sh
    +++ b/Build/source/libs/gd/libgd-src/windows/msys/run_tests.sh
    @@ -5,11 +5,11 @@ set -e
     # Parameters
     DLLPATH_EXTRA=$1        # Path to supporting DLLs
     CFLAGS_EXTRA=$2         # Extra C flags
    -    
    +
     
     LOG=run_tests.log
     
    -CFLAGS="-g -Igdtest/ -I. -I../src/ -D_WIN32 $CFLAGS_EXTRA"
    +CFLAGS="-g -Igdtest/ -I. -I../src/ -D_WIN32 -DHAVE_SYS_STAT_H $CFLAGS_EXTRA"
     LDFLAGS='-L../src -llibgd'
     DLLPATH=../src:$DLLPATH_EXTRA
     
    @@ -38,7 +38,7 @@ echo "Running tests:"
     count=0
     failures=0
     compile_failures=0
    -for test in `find . -name \*.c | grep -v '^./gdtest'`; do
    +for test in `find . -name \*.c | grep -vE '^./(fontconfig|gdtest|gdhelpers|xpm)'`; do
         count=`expr $count + 1`
     
         exe=${test%.c}.exe
    @@ -49,7 +49,7 @@ for test in `find . -name \*.c | grep -v '^./gdtest'`; do
             compile_failures=`expr $compile_failures + 1`
             continue
         fi
    -    
    +
         echo "Running $exe:" >> $LOG
         if $exe 2>&1 >> $LOG; then
             echo "PASS: $test"
    @@ -62,6 +62,3 @@ done
     
     echo "$failures failures and $compile_failures compile failures out of $count tests."
     echo "Error messages in $LOG"
    -
    -
    -
    diff --git a/Build/source/libs/gd/libgd-src/windows/readme.md b/Build/source/libs/gd/libgd-src/windows/readme.md
    index cd95b790331..dce52026e62 100644
    --- a/Build/source/libs/gd/libgd-src/windows/readme.md
    +++ b/Build/source/libs/gd/libgd-src/windows/readme.md
    @@ -1,53 +1,53 @@
    -# 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
    -```
    +# 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 bd739469d2a..097d3b9094d 100644
    --- a/Build/source/libs/gd/libgd-src/windows/run_tests.bat
    +++ b/Build/source/libs/gd/libgd-src/windows/run_tests.bat
    @@ -1,43 +1,43 @@
    -@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
    +@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
    diff --git a/Build/source/libs/gd/version.ac b/Build/source/libs/gd/version.ac
    index ce56a629a49..f55562bce77 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.5])
    +m4_define([gd_version], [2.3.0])
    -- 
    cgit v1.2.3